EC2 インスタンスの起動中に「UnauthorizedOperation」というエラーを受け取った後、認証失敗のメッセージをデコードするにはどうすればよいですか?

所要時間1分
0

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動しようとすると、「RunInstances オペレーションを呼び出す際に、エラー (UnauthorizedOperation) が発生しました: この操作を実行する権限がありません。エンコードした認証失敗メッセージ encoded-message」というエラーが表示されます。解決方法を教えてください。

簡単な説明

「UnauthorizedOperation」エラーは、AWS Identity and Access Management (IAM) ロールにアタッチされたアクセス許可、または操作を実行しようとしているユーザーには、EC2インスタンスを起動するために必要なアクセス許可がないことを示してます。エラーにはエンコードされたメッセージが含まれるため、AWS Command Line Interface (AWS CLI) を使用してメッセージをデコードします。この暗号解析で、認証失敗に関する詳細がわかります。

前提条件

エンコードされたメッセージをデコードしようとする IAM ユーザーまたはロールには、IAM ポリシーで DecodeAuthorizationMesssage API アクションに対するアクセス許可が必要です。ユーザーまたはロールにこのアクセス許可がない場合、デコードアクションは失敗し、次のエラーメッセージが表示されます。

「Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: xxx is not authorized to perform: (sts:DecodeAuthorizationMessage) action」(エラー: DecodeAuthorizationMessage オペレーションを呼び出す際に、クライアントエラー (AccessDenied) が発生しました: ユーザー: xxx は実行する権限がありません: (sts:DecodeAuthorizationMessage) アクション) 。

解決方法

1.    次のコマンドを実行して、AWS CLI がマシンにインストールおよび設定されていることを確認します。

$ aws --version

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

2.    decode-authorization-message コマンドを実行します。encoded-message を、エラーメッセージに含まれる正確にエンコードされたメッセージに置き換えます。

$ aws sts decode-authorization-message --encoded-message encoded-message

3.    デコードしたメッセージには、IAM ロールまたはユーザーポリシーに不足している必要なアクセス許可が一覧表示されます。

エンコードされたメッセージの例:

Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn

デコードされたメッセージの例:

$ aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn

{
    "DecodedMessage": 
"{\"allowed\":false,\"explicitDeny\":false,\"matchedStatements\":{\"items\":[]},\"failures\":{\"items\":[]},\"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\"}]}}]}}}"
}

前述のエラーメッセージは、リクエストが RunInstances を呼び出さなかったことを示します。これは、AWS-Useriam:PassRole アクションを arn:aws:iam::accountID:role/EC2_instance_Profile_role に対して実行するアクセス許可がないためです。

4.    IAM ロールまたはユーザーに関連付けられた IAM ポリシーを編集して、前のステップで一覧表示されていた不足している必要なアクセス許可を追加します。


関連情報

EC2 インスタンスで AWS CLI コマンドを実行できないのはなぜですか?

EC2 インスタンスを開始もしくは起動できないのはなぜですか?

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ