AWS ecsInstanceRole 与 ecsTaskExecutionRole

问题描述 投票:0回答:1

我正在尝试让 AWS ECS hello world 正常工作,但我对任务定义角色如何映射到 EC2 实例上的实际角色感到困惑。

创建任务定义时,有“任务角色”,我将其保留为“无”,以及“任务执行角色”,我让其自动创建并填写为“ecsTaskExecutionRole”。但是,当我进行部署时,EC2 实例会列出 IAM 角色“ecsInstanceRole”,该角色也是与“ecsTaskExecutionRole”一起自动创建的。

据我了解:

  • “任务角色”是容器内部承担的角色,允许它们例如访问 S3,因此可以将其保留为 None,因为我不需要访问任何其他 AWS 资源。

  • “任务执行角色”由容器代理承担,因此我希望它显示为 EC2 实例的角色,但我看到 EC2 实例分配了“ecsInstanceRole”和“ecsTaskExecutionRole”似乎没有任何活动。

这是预期的行为吗?

amazon-web-services amazon-ec2 amazon-ecs
1个回答
0
投票

ECS实例角色

这是 EC2 实例所承担的角色,允许其向 ECS 集群注册自身。如果您要部署到 Fargate 而不是 EC2,则不会使用此角色。

ECS执行角色

这是 AWS ECS 服务本身承担的角色,以便访问部署 ECS 任务所需的内容。这用于访问 ECR 来提取容器映像、将任务日志推送到 CloudWatch 以及从 SecretsManager 或 SSM 参数存储中提取机密(如果您在任务定义中配置了这些信息)。

ECS 任务角色

这是为 ECS 任务容器中运行的需要调用 AWS 服务的任何代码提供的角色。此角色是可选的,仅当您的容器内有使用 AWS CLI 工具或 AWS 开发工具包调用 AWS API 的代码时才需要。


“任务执行角色”由容器代理承担,因此我希望它显示为 EC2 实例的角色,但我看到 EC2 实例分配了“ecsInstanceRole”并且出现“ecsTaskExecutionRole”没有任何活动。

如果您要部署到 EC2,那么这两个角色会有一些重叠。实例角色是 EC2 实例上运行的 ECS 代理所承担的角色。该文档指出,任务执行角色仍在 EC2 部署中使用,目的是从 Secrets Manager 和 SSM 参数存储中提取秘密值,以及访问私有映像注册表。

© www.soinside.com 2019 - 2024. All rights reserved.