繁体   English   中英

如何在Fargate启动类型实例上更新AWS ECS容器代理

[英]how to update AWS ECS Container Agent on Fargate launch type instances

我正在尝试使用带有IAM角色的awsvpc模式配置AWS ECS以专门用于任务。 我们的ECS实例属于Fargate启动类型。 在任务配置中指定任务IAM角色后,我们将ssh放入我们的任务中,并尝试运行awscli命令并得到以下错误: Unable to locate credentials. You can configure credentials by running "aws configure". Unable to locate credentials. You can configure credentials by running "aws configure".

为了进行故障排除,我们在具有EC2启动类型的容器中运行了相同的docker映像,并且当我们运行相同的awscli命令时,由于假定的角色没有足够的权限而出错。 我们注意到这是因为它承担了容器实例的IAM角色,而不是任务IAM角色。

根据此处的文档,很显然,在使用awsvpc网络模式时,我们需要在代理配置文件中将ECS_AWSVPC_BLOCK_IMDS代理配置变量设置为true并重新启动代理,以使我们的实例承担任务IAM角色而不是容器实例IAM角色。

目前,出于性能测试的目的,我们需要使用Fargate启动类型进行部署,并且根据docs ,应自动为Fargate安装容器代理:

Amazon ECS容器代理安装在用于使用Fargate启动类型的任务的AWS托管基础架构上。 如果仅使用Fargate启动类型的任务,则不需要其他配置,并且本主题中的内容不适用。

但是,我们仍然需要能够承担我们的任务IAM角色。 有没有一种方法可以更新AWS管理的代理配置文件中的必要环境变量,以允许承担任务IAM角色? 还是有另一种方式允许这样做?

为Fargate任务创建任务定义时,是否要分配任务角色ARN? 需要两个IAM ARN。 执行角色ARN是IAM角色,用于启动Fargate群集中的容器,并使用权限设置CloudWatch日志并可能从ECR中提取映像。 任务角色ARN是容器具有的IAM角色。 确保任务角色ARN具有ECS信任关系。

 {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ecs-tasks.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM