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 리전을 기반으로 각 AWS 계정에 대한 요청을 조절합니다. 현재 PutMetricData API 요청 할당량은 CloudWatch 서비스 할당량을 참조하세요.
참고: 리전에서 모든 PutMetricData API 호출은 허용되는 최대 요청률을 기준으로 한 제한에 반영됩니다. 이 번호에는 사용자 지정 또는 타사 애플리케이션에서 걸려온 전화가 포함됩니다. 이러한 애플리케이션의 예로는 CloudWatch 에이전트, AWS Command Line Interface(AWS CLI) 및 AWS Management Console이 있습니다.
해결 방법
모범 사례로서, 다음과 같은 방법으로 호출률을 낮추고 API 스로틀링을 방지하세요.
- 단시간에 여러 번 API를 호출하지 않고, 일정 기간에 걸쳐 API 호출을 균등하게 분산합니다. 1분 간격으로 데이터를 사용해야 할 경우, 해당 지표를 1분에 걸쳐 내보낼 수 있습니다. 지터(임의 지연)를 사용하여 데이터 포인트를 서로 다른 시간에 전송합니다.
- 최대한 많은 지표를 단일 API 호출에 결합합니다. 예를 들어, 단일 PutMetricData 호출에 1,000개의 지표와 150개의 데이터 포인트를 포함할 수 있습니다. 또한 StatisticSet와 같은 사전 집계된 데이터 세트를 사용하여 집계된 데이터 포인트를 게시합니다. 이렇게 하면 초당 PutMetricData 호출 수가 줄어듭니다.
- 지수 백오프와 지터를 사용하여 호출을 다시 시도하세요.
관련 정보
CloudWatch API Reference