當我執行 Amazon Elastic Container Service (Amazon ECS) 或 AWS Fargate 任務時,收到錯誤「ECS was unable to assume the role」。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
如果您的 IAM 角色或信任關係設定錯誤,您可能會收到以下錯誤:
「ECS was unable to assume the role 'arn:aws:iam::444455556666:role/Admin' that was provided for this task.Please verify that the role being passed has the proper trust relationship and permissions and that your IAM user has permissions to pass this role.」
若要解決此問題,請驗證您的任務角色具有正確的信任政策,並確認您為 IAM 角色使用必要的 IAM 權限。
檢查任務角色權限
請確認您的任務定義包含 IAM 角色的正確權限。若要檢查任務角色的權限,請完成以下步驟:
- 開啟 IAM console (IAM 主控台)。
- 在導覽窗格中,選擇 Roles (角色)。
- 選取用於任務定義的任務角色。
- 執行 get-role AWS CLI 命令,查看任務角色的相關資訊:
aws iam get-role --role-name task-execution-role
**注意:**請將 task-execution-role 替換為您任務所使用的 IAM 角色名稱。
如果您沒有任務角色,請建立任務 IAM 角色。
為 ecs-tasks.amazonaws.com 設定信任政策
為了讓 Amazon ECS 任務擔任 IAM 角色,請設定信任政策以允許 ecs-tasks.amazonaws.com 服務。
請完成以下步驟:
-
開啟 IAM console (IAM 主控台)。
-
在導覽窗格中,選擇 Roles (角色)。
-
選取您的任務角色,然後選擇 Trust relationships (信任關係)。
-
確認信任政策中已將 ecs-tasks.amazonaws.com 設定為服務。
政策範例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
如果您尚未將 ecs-tasks.amazonaws.com 設定為服務,請選擇 Edit trust policy (編輯信任政策)。
請使用上述範例政策更新政策,然後選擇 Update policy (更新政策)。
-
在任務定義中,指定完整的 IAM 角色 ARN。例如,arn:aws:iam::444455556666:role/ecsTaskRole。如需更多資訊,請參閱使用主控台更新 Amazon ECS 任務定義。
-
請確保啟動 Amazon ECS 任務的 IAM 使用者或角色具有 iam:PassRole 權限。
相關資訊
IAM 角色疑難排解
Amazon ECS 任務執行 IAM 角色
Amazon Elastic Container Service 身分與存取疑難排解