Route 53 API スロットリングエラーを回避するにはどうすればよいですか?

最終更新日: 2021 年 4 月 23 日

Amazon Route 53 で API スロットリングエラーを回避するにはどうすればよいですか?

簡単な説明

Route 53 に一括 API 呼び出しを実行すると、HTTP 400 (不正なリクエスト) のエラーが表示されることがあります。

Throttling の値を持つ Code 要素と Rate exceeded の値を持つ Message 要素を含むレスポンスヘッダーは、レートのスロットリングを示します。レートスロットリングは、API リクエストの数が、(アカウントごとに) 1 秒あたり 5 つのリクエストというハード制限よりも多い場合に発生します。

Route 53 が同じホストゾーンの次のリクエストの前にリクエストを処理できない場合、後続のリクエストは別の HTTP 400 エラーで拒否されます。レスポンスヘッダーには、次の両方が含まれます。

  • PriorRequestNotComplete の値を持つ Code 要素
  • the request was rejected because Route 53 was still processing a prior request (Route 53 は引き続き以前のリクエストを処理しているため、リクエストは拒否されました) の値を持つ Message 要素。

同じアカウント内の AWS Identity and Access Management (IAM) ユーザーからの API 呼び出しは、アカウントのグローバルレートスロットリングに算入されます。これらの IAM ユーザーからの API 呼び出しは、AWS マネジメントコンソールからの API 呼び出しにも影響します。

解決方法

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

レートスロットリングを回避するには、次の方法を使用します。

リクエストのバッチ処理

AWS CLI または任意の SDK を使用して API 呼び出しを減らすために、同じタイプの個々のオペレーションを 1 つの変更バッチオペレーションにグループ化します。

例えば、1 回のバッチオペレーションで複数のレコードを CREATE、DELETE、または UPSERT (更新と挿入) することをリクエストします。AWS CLI で change-resource-record-sets コマンドを使用して、バルクリソースレコードオペレーションを実行します。

次の点に注意してください。

  • UPSERT リクエスト (更新と挿入) は 2 回カウントされます。
  • change-resource-record-sets API 呼び出しには、要素と文字のクォータがあります。

エラーの再試行とエクスポネンシャルバックオフを使用する

スロットリングを回避するには、Route 53 API 呼び出しにエラーの再試行とエクスポネンシャルバックオフを追加します。例えば、2^i 秒で呼び出しを再試行する単純なエクスポネンシャルバックオフアルゴリズムを使用します。ここで、i は再試行回数です。

開始時間をランダム化する

Route 53 API を呼び出す開始時間をランダム化します。ロジックを同時に処理する複数のアプリケーションがないことを確認してください。同時リクエストは、スロットリングを引き起こす可能性があります。

通話間の「スリープ時間」を導入する

Route 53 API へのコード関数呼び出しが連続している場合は、2 つの呼び出しの間に「スリープ時間」を追加して、スロットリングのリスクを最小限に抑えます。


クォータ (Route 53)

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?