CloudFormation で「Rate exceeded」(レート超過) エラーの発生を防ぐにはどうすればよいですか?

所要時間1分
0

AWS CloudFormation を使用すると、「Rate exceeded」(レート超過) エラーが表示されることがあります。このエラーの発生を防ぐにはどうすればよいですか?

簡単な説明

Rate exceeded」(レート超過) エラーは、AWS のサービスに対する API コールが許可された API リクエストの最大数を超過し、API コールがスロットリングされた場合に発生します。通常、これらのエラーは一時的なもので、API コールが少なくなると自動的に解決されます。

Rate exceeded」(レート超過) エラーの発生を防ぐために、次を実行できます。

  • エクスポネンシャルバックオフを実装する
  • スタックを 1 つずつ作成または更新する
  • DependsOn 属性を使用する
  • クォータの引き上げをリクエストする

解決方法

エクスポネンシャルバックオフを実装する

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 
}

スタックを 1 つずつ作成または更新する

複数の CloudFormation スタックを同時に作成または更新すると、多くの API コールが同時に実行される可能性があります。API コールが許容される API リクエストの最大数を超過しないようにするには、一度に 1 つのスタックを作成または更新します。

DependsOn 属性を使用する

リソース間に依存関係が定義されていない限り、CloudFormation はリソースの作成と更新を同時に行います。DependsOn 属性は、同時更新を制御するためにリソース間の依存関係を定義します。

DependsOn 属性を使用すると、依存する各リソースを作成または更新するタイミングを指定できます。例えば、リソース B がリソース A に依存している場合、リソース A をリソース B より前に作成または更新するように指定できます。これにより、同時に実行される API コールの数が制限され、スロットリングの発生が減少します。ネストされたスタックで DependsOn 属性を使用することもできます。

クォータの引き上げをリクエストする

上記の解決策がお客様の状況に適したものでない場合は、クォータの引き上げをリクエストできます。クォータの引き上げをリクエストする前に、API コールを特定して、コールレートを超えているコールを特定します。

クォータの引き上げリクエストには、AWS リージョン、API スロットリングの期間、および引き上げの理由を含めてください。


AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ