使用ecs-cli时无法承担服务链接角色

时间:2019-02-26 02:14:19

标签: amazon-web-services amazon-ecs

我正在尝试遵循ecs-cli Fargate deployment tutorial,但在尝试部署我的服务时遇到了问题。

我正在尝试使用ecs-cli compose --project-name tutorial-maltz service up部署我的测试容器,但收到一条错误消息,提示"InvalidParameterException: Unable to assume the service linked role. Please verify that the ECS service linked role exists.\n\tstatus code: 400, request id

到目前为止,我已使用提供的步骤创建了IAM权限,并已验证我具有包含ecsTaskExecutionRole的IAM角色AmazonECSTaskExecutionRolePolicy。此策略还具有如下所示的信任关系:

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

所有这些都是从ecs-params.yml文件开始部署的,该文件如下所示:

version: 1
task_definition:
    task_execution_role: ecsTaskExecutionRole
    ecs_network_mode: awsvpc
    task_size:
        mem_limit: 0.5GB
        cpu_limit: 256
run_params:
    network_configuration:
        awsvpc_configuration:
            subnets:
                - "subnet-from-ecs-cli-up"
            security_groups:
                - "subnet-created-by-ecs-cli-up"
        assign_public_ip: ENABLED

我不太确定下一步该怎么看。我是否缺少IAM角色?我是否需要在现有IAM角色中添加一些其他参数?

2 个答案:

答案 0 :(得分:1)

对于将来遇到此问题的人们,解决方案是为整个ECS创建一个service linked role。这必须由AWS账户上的管理员完成。

请注意,这与您在本教程前面创建的TaskExecutionRole不同。服务链接角色允许ECS执行诸如启动新EC2实例并创建ELB堆栈之类的操作。 TaskExecutionRole 用于启动任务。

答案 1 :(得分:1)

使用我的管理员角色,在创建 ECS 集群时,我也被阻止...“ECS 集群无法承担服务链接角色。请验证 ECS 服务链接角色是否存在。” 我确认确实存在 AWSServiceRoleForECS 角色。

修复?通过练习“入门”向导,它(重新)配置了一些幕后的东西,现在我的管理员角色可以承担AWSServiceRoleForECSSUCCESS完全创建集群。 >