IAM 및 AWS STS의 API 제한 또는 "속도 초과" 오류를 해결하려면 어떻게 해야 하나요?
2분 분량
0
애플리케이션에 다음과 비슷한 오류 메시지가 표시됩니다. "제한: 속도 초과, 상태 코드: 400,".
간략한 설명
AWS Management Console, 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(AWS IAM) 사용자 및 역할에 대한 권한을 감사하기 위해 SimulatePrincipalPolicy 또는 GenerateServiceLastAccessedDetails를 매일 호출하는 작업을 수행하는 애플리케이션이 이에 해당합니다. API 직접 호출을 동시에 실행하는 대신 시간차를 두고 실행할 수 있습니다.
CreatePolicyVersion과 같은 API 직접 호출을 사용하여 IAM 정책 권한을 동적으로 변경하는 애플리케이션의 경우 다른 방법을 고려해 보세요. 예를 들어 IAM 역할 위임 중에 세션 정책을 사용할 수 있습니다.
AWS Security Token Service(AWS STS) 제한 오류의 경우 모든 AWS STS 호출을 글로벌 엔드포인트로 보내는 대신 AWS 리전 STS 엔드포인트를 사용하세요. 각 엔드포인트에는 별도의 제한 한도가 있습니다. 리전 AWS STS 엔드포인트는 AWS STS API 직접 호출에 대해 애플리케이션에 더 빠른 응답 시간을 제공할 수 있습니다.