「Rate exceeded」(レートを超過しました) エラーを引き起こしている AWS API コールを確認するにはどうすればよいですか?

最終更新日: 2022 年 2 月 9 日

AWS のサービスを作成もしくは更新したり、AWS のサービスにアクセスしたりしようとすると、「Rate exceeded」(レートを超過しました) というエラーメッセージが表示されます。エラーの原因となっている AWS API コールを特定するにはどうすればよいですか?

簡単な説明

AWS アカウントで「Rate exceeded」(レートを超過しました) エラーの原因となっている API コールを特定するには、次の操作を実行します。

1.    AWS CloudTrail ログ用の Amazon Athena テーブルを作成します。

2.    Amazon Athena クエリを実行して、「Rate exceeded」(レートを超過しました) エラーに関連する API コールを見つけます。

この問題をトラブルシューティングするには、この記事の「関連する API コールと AWS のサービスに基づいて「Rate exceeded」(レートを超過しました) エラーをトラブルシューティングするには」のセクションを参照してください。

注: AWS アカウントで API アクティビティをログに記録するには、まず CloudTrail で証跡を作成する必要があります。証跡を作成する前にアカウントで発生したデータイベントは、証跡のログには記録されません。

解決方法

CloudTrail ログ用の Amazon Athena テーブルを作成する

Athena クエリを作成して実行し、関連する API コールを見つけます。

1.    Athena コンソールを開きます。

2.    [New query] (新しいクエリ) タブを選択します。

3.    次のサンプルクエリをコピーしてクエリテキストボックスに貼り付け、[Run query] (クエリを実行) を選択します。

重要: cloudtrail-table-name を CloudTrail テーブルの名前に置き換えます。

select eventname, errorcode,eventsource,awsregion, useragent,COUNT(*) count 
FROM cloudtrail-table-name   
where errorcode = 'ThrottlingException'
AND eventtime between '2018-10-14T03:00:08Z' and '2018-10-23T07:15:08Z'
group by errorcode,awsregion, eventsource, useragent, eventname
order by count desc;

4.    クエリ出力で、eventnameeventsource (errorcode である「ThrottlingException」に関連付けられている) に一覧表示されている API コールを確認します。

関連する API コールと AWS のサービスに基づいて「Rate exceeded」(レートを超過しました) エラーをトラブルシューティングするには

注:Rate exceeded」(レートを超過しました) エラーは、AWS のサービスおよび使用している API コールに応じて異なるスロットリング条件で発生することがあります。

発生している「Rate exceeded」(レートを超過しました) エラーに関連する API コールとサービスについては、次のトラブルシューティングドキュメントを参照してください。

GetResourceConfigHistory または ListDiscoveredResources API コールの場合

AWS Config コンソールのエラーメッセージをトラブルシューティングする方法を教えてください」を参照してください

PutMetricData API コールの場合

CloudWatch API で PutMetricData を呼び出すときに、スロットリングを回避する方法を教えてください」を参照してください

AWS Auto Scaling に関連する API コールの場合

Auto Scaling API コールがスロットリングされています。これを防ぐにはどうすればよいですか?」を参照してください

AWS Lambda 関数に関連する API コールの場合

「Rate exceeded」(レートを超過しました) というエラーと 429「TooManyRequestsException」というエラーの Lambda 関数のスロットリングをトラブルシューティングするにはどうすればよいですか?」を参照してください

AWS Elastic Beanstalk に関連する API コールの場合

Elastic Beanstalk で API スロットリングまたは「Rate exceeded」(レートを超過しました) エラーを解決する方法を教えてください」を参照してください

注: また、待機ステートメントを追加することで、スロットリングが発生した後で AWS API コールを再試行することを許可することもできます。詳細については、「AWS でのエラー再試行とエクスポネンシャルバックオフ」を参照してください。