跳至內容

如何解決 CloudFormation 堆疊中的標記權限錯誤?

2 分的閱讀內容
0

我想解決當 AWS CloudFormation 堆疊失敗時收到的標記權限錯誤。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

如果您在沒有正確標記權限的情況下,嘗試在 CloudFormation 堆疊中建立、更新或刪除資源,則您的堆疊操作會失敗。若要解決此問題,您必須將必要的標記權限授與您的 AWS Identity and Access Management (IAM) 主體。

識別失敗的角色與 API 操作

對於 Amazon Elastic Compute Cloud (Amazon EC2) 資源,請解碼編碼後的授權失敗訊息。若要識別失敗的角色與 API 操作,請執行以下 decode-authorization-message AWS CLI 命令。

aws sts decode-authorization-message --encoded-message example-encoded-message --example-region

**注意:**將 example-encoded-message 替換為您的編碼訊息,並將 example-region 替換為您的 AWS 區域。

對於與 Amazon EC2 無關的其他資源,請檢查堆疊事件頁面以檢視失敗的角色與 API。

將缺失的權限新增至 IAM 主體

若要尋找您用於標記操作的 IAM 主體,請完成以下步驟:

  1. 開啟 CloudFormation console (CloudFormation 主控台)。
  2. 在導覽窗格中,選擇 Stacks (堆疊)。
  3. 選取您的堆疊名稱,然後在 Overview (概觀) 區段中,記下 Stack ID (堆疊 ID)。

如果您有名列其中的 IAM 角色 Amazon Resource Name (ARN),則 CloudFormation 會使用該角色來管理與標記資源。

如果您沒有名列其中的 IAM 角色 ARN,請檢查您的 CloudFormation 堆疊事件歷史記錄。請完成以下步驟:

  1. 開啟 AWS CloudTrail console (AWS CloudTrail 主控台)。
  2. 在導覽窗格中,選擇 Event history (事件歷史記錄)。
  3. Lookup attributes (查閱屬性),選擇 Resource name (資源名稱),然後在搜尋方塊中輸入您的堆疊 ID。<br id=hardline_break/> **注意:**事件歷史記錄包含過去 90 天內的事件。如果您的堆疊 ID 搜尋未顯示事件,請更新堆疊。
  4. Event history (事件歷史記錄) 清單中,選取第一個事件名稱。

如果 userIdentity 類型欄位為 IAMUser,則 arn 欄位中的主體會管理該資源。如果 userIdentity 類型為 Role,則 CloudFormation 會使用 sessionIssuer 下方 arn 欄位中的主體。

在您的 IAM 政策中授與標記權限

基礎結構即程式碼 (IaC) 服務管理 IAM 主體時,您必須使用相同的 IaC 服務更新相關的 IAM 政策。

若要使用 IAM 主控台授與標記權限,請建立新的內嵌政策更新現有政策

若要設定 IAM 主體的標記權限,您也可以執行以下 put-role-policy AWS CLI 命令:

aws iam put-role-policy ---role-name example-role-name --policy-name example-policy --policy-document file://AdminPolicy.json

**注意:**將 example-role-name 替換為您的角色名稱,example-policy 替換為您的政策名稱,並將 AdminPolicy.json 替換為您的政策 JSON 文件。檔案名稱與副檔名並不重要。

此外,您也可以將您的 CloudFormation 範本標籤與您的資源標籤比對,以維持一致的基礎結構。