Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작하려고 하면 다음과 같은 오류가 표시됩니다. "An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message encoded-message".
간략한 설명
AWS Identity and Access Management(IAM) 정책이 너무 제한적일 때 UnauthorizedOperation 오류가 발생할 수 있습니다. 이 오류는 IAM 사용자에게 EC2 인스턴스를 시작할 권한이 없는 경우에도 발생할 수 있습니다. 실패에 대한 자세한 내용을 보려면 AWS Command Line Interface(AWS CLI) 또는 AWS CloudShell을 사용하여 오류 메시지에 포함된 인코딩된 메시지를 디코딩하십시오. 인코딩된 메시지는 다음 예와 비슷합니다.
"Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn"
참고: 인코딩된 메시지를 디코딩하려면 IAM 사용자 또는 역할에 DecodeAuthorizationMesssage API 작업을 수행할 수 있는 권한이 있어야 합니다. 사용자 또는 역할에 해당 권한이 없는 경우 디코딩 작업은 다음 오류 메시지와 함께 실패합니다.
"Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: ### is not authorized to perform: (sts:DecodeAuthorizationMessage) action".
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
인증 실패 오류를 디코딩하려면 다음 단계를 완료하십시오.
- decode-authorization-message 명령을 실행합니다.
aws sts decode-authorization-message --encoded-message encoded-message-error
참고: encoded-message-error를 오류 메시지에 포함된 인코딩된 메시지로 바꿉니다.
디코딩된 메시지의 예:
aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn{
"DecodedMessage":
{
"allowed
...
"context{\"principal\":{\"id\":\"ABCDEFGHIJKLMNO\",\"name\":\"AWS-User\",
\"arn\":\"arn:aws:iam::accountID:user/test-user\"},\"action\":\"iam:PassRole\",
\"resource\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\",\"conditions\":{\"items\":[{\"key\":\"aws:Region\",\"values\":{\"items\":[{\"value\":\"us-east-2\"}]}},
{\"key\":\"aws:Service\",\"values\":{\"items\":[{\"value\":\"ec2\"}]}},{\"key\":\"aws:Resource\",\"values\":{\"items\":[{\"value\":\"role/EC2_instance_Profile_role\"}]}},
{\"key\":\"iam:RoleName\",\"values\":{\"items\":[{\"value\":\"EC2_instance_Profile_role\"}]}},{\"key\":\"aws:Account\",\"values\":{\"items\":[{\"value\":\"accountID\"}]}},
{\"key\":\"aws:Type\",\"values\":{\"items\":[{\"value\":\"role\"}]}},{\"key\":\"aws:ARN\",\"values\":{\"items\":[{\"value\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\"}]}}]}}}"
}
디코딩된 메시지에는 IAM 사용자 또는 역할 정책에서 누락된 필수 권한이 나열됩니다.
- 디코딩된 메시지에서 principal, action, resource, condition 및 key 필드를 검토하여 실패 원인에 대한 자세한 정보를 얻습니다. 메시지에는 요청된 작업 및 리소스, 요청을 한 위탁자 및 사용자 요청의 조건 키 값이 포함됩니다.
이전 예시에서 요청이 실패한 이유는 AWS-User가 arn:aws:iam::accountID:role/EC2_instance_Profile_role ARN에 대해 iam:PassRole 작업을 수행할 수 있는 권한이 없기 때문입니다.
- IAM 사용자 또는 역할과 연결된 IAM 정책을 편집하여 필수 권한을 추가합니다.
또한 IAM 정책 시뮬레이터를 사용하여 ID 기반 정책 및 IAM 권한 경계의 문제를 해결할 수도 있습니다.
관련 정보
EC2 인스턴스에서 AWS CLI 명령을 실행할 수 없는 이유는 무엇인가요?
EC2 인스턴스를 시작할 수 없는 이유는 무엇입니까?
액세스 거부 오류 메시지 문제 해결