Elastic Beanstalk의 API 조절 또는 "속도가 초과됨(Rate Exceeded)" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 7월 29일

AWS Elastic Beanstalk를 사용할 때 API 조절 또는 "속도가 초과됨(Rate Exceeded)" 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

AWS 서비스에 대한 API 호출은 초당 허용되는 최대 API 요청 속도를 초과할 수 없습니다. 제한은 계정별 및 AWS 리전별 모든 리소스에서 공유됩니다.

호출이 애플리케이션, AWS CLI(AWS 명령줄 인터페이스) 또는 AWS Management Console에서 오는지 여부는 중요하지 않습니다. API 요청이 초당 최대 속도를 초과하면 "속도가 초과됨(Rate Exceeded)" 오류가 수신되고 API 호출이 조절됩니다. 일부 API 호출은 초당 수십 번 실행될 수 있지만 다른 호출은 초당 몇 번의 호출로 제한됩니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

Elastic Beanstalk로 직접 이루어진 API 호출뿐 아니라 AWS CloudFormation, Amazon Elastic Compute Cloud(Amazon EC2), 오토 스케일링 및 로드 밸런싱과 같이 Elastic Beanstalk에서 관리하는 다른 AWS 서비스에서 이루어진 API 호출에서도 오류를 수신할 수 있습니다. 계정의 사용량이 증가하거나 동일한 계정에 리소스를 추가함에 따라 조절 위험이 커집니다.

참고: 호출 한도는 하루 중 시간에 따라 달라질 수 있으며, 서비스는 부하에 따라 조정됩니다. 동적 한도 동작에 맞게 조정하기 위해 API를 사용하는 속도를 동적으로 조정하는 것이 모범 사례입니다.

해결 방법

"속도가 초과됨(Rate Exceeded)" 오류 및 조절을 방지하거나 해결하려면 다음 해결 방법을 시도해 보세요.

높은 API 호출의 소스 찾기

1.    Elastic Beanstalk 이벤트 스트림에서 조절 오류를 식별합니다. 오류를 수신한 시간대를 기록해 둡니다. 혹은, API 호출이 애플리케이션 또는 스크립트에서 오는 경우 해당 애플리케이션 로그에서 이 시간대를 찾습니다.

2.    해당 시간대에서 찾은 RequestLimitExceeded 오류를 포함하는 요청에 대해 AWS CloudTrail을 사용하여 이벤트를 보고 eventName, eventSource(서비스) 및 userAgent를 확인합니다. Elastic Beanstalk 이벤트 또는 로그에 있는 오류의 타임스탬프를 CloudTrail에서 발견된 오류와 일치시킵니다. 이렇게 하면 계정에서 API 호출을 가장 많이 사용하는 소스를 알 수 있습니다.

참고: CloudTrail 레코드를 수동으로 계산하는 것은 어려울 수 있습니다. CloudTrail에서도 Athena 쿼리를 사용할 수 있습니다.

Amazon CloudWatch 사용량 지표를 사용하면 시간에 따른 API 사용량을 모니터링할 수 있습니다. 현재 사용 지표에서는 모든 서비스 및 API 호출이 지원되지는 않습니다.

타사 애플리케이션이 Elastic Beanstalk 또는 Elastic Beanstalk에서 관리하는 다른 AWS 서비스를 지속적으로 호출할 수 있습니다. 타사 애플리케이션에 계정에서 API 호출을 수행할 수 있는 권한을 부여하는 경우 이러한 호출도 모니터링해야 합니다.

모범 사례를 사용하여 API 사용량 줄이기

오류 재시도 및 지수 백오프와 지터를 사용하여 API 호출 속도를 제한할 수 있습니다. 각 AWS SDK는 자동 재시도 로직 및 지수 백오프 알고리즘을 구현하지만, 기본 재시도 로직이 충분하지 않은 경우 필요에 맞게 SDK 구성 설정을 조정해야 할 수 있습니다.

참고: SDK 설정 이외에도 고려해야 할 점이 많습니다. 자체 코드에서도 SDK를 호출할 때 백오프, 재시도 및 지터 로직을 사용해야 합니다.

매초마다 API를 호출하는 사용자 지정 스크립트가 있는 경우 이 작업이 필요한지 고려하십시오. 고급 사용 사례의 경우 API 소비를 줄이기 위해 캐싱 계층을 만드는 것이 좋습니다. 다중 계정 전략을 고려해 볼 수도 있습니다. 단일 AWS 계정이 너무 커지는 것을 방지하는 것이 모범 사례입니다. 개발 또는 테스트 리소스를 프로덕션 리소스에서 분리하면 개발 리소스가 프로덕션 리소스에서 API 사용을 제거하지 못하게 할 수 있습니다.

API 호출 속도 제한에 대한 한도 증가 요청

필요한 경우 API 호출 속도 제한에 대한 한도 증가를 요청할 수 있습니다. 이러한 제한은 일반적인 리소스 기반 제한보다 늘리기가 더 어렵고 강력한 사용 사례 정당성이 필요합니다. API를 검토하여 모범 사례를 준수하는지 확인합니다. 요청은 사전에 이루어져야 합니다.

증가를 요청할 때는 다음 정보를 포함하십시오.

  • AWS 리전 및 제한 문제와 관련된 기간
  • 사용하는 API 호출 및 필요한 호출 속도
  • 비즈니스 니즈 및 증가에 대한 기술적 요구와 같은 상세한 사용 사례 정당성

요청을 보내기 전에 오류 폐기, 지수 백오프 및 지터를 사용해 보시기 바랍니다. 요청에 이러한 시도의 결과 및 시도와 관련된 정보를 포함합니다.