对 ECS 的角色要求感到困惑

对 ECS 的角色要求感到困惑

我正在尝试设置 ECS,但到目前为止我遇到了一些权限问题,为此我已经在此论坛上创建了一些问题。

我认为我之所以陷入困境是因为说实话我无法在一个地方简明扼要地找到所有这些角色要求。

看来我需要定义至少两个角色:

1)ECS 容器 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html

2)ECS 任务 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#enable_task_iam_roles

这是对的吗?

我遗漏了什么吗? 是否有任何特殊的 IAM 要求?

答案1

唯一必要的角色是容器实例 IAM 角色。此角色允许 ECS 代理(在您的 EC2 实例上运行)与 Amazon ECS 通信。

您可能还会发现其他五种角色也很有用,它们可用于不同的目的:

  • ECS 服务相关角色 (SLR)- 此角色使 Amazon ECS 能够代表您管理与您的应用程序相关的各种 AWS 资源。使用服务,此角色允许 Amazon ECS 管理负载均衡器(经典负载均衡器、应用程序负载均衡器和网络负载均衡器)和服务发现(使用53 号公路)与您的服务相关联。使用任务联网,此角色允许 Amazon ECS 连接和分离弹性网络接口 (ENI)您的任务。使用时需要此角色AWS Fargate
  • 服务调度程序 IAM 角色- 在引入 ECS 服务链接角色 (SLR) 之前,此角色与服务使 Amazon ECS 能够管理与您的服务关联的负载均衡器。如果您想将 Elastic Load Balancer(无论是 Classic Load Balancer、Application Load Balancer 还是 Network Load Balancer)与您的 ECS 服务结合使用,则可以使用此角色。现在 ECS SLR 已可用,您可以使用这两个角色中的任意一个,但如果您想要限制授予 Amazon ECS 的权限以涵盖特定的负载均衡器资源,您可能仍希望使用此角色。
  • Auto Scaling IAM 角色- 此角色与服务并允许应用程序自动扩展服务来扩展或缩小您所需的服务数量。
  • 任务 IAM 角色- 此角色可与任何任务(包括由服务)这个角色与EC2 实例配置文件,但允许您将权限与单个任务关联,而不是与托管这些任务的底层 EC2 实例关联。如果您在 ECS 集群中运行多个需要不同权限的不同应用程序,则可以使用任务 IAM 角色为每个任务授予特定权限,而不是确保集群中的每个 EC2 实例都具有任何应用程序所需的权限组合。
  • 任务执行角色- 使用时需要此角色AWS Fargate并取代容器实例 IAM 角色,不适用于FARGATE启动类型。此角色使 AWS Fargate 能够从中拉取容器映像亚马逊 ECR并将您的日志转发至Amazon CloudWatch 日志。此角色还用于(在 Fargate 和 EC2 启动类型上)启用私有注册中心认证来自 AWS Secrets Manager 和 AWS Systems Manager Parameter Store 的机密

答案2

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

并且我验证了角色 AWSServiceRoleForECS 确实存在。

解决办法?通过执行“入门”向导,它(重新)配置了一些底层内容,现在我的管理员角色可以承担 AWSServiceRoleForECS 并成功创建集群。

答案3

除了@samuel-karp的这个非常好的解释之外,今天我在从经典ELB迁移到结合自定义task_role_arnECS服务的ALB时遇到了一个问题。

尽管我按照链接后面的说明进行操作Task IAM role,但错误是

无法承担角色并验证指定的 targetGroupArn。请验证传递的 ECS 服务角色是否具有适当的权限。

问题是,该服务似乎在负载均衡器上注册了自己。只有当我将主体从 交换ecs.amazonaws.com

"Principal": { "Service": "ecs-tasks.amazonaws.com" }

相关内容