使用 ecs-cli 时无法承担服务相关角色

Jon*_*han 6 amazon-web-services amazon-ecs

我正在尝试按照ecs-cli Fargate 部署教程进行操作,但在尝试部署我的服务时遇到了问题。

我正在尝试使用部署我的测试容器,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包含AmazonECSTaskExecutionRolePolicy. 此策略还具有如下所示的信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

所有这些都是从一个如下所示的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
Run Code Online (Sandbox Code Playgroud)

我不确定下一步该往哪里看。我是否缺少 IAM 角色?我是否需要向我现有的 IAM 角色添加一些额外的参数?

Jon*_*han 9

对于未来遇到此问题的人,解决方案是为整个 ECS创建一个服务相关角色。这必须由 AWS 账户的管理员完成。

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


小智 8

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

修复?通过执行“入门”向导,它在幕后(重新)配置了某些内容,现在允许我的管理员角色承担AWSServiceRoleForECS并且SUCCESS完全创建集群。