Amazon Route 53 ホストゾーンでリソースレコードの一括オペレーションを実行すると、アカウントでレートスロットリング (API スロットリング) が発生します。これを修正するにはどうすればよいですか?

Route 53 でホストゾーンのリソースレコードの一括オペレーションを実行しているときに、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 の値を持つ Message 要素が含まれます。

注: 同じアカウント内の IAM ユーザーによる API コールは、そのアカウントのグローバルレートスロットリングにカウントされ、AWS マネジメントコンソールから実行される API コールに影響します。

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

リクエストのバッチ処理

API コールを減らすために、同じタイプの個々のオペレーションを 1 つの変更バッチオペレーションにグループ化します。

注: UPSERT リクエスト (更新と挿入) は 2 回カウントされます。

例えば、1 つのバッチ操作で多数のレコードの CREATE、DELETE、または LIST をリクエストできます。

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

Route 53 API コールにエラーの再試行とエクスポネンシャルバックオフを追加します。

例えば、2^i 秒で呼び出しを再試行する単純なエクスポネンシャルバックオフアルゴリズムを使用します。ここで、i は再試行回数です。

開始時刻のランダム化

Route 53 API を呼び出す開始時間をランダム化します。同時リクエストによってスロットリングが発生する可能性があるため、複数のアプリケーションが同時にロジックを実行しないようにしてください。

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

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

注: これらのトラブルシューティング方法を実行した後でもアカウントでレートスロットリングが発生する場合は、Route 53 でサポートケースを開き、1 秒あたりのしきい値を超える API コールのソース IP アドレスを特定するためのサポートを依頼してください。その後、不要なソースをシャットダウンするか、これらのトラブルシューティング方法を実行して問題を解決できます。


このページはお役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS Support Center をご覧ください。

公開日: 2018 年 8 月 9 日