在 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 動作的許可。如果使用者或角色沒有此許可,解碼動作會失敗,並顯示下列錯誤訊息:

「錯誤: 調用 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-User 沒有對 arn:aws:iam::accountID:role/EC2_instance_Profile_role 執行 iam:PassRole 動作的許可。

4.    編輯與 IAM 角色或使用者關聯的 IAM 政策,以新增上述步驟中列出的缺少的必要許可。


相關資訊

為什麼無法在 EC2 執行個體上執行 AWS CLI 命令?

為什麼無法啟動 EC2 執行個體?

AWS 官方
AWS 官方已更新 2 年前