ThrottlingExceptionのエラー「An error occurred (ThrottlingException) when calling the DescribeAutomationExecutions operation (reached max retries: 2): Rate exceeded」を回避するには
困っていた内容
AWS Systems Manager RunCommand の実行結果で以下のような出力がされていることがあります。
An error occurred (ThrottlingException) when calling the DescribeAutomationExecutions operation (reached max retries: 2): Rate exceeded
RunCommand の実行は成功しているので問題はないのですが、当該エラーの発生原因と回避方法を教えてください。
どう対応すればいいの?
発生原因
Parameter Store の Throughput の制限に達していることで、当該エラーが発生したものと考えられます。
下記 公式ドキュメント に記載のとおり、パラメータストアでは、最大スループット(1秒あたりのトランザクション数)に制限があります。
パラメータストア 最大スループット (1 秒あたりのトランザクション数) デフォルトのスループット: 40 (次の API アクションで共有:GetParameter 、GetParameters、GetParametersByPath) 高スループット: 100 (GetParametersByPath) 高スループット: 3000 (次の API アクションで共有: GetParameter および GetParameters)
この制限に抵触した場合に「ThrottlingException」のエラーが発生します。
回避方法
AWS 公式のトラブルシューティング に記載があるとおり、以下の 2 つの方法で回避可能です。
- AWS API の呼び出し間隔を空ける
API を短時間に複数回実行していることが原因の場合は、API の呼び出し間隔を空けることにより事象が改善されるかと思います。 なお、エラー発生時の再実行までの時間間隔については、エクスポネンシャルバックオフが有効なので、Lambda 関数内に実装してください。
- Parameter Store のスループットを上げる
公式ドキュメント の記載がありますように、Parameter Store の最大スループットを上げることが可能です。 呼び出し回数にもよりますが、当該の設定にて事象が改善する可能性もございます。
Parameter Store のスループットを増やすと、AWS Systems Manager の一機能である Parameter Store が処理できる 1 秒あたりのトランザクション (TPS) の最大数が増加します。 スループットが引き上げられると、複数のパラメータに同時アクセスが必要なアプリケーションとワークロードをサポートするため、高いボリュームで Parameter Store を運用できます。[Settings] (設定) タブでは、最大スループットまでクォータを引き上げることができます。
上記の回避方法を行っていただくことで、事象が改善するかどうか確認してください。