일부 AWS 리전에서 "AWS was not able to validate the provided access credentials"라는 IAM 오류가 표시되는 이유는 무엇입니까?

2분 분량
0

AWS Identity and Access Management(IAM) 역할을 수임했는데 API 호출에서 다음과 유사한 오류가 반환되었습니다. "An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials."

간략한 설명

AWS Security Token Service(AWS STS)는 세션 토큰에 대한 업데이트된 버전 2를 지원합니다. 새로운 AWS 리전(예: 바레인)은 기본적으로 활성화되지 않으며 업데이트된 버전의 세션 토큰만 수락합니다. 이 오류는 버전 1 세션 토큰을 사용하여 AWS 리전에서 기본적으로 활성화되지 않은 서비스 엔드포인트에 요청하는 경우 발생할 수 있습니다. 자세한 내용은 AWS 리전에서 AWS STS 관리를 참조하세요.

해결 방법

리전 AWS STS 엔드포인트에서 획득한 세션 토큰은 버전 2이며 모든 AWS 리전에서 유효합니다. 리전 STS 엔드포인트를 사용하는 것이 모범 사례로서 권장됩니다. 애플리케이션에 지리적으로 더 가까운 엔드포인트를 사용하면 지연 시간이 줄어들고 응답 시간이 향상됩니다.

이 문제를 해결하려면 다음 방법 중 하나를 사용합니다.

리전 엔드포인트에서 토큰 받기

다음 예제 명령은 AWS SDK for Python(Boto3)을 사용합니다.

참고:

  • 본인의 환경에 따라 your-region, AccountID, RoleName을 바꿉니다.
  • 리전 엔드포인트에 대한 STS 클라이언트를 구성하려면 endpoint_url을 설정해야 합니다.
# Replace existing code to create STS client with the following
sts_client = boto3.client('sts', region_name='your-region', endpoint_url='https://sts.your-region.amazonaws.com')

리전 엔드포인트를 사용하려면 기존 bash 스크립트/명령에 리전 및 엔드포인트 URL 옵션을 포함합니다.

aws sts assume-role --role-arn arn:aws:iam::AccountID:role/RoleName --role-session-name RoleName --region your-region --endpoint-url https://sts.your-region.amazonaws.com

글로벌 엔드포인트에 대한 세션 토큰의 리전 호환성 변경

기본적으로 글로벌 엔드포인트에 대한 AWS STS 호출은 버전 1의 세션 토큰을 발행합니다. 버전 1 토큰은 기본적으로 활성화되어 있는 AWS 리전에서만 유효합니다. 그러나 STS 글로벌 엔드포인트가 모든 AWS 리전에서 사용할 수 있는 버전 2의 토큰을 발행하도록 구성할 수도 있습니다.

지침은 글로벌 엔드포인트에 대한 세션 토큰의 리전 호환성 변경을 참조하세요.

중요: 버전 2 토큰에는 버전 1보다 많은 문자가 포함되어 있습니다. 이는 토큰을 일시적으로 저장하는 기존 시스템에 영향을 줄 수 있습니다.


관련 정보

AWS STS(Security Token Service), 이제 글로벌 STS 엔드포인트에서 모든 AWS 리전과 호환되는 세션 토큰을 발행할 수 있도록 지원

리전 및 엔드포인트

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음