簡體   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