EC2 インスタンスを起動しようとすると、「この操作を実行する権限がありません」というエラーメッセージが表示されるのはなぜですか?

最終更新日: 2020 年 3 月 30 日

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

簡単な説明

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

前提条件

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

「エラー: DecodeAuthorizationMessage オペレーションを呼び出す際に、クライアントエラー (AccessDenied) が発生しました: ユーザー: xxx は実行する権限がありません: (sts:DecodeAuthorizationMessage) アクション」。

DecodeAuthorizationMessage アクションの詳細については、 「DecodeAuthorizationMessage」をご参照ください。

解決方法

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

$ aws --version

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 ポリシーを編集して、不足しているアクセス許可を追加します。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合