我有一个 ECS 任务,涉及两个以 sidecar 模式运行的容器。根据 Amazon 文档,对于我的用例,这是推荐,其中容器共享生命周期并且需要在同一主机上运行。
根据最小权限原则,我想为每个容器赋予不同的 IAM 角色,并为其特定需求提供权限。具体来说,一个容器需要能够访问S3和SQS,而另一个容器不需要访问任何外部资源。
不幸的是,我找不到任何有关如何将 IAM 角色分配给 ECS 任务中的一个容器而不是另一个容器的文档。可以这样做吗?如果是的话,怎么办?
(我在这个项目中使用 Terraform,因此任何使用 Terraform 示例的帮助都会特别有帮助。)
目前,Amazon ECS 尚不直接支持特定于容器的 IAM 角色。 IAM 任务角色 (taskRoleArn) 在任务级别分配,它适用于任务定义中的所有容器。
如果您需要特定于容器的权限,则需要分离 ECS 任务:在其自己的 ECS 任务定义中运行每个容器,每个容器都有自己的 taskRoleArn。
或者您可以动态承担角色:使用主要 IAM 角色根据需要承担其他角色,但这会增加代码的复杂性,所以基本上,您需要给他们一个角色,然后在代码中,您需要承担另一个角色。