我正在尝试遵循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角色中添加一些其他参数?
答案 0 :(得分:1)
对于将来遇到此问题的人们,解决方案是为整个ECS创建一个service linked role。这必须由AWS账户上的管理员完成。
请注意,这与您在本教程前面创建的TaskExecutionRole
不同。服务链接角色允许ECS执行诸如启动新EC2实例并创建ELB堆栈之类的操作。 TaskExecutionRole 仅用于启动任务。
答案 1 :(得分:1)
使用我的管理员角色,在创建 ECS 集群时,我也被阻止...“ECS 集群无法承担服务链接角色。请验证 ECS 服务链接角色是否存在。” 我确认确实存在 AWSServiceRoleForECS 角色。
修复?通过练习“入门”向导,它(重新)配置了一些幕后的东西,现在我的管理员角色可以承担AWSServiceRoleForECS 和SUCCESS完全创建集群。 >