如何排查執行 Amazon ECS 任務時出現的「ECS 無法擔任角色」錯誤?

上次更新日期:2022 年 3 月 4 日

執行 Amazon Elastic Container Service (Amazon ECS)/AWS Fargate 任務時,出現以下錯誤:

ECS 無法擔任為此任務提供的 'arn:aws:iam::xxxxxxxxxxxx:role/yyyyyyyy' 角色。請驗證傳遞的角色具有正確的信任關係和許可,並且您的 IAM 使用者具有傳遞此角色的許可。

解決方案

由於以下一點或多點原因,您會得到此錯誤:

  • 任務定義中指定的任務執行 AWS Identity and Access Management (IAM) 角色或任務角色不存在。
  • 任務定義中指定的任務執行 IAM 角色或任務角色沒有正確的信任關係政策。

驗證任務執行角色或任務角色是否存在

要使用主控台檢查任務定義中定義的任務執行角色或任務角色是否存在,請執行以下操作:

  1. 開啟 IAM 主控台
  2. 選擇角色
  3. 搜尋任務定義中包含的任務執行角色或任務角色的角色清單。

要使用 AWS Command Line Interface (AWS CLI) 檢查任務執行角色或任務角色是否存在,請執行以下命令:

注意:此命令擷取有關指定 IAM 角色的資訊。

aws iam get-role --role-name example-task-execution-role

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

如果角色不存在,則會出現以下錯誤:

An error occurred (NoSuchEntity) when calling the GetRole operation: The role with name example-task-execution-role cannot be found.

如果角色不存在,請考慮執行以下任一操作:

驗證任務定義中的任務執行角色或任務角色是否具有正確的信任關係政策

請確保該角色的信任關係政策允許服務 ecs-tasks.amazonaws.com。這是 Amazon ECS 任務擔任指定 IAM 角色所必需的條件。

要檢查信任關係政策並根據需要進行更新,請執行以下操作:

1.    開啟 IAM 主控台

2.    在導覽窗格中,選擇 Roles (角色)

3.    搜尋任務定義中包含的任務執行角色或任務角色的角色清單。

4.    選擇角色。

5.    選擇信任關係

6.    驗證角色的信任關係是否包含以下政策:

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

7.    如果信任關係與政策匹配,請選擇取消。否則,選擇編輯信任關係

8.    將前面的策略複製到政策文件視窗中,然後選擇更新信任政策