AWS 弹性容器服务的 ECS 执行角色与任务角色的区别

我正在使用 AWS 的 CloudForm,最近我花了相当多的时间试图弄清楚为什么我创建的角色和附加的策略不允许我的 ECS 任务向简单队列服务(Simple Queue Service,SQS)队列发送消息。

I realized that I was incorrectly attaching the SQS permissions policy to the Execution Role when I should have been attaching the policy to the Task Role. I cannot find good documentation that explains the difference between the two roles. CloudFormation documentation for the two of them are here: 执行角色 and 任务角色

30271 次浏览

通过引用 文件,您可以看到执行角色是执行 ECS 操作的 IAM 角色,例如提取映像并将应用程序日志存储在 Cloudwatch 中。

然后,TaskRole 是任务本身使用的 IAM 角色。例如,如果您的容器想要调用其他 AWS 服务(如 S3、 SQS 等) ,那么这些权限将需要由 TaskRole 负责。

使用任务角色在功能上与在容器实例的配置文件中使用访问键相同。我在答案中包含了这个,因为许多读这个的人已经理解了访问键。

ECS task execution role is capabilities of ECS agent (and container instance), e.g:

  • 从 Amazon ECR 中提取容器图像
  • 使用 awslog 日志驱动程序

ECS 任务角色是任务本身的特定功能,例如:

  • 当实际代码运行时