如何避免在 CloudFormation 中的「超過費率」錯誤?

1 分的閱讀內容
0

我想避免在使用 AWS CloudFormation 時出現「超過費率」錯誤。

簡短說明

對 AWS 服務的 API 呼叫超過允許的 API 請求上限會產生超過費率錯誤。發生這種情況時,API 呼叫會被限流。

解決方法

下游 AWS 服務超過允許的最大費率

若要避免 AWS 服務在 CloudFormation 堆疊作業期間超出允許的最大速率,請使用下列選項。

使用 DependsOn 屬性

除非資源之間已定義相依性,否則 CloudFormation 會同時建立和更新資源。DependsOn 屬性會定義資源之間的相依性,以控制並行更新。

若要指定建立或更新每個相依性資源的時間,請使用 DependsOn 屬性。例如,如果資源 B 相依於資源 A,則您可以指定必須在資源 B 之前建立或更新資源 A。此規格會限制同時發生的 API 呼叫數量,並減少節流的發生情況。您也可以在巢狀堆疊中使用 DependsOn 屬性。

請求增加配額

如果 DependsOn 屬性無法解決超過費率錯誤,則您可以請求增加配額。在您請求增加下游 API 配額之前,請先識別 API 呼叫,以確定超過呼叫率的 API 呼叫。

在增加配額的請求中,請包括您的 AWS 區域、API 限流的時間範圍以及增加原因。

AWS CloudFormation API 超過允許的最大費率

若要避免 CloudFormation API 呼叫超過允許的 API 要求上限,請使用下列選項。

實作指數退避

當您使用 AWS API 端點時,請實作退避來減少 API 呼叫數量。

下列 DescribeStacks API 呼叫的範例虛擬程式碼設定為在特定時間範圍之後重試 API 呼叫:

{
Make 'DescribeStacks' API call

if throttled: wait 2 sec; Make 'DescribeStacks' API call
if throttled: wait 4 sec; Make 'DescribeStacks'API call
if throttled: wait 8 sec; Make 'DescribeStacks' API call
if throttled: wait 16 sec; Make 'DescribeStacks' API call
if throttled: wait 32 sec; Make 'DescribeStacks' API call
}

一次建立或更新一個堆疊

同時建立或更新多個 CloudFormation 堆疊可能會導致 API 呼叫過多。若要避免 API 呼叫超過允許的 API 要求上限,請一次建立或更新一個堆疊。

請求增加配額

如果您無法建立或更新堆疊,則可以請求增加 CloudFormation API 的配額。在您請求增加配額之前,請先識別 API 呼叫,以確定超過呼叫率的 API 呼叫。

在增加配額的請求中,請包括您的 AWS 區域、API 限流的時間範圍以及增加原因。

AWS 官方
AWS 官方已更新 1 年前