CloudWatch API で PutMetricData を呼び出すときに、スロットルを回避する方法を教えてください。

最終更新日: 2020 年 11 月 6 日

Amazon CloudWatch で PutMetricData API 呼び出しのエラー「400 ThrottlingException」を受け取っています。どうすれば解決できますか?

簡単な説明

CloudWatch で PutMetricData API 呼び出しのエラー「400 ThrottlingException」を受け取るとき、以下の詳細な応答も受け取ります。

<ErrorResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/">
  <Error>
    <Type>Sender</Type>
    <Code>Throttling</Code>
    <Message>Rate exceeded</Message>
  </Error>
  <RequestId>2f85f68d-980b-11e7-a296-21716fd2d2e3</RequestId>
</ErrorResponse>

CloudWatch リクエストは、各リージョンのアマゾン ウェブ サービス (AWS) アカウントごとに調整され、サービスのパフォーマンスを高めます。現在の PutMetricData API リクエストクォータについては、「CloudWatch サービスクォータ」を参照してください。

注意: AWS リージョン内の PutMetricData API へのすべての呼び出しは、最大許容リクエストレートにカウントされます。この数には、CloudWatch エージェント、AWS コマンドラインインターフェイス (AWS CLI)、または AWS マネジメントコンソールからの呼び出しなど、カスタムまたはサードパーティのアプリケーションからの呼び出しが含まれます。

解決方法

次の方法で、呼び出しレートを下げ、API スロットルを回避することをお勧めします。

  • 短時間に複数回 API の呼び出しを行うのではなく、全体を通して API 呼び出し回数を均等にします。1 分の分解能でデータを利用する必要がある場合、そのメトリクスを発行するのにまるまる 1 分あります。変化に富んだタイミングでデータポイントを送信するには、ジッター (ランダム化した遅延) を使用します。
  • できるだけ多くのメトリクスを、1 つの API 呼び出しにまとめます。たとえば、1 つの PutMetricData 呼び出しには、20 個のメトリクスと 150 個のデータポイントを含めることができます。事前に収集したデータセット (StatisticSet など) を使用して、収集したデータポイントを公開することもできるため、1 秒あたりの PutMetricData の呼び出し数を減らすことができます。
  • エクスポネンシャルバックオフとジッターで呼び出しを再試行します。

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


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