[英]How to provide argument to a task (container) on its launch on Amazon ECS using AWS Fargate
[英]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.