當我更新或刪除 AWS CloudFormation 堆疊時,如何解決「角色 [role_arn] 無效或無法擔任」錯誤?

2 分的閱讀內容
0

當我建立、更新或刪除 AWS CloudFormation 堆疊時,我想要解決「角色 [role _arn] 無效或無法擔任」錯誤。

簡短說明

AWS CloudFormation 代表您呼叫堆疊中的資源時,當 AWS Identity and Access Management (IAM) 服務角色發生問題,您會收到此錯誤訊息。

當您嘗試執行下列操作時,會收到此錯誤:

  • 使用 AWS Command Line Interface (AWS CLI) 或 API 呼叫建立堆疊。
  • 當 AWS CloudFormation 建立變更集時更新堆疊。
  • 刪除堆疊。
  • 更新或刪除 IAM 角色。如果您修改已更新 IAM 角色的信任政策,則 AWS CloudFormation 無法擔任該角色。

若要解決此錯誤,請判斷 AWS CloudFormation 使用的 IAM 服務角色是否存在。然後:

  • 如果 IAM 角色不存在,請使用相同名稱建立新的 IAM 角色。
  • 如果 IAM 角色存在,請確認角色信任政策允許 AWS CloudFormation 擔任 IAM 角色。

或者,您可以使用 --role-arn 參數覆寫用於覆寫目前堆疊操作的服務角色的目前 IAM 角色。

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI

解決方法

確認 IAM 角色存在

1.    開啟「 IAM 主控台」。

2.    在瀏覽窗格中,選擇「 角色」。

3.    在「 角色名稱 」欄中,選擇在您收到的錯誤訊息中所提到的 IAM 角色。

4.    如果角色存在,請完成「 確認角色信任政策允許 AWS CloudFormation 擔任 IAM 角色 」一節中的步驟
-或-
完成「 覆寫 AWS CloudFormation 目前使用的 IAM 角色 」中的步驟。

        如果角色不存在,請完成「 建立新 IAM 角色並確認其具有所需權限 」中的步驟。

建立新的 IAM 角色並確認其具有所需權限

1.    「 建立新的 IAM 角色」,並與在錯誤中提到的角色名稱相同

2.    確認新的 IAM 角色具有 AWS CloudFormation 所需權限,可對堆疊中的資源執行建立、更新或刪除操作。

3.    建立角色後,您可以再次建立、更新或刪除堆疊。

**注意:**如果新角色沒有 IAM 所需權限,則堆疊操作可能會失敗。例如,如果您嘗試刪除 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體資源,而所在的 IAM 角色沒有 ec2:TerminateInstances 動作所需權限,則刪除操作會失敗。

確認角色信任政策允許 AWS CloudFormation 擔任 IAM 角色

1.    開啟「 IAM 主控台」。

2.    在瀏覽窗格中,選擇「 角色」。

3.    在「 角色名稱 」欄中,選擇在您收到的錯誤訊息中所提到的 IAM 角色。

4.    選擇「 信任關係標籤。

5.    確認信任關係將 cloudformation.amazonaws.com 顯示為信任實體。

如果未將 cloudformation.amazonaws.com 列為信任實體,請選擇「 編輯信任關係」。

6.    在「 政策文件 」編輯器中,輸入下列 AWS CloudFormation 服務角色信任政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

7.    選擇「 更新信任政策」。

現在,更新的信任政策允許 AWS CloudFormation 擔任 IAM 角色。

8.    建立角色後,您可以再次建立、更新或刪除堆疊。

覆寫 AWS CloudFormation 目前使用的 IAM 角色

1.    若要更新堆疊,請執行下列命令:

aws cloudformation update-stack --stack-name my-stack --template-body file://my-stack-template.json --role-arn arn:aws:iam::123456789123:role/cloudformation-role

**注意:**將「 我的堆疊」、「 my-stack-template.json」,和 「 123456789123 」 替換為您的值。

2.    若要刪除堆疊,請執行下列命令:

aws cloudformation delete-stack --stack-name my-stack --role-arn arn:aws:iam::123456789123:role/cloudformation-role

注意: 將 「 my-stack 」 和 「 123456789123 」 替換為您的值。


相關資訊

AWS CloudFormation 服務角色

建立角色將權限委派給 AWS 服務

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