IAM 및 AWS STS의 API 제한 또는 ‘속도 초과’ 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

애플리케이션에 다음과 비슷한 오류 메시지가 표시됩니다. "Throttling: Rate exceeded, status code: 400,"

간략한 설명

AWS 관리 콘솔, AWS Command Line Interface(AWS CLI) 및 애플리케이션의 API 호출은 AWS 계정의 최대 속도 제한에 기여합니다.

참고: AWS 서비스 속도 제한은 늘릴 수 없습니다.

해결 방법

제한 오류를 방지하려면 다음 모범 사례를 따르세요.

  • 애플리케이션 코드에서 지수 백오프를 구현합니다. 지수 백오프는 AWS에 대한 API 호출이 제한될 때마다 더 긴 대기 시간을 허용합니다. 애플리케이션에 따라 최대 지연 횟수와 최대 재시도 횟수가 다를 수 있습니다.
    참고: AWS SDK는 자동 재시도 로직과 지수 백오프 알고리즘을 구현합니다.
  • 일부 애플리케이션은 캐싱을 구현하여 API 호출 속도를 낮출 수 있습니다. 예를 들어 애플리케이션이 교차 계정 워크플로에 대해 API 호출 AssumeRole을 호출하는 경우, 수신한 임시 자격 증명을 저장하여 여러 교차 계정 호출에 재사용할 수 있습니다. 이것은 교차 계정 API 호출을 수행할 때마다 새 AssumeRole 호출을 수행할 필요가 없음을 의미합니다.
  • 애플리케이션이 AssumeRole을 호출하고 자격 증명을 캐싱하는 경우, 역할의 임시 자격 증명최대 세션 기간을 확인할 수 있습니다. 임시 자격 증명의 기간을 늘리면 AssumeRole을 자주 호출할 필요가 없습니다.
  • API를 한 번에 모두 호출하지 않고 더 긴 시간에 걸쳐 API 호출을 분산합니다. AWS Identity and Access Management(IAM) 사용자 및 역할에 대한 권한을 감사하기 위해 SimulatePrincipalPolicy 또는GenerateServiceLastAccessedDetails를 호출하는 일일 작업이 있는 애플리케이션을 예로 들 수 있습니다. API 호출을 동시에 실행하는 대신 시차를 둘 수 있습니다.
  • CreatePolicyVersion과 같은 API 호출을 사용하여 IAM 정책 권한을 동적으로 변경하는 애플리케이션의 경우 다른 방법을 고려합니다. 예를 들어 IAM 역할을 수임하는 동안 세션 정책을 사용할 수 있습니다.
  • AWS Security Token Service(AWS STS) 제한 오류의 경우, 모든 AWS STS 호출을 글로벌 엔드포인트로 보내는 대신 리전 STS 엔드포인트를 사용하는 것이 좋습니다. 각 엔드포인트에는 별도의 제한 한도가 있습니다. 리전 AWS STS 엔드포인트를 사용하면 AWS STS API 호출에 대해 애플리케이션에 더 빠른 응답 시간을 제공할 수 있습니다.
  • AWS 계정에서 어떤 IAM 사용자 또는 역할이 대량의 API 호출을 수행하는지 잘 모르는 경우, AWS CloudTrail을 사용하여 이벤트 기록을 확인합니다. 또한 Amazon Athena를 사용하여 SQL 쿼리를 실행하고 CloudTrail 로그를 필터링할 수도 있습니다. 지침은 어떤 API 호출이 "Rate exceeded" 오류를 유발하는지 어떻게 알 수 있습니까?를 참조하세요.
  • AWS 계정에는 별도의 제한 한도가 있으므로 AWS Organizations를 사용하여 여러 계정에 워크로드를 분산하는 것이 좋습니다. 새 AWS 계정을 생성하는 데에는 추가 비용이 들지 않으며 Organizations에서는 통합 결제를 제공합니다. SCP(서비스 제어 정책)를 사용하면 AWS 계정 내 IAM 사용자 및 역할의 최대 권한을 제어할 수 있습니다. 자세한 내용은 AWS Organizations를 통한 계정 관리AWS OrganizationsAWS로 시작하려면 어떻게 해야 합니까?를 참조하세요.

관련 정보

Amazon Athena에서 AWS CloudTrail 로그 검색을 위한 테이블을 자동으로 생성하려면 어떻게 해야 합니까?

AWS 공식
AWS 공식업데이트됨 2년 전