在 EC2 实例启动期间收到“UnauthorizedOperation”错误后,如何解码授权失败消息?

1 分钟阅读
0

我正在尝试启动 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".

简短描述

UnauthorizedOperation 错误表明附加到 AWS Identity and Access Management(AWS IAM)角色的权限不正确。或者,执行操作的用户缺少启动 EC2 实例所需的 IAM 权限。要获取有关授权失败的更多详细信息,请使用 AWS 命令行界面(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".

**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新的 AWS CLI 版本

解决方法

要使用 AWS CLI 对编码消息进行解码,请完成以下步骤:

  1. 要验证您的计算机上是否安装配置了 AWS CLI,请运行以下命令:

    $ aws --version
  2. 运行 decode-authorization-message 命令:

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

    **注意:**将 encoded-message 替换为错误消息中包含的准确编码消息。
    已解码的消息会列出 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
    ...
    "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\"}]}}]}}}"
    }

    **注意:**该请求会失败,因为 AWS-User 无权在 arn:aws:iam::accountID:role/EC2_instance_Profile_role 上执行 iam:PassRole 操作。

  3. 编辑与 IAM 角色或用户关联的 IAM 策略,以添加缺失的所需权限。

相关信息

为什么不能在 EC2 实例上运行 AWS CLI 命令?

为什么我无法启动我的 EC2 实例?

Troubleshooting access denied error messages

AWS 官方
AWS 官方已更新 7 个月前