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 호출에 대해 애플리케이션에 더 빠른 응답 시간을 제공할 수 있습니다.