내용으로 건너뛰기

Amazon SNS의 "ThrottlingException Rate exceeded" 오류를 해결하려면 어떻게 해야 하나요?

2분 분량
0

Amazon Simple Notification Service(SNS)에서 발생하는 "ThrottlingException Rate exceeded" 오류를 해결하고 싶습니다.

간략한 설명

Amazon SNS API 요청이 API 스로틀링 할당량을 초과하면 Amazon SNS가 다음과 유사한 "ThrottlingException Rate exceeded" 오류를 반환합니다.

"An error occurred (ThrottlingException) when calling the API operation: Rate exceeded"

참고: Amazon SNS는 서비스 성능을 개선하기 위해 API 호출을 스로틀링합니다. Amazon SNS API 스로틀링 할당량에 대한 자세한 내용을 보려면 Amazon Simple Notification Service 엔드포인트 및 할당량을 참조하십시오.

해결 방법

스로틀링된 API 식별

API 호출에 할당된 속도 제한 한도를 초과하면 오류 응답이 반환됩니다. 오류 메시지 또는 오류 스택을 확인하여 스로틀링된 API 작업을 확인하십시오.

AWS CloudTrail 로그를 사용하여 API 호출 이벤트를 확인하십시오. 지원 이벤트는 이벤트 기록의 일부로서 기타 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. 자세한 내용은 AWS CloudTrail을 사용한 AWS SNS API 호출 로깅을 참조하십시오.

Amazon SNS에 대한 Amazon CloudWatch 지표를 확인할 수도 있습니다. Amazon SNS 사용량 지표를 사용하여 속도 제한에 도달한 SNS API 호출을 식별할 수 있습니다.

Amazon SNS API 스로틀링 할당량 확인

Amazon SNS API 스로틀링 할당량은 AWS 리전에 따라 다릅니다. 초당 메시지 할당량은 Amazon SNS 리전에 게시된 메시지 수를 기반으로 PublishPublishBatch API 요청을 합산하여 산정됩니다. 해당 리전의 초당 메시지 할당량을 초과하면 스로틀링 오류가 발생할 수 있습니다. 자세한 내용은 Amazon SNS API 스로틀링을 참조하십시오.

참고: CloudTrail 로그가 활성화되면 SNS PublishPublishBatch API 요청이 CloudTrail에 로깅됩니다. 하지만 CloudTrail은 SNS 리소스 유형 AWS::SNS::PhoneNumber를 로깅하지 않습니다.

지수 백오프 및 재시도 사용

스로틀링 오류를 방지하려면 API 호출 시 지수 백오프 및 재시도를 사용하여 간격에 시차를 두는 것이 가장 좋습니다. 시간이 지남에 따라 API 호출을 분산해야 합니다. 시간이 지남에 따라 작업이 분산되도록 무작위로 작업을 예약하십시오. 자세한 내용은 지수 백오프 및 지터재시도 동작을 참조하십시오.

지수 백오프 및 재시도에 사용되는 다음의 고급 예제와 유사한 코드를 사용하십시오.

MakeSDKRequest() {  attempts = 0
  loop {
    GetSendToken()
    response = SNSAPIRequest()
    RequestBookkeeping(response)
    if not Retryable(response)
      return response
    attempts += 1
    if attempts >= MAX_ATTEMPTS:
      return response
    if not HasRetryQuota(response)
      return response
    delay = ExponentialBackoff(attempts)
    sleep(delay)
  }
}

할당량 증가 요청

지수 백오프 및 재시도를 구현했지만 "ThrottlingException Rate exceeded" 오류가 계속 발생하는 경우 SNS 할당량 증가 요청을 제출하십시오.

참고: 소프트 제한 증가를 요청할 수 있지만 하드 할당량 제한은 늘릴 수 없습니다. 자세한 내용을 보려면 Service Quotas를 참조하십시오.

AWS 공식업데이트됨 6달 전