跳至内容

如何对运行 Amazon ECS 任务时出现的 "ECS was unable to assume the role" 错误进行故障排除?

2 分钟阅读
0

当我运行 Amazon Elastic Container Service (Amazon ECS) 或 AWS Fargate 任务时,我收到 "ECS was unable to assume the role" 错误。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (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 角色的正确权限。要检查任务角色的权限,请完成以下步骤:

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择 Roles(角色)。
  3. 为任务定义选择任务角色。
  4. 运行 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** 服务。

完成以下步骤:

  1. 打开 IAM 控制台

  2. 在导航窗格中,选择 Roles(角色)。

  3. 选择您的任务角色,然后选择 Trust relationships(信任关系)。

  4. 验证信任政策是否将 ecs-tasks.amazonaws.com 设为服务。
    策略示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "Service": "ecs-tasks.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
  5. 如果您未将 ecs-tasks.amazonaws.com 设置为服务,请选择 Edit trust policy(编辑信任策略)。
    使用上述策略示例更新策略,然后选择 Update policy(更新策略)。

  6. 在任务定义中,指定完整的 IAM 角色 ARN。例如,arn:aws:iam::444455556666:role/ecsTaskRole。有关更多信息,请参阅使用控制台更新 Amazon ECS 任务定义

  7. 确保启动 Amazon ECS 任务的 IAM 用户或角色具有 iam:PassRole 权限。

相关信息

排查 IAM 角色问题

Amazon ECS 任务执行 IAM 角色

对 Amazon Elastic Container Service 身份和访问问题进行故障排除

AWS 官方已更新 7 个月前