本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 容器執行個體 IAM 角色
Amazon ECS 容器執行個體 (包括 Amazon EC2 和外部執行個體) 會執行 Amazon ECS 容器代理程式,並要求 IAM 角色,才能讓服務知道該代理程式為您所有。在您啟動容器執行個體並將它們註冊到叢集之前,您必須先為要使用的容器執行個體建立 IAM 角色。角色會在您用來登入主控台或執行 AWS CLI 命令的帳戶中建立。
Amazon ECS 提供 AmazonEC2ContainerServiceforEC2Role
受管 IAM 政策,其中包含使用完整 Amazon ECS 功能集所需的許可。此受管政策可連接至 IAM 角色,並與您的容器執行個體相關聯。或者,您可以在建立要使用的自訂政策時,使用受管政策作為指南。容器執行個體角色提供 Amazon ECS 容器代理程式和 Docker 協助程式代表您呼叫 AWS APIs所需的許可。如需受管政策的詳細資訊,請參閱 AmazonEC2ContainerServiceforEC2Role。
Amazon ECS 支援使用受支援的 Amazon EC2 執行個體類型,以更高的 ENI 密度來啟動容器執行個體。當您使用此功能時,我們建議您建立 2 個容器執行個體角色。為一個角色啟用awsvpcTrunking
帳戶設定,並將該角色用於需要 ENI 中繼的任務。如需awsvpcTrunking
帳戶設定的相關資訊,請參閱使用帳戶設定存取 Amazon ECS功能。
建立容器執行個體角色
您可手動建立角色並連接容器執行個體的受管 IAM 政策,讓 Amazon ECS 為日後推出的功能和改進新增許可。如有需要,請使用下列程序連接 受管 IAM 政策。
- AWS Management Console
-
建立 Elastic Container Service (IAM 主控台) 的服務角色
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。
-
在 IAM 主控台的導覽窗格中,選擇角色,然後選擇建立角色。
-
對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務。
-
針對服務或使用案例,選擇彈性容器服務,然後選擇彈性容器服務的 EC2 角色使用案例。
-
選擇 Next (下一步)。
-
在許可政策區段中,確認已選取 AmazonEC2ContainerServiceforEC2Role 政策。
AmazonEC2ContainerServiceforEC2Role 受管政策應連接至容器執行個體 IAM 角色,否則您會使用 來建立叢集 AWS Management Console 而收到錯誤。
-
選擇 Next (下一步)。
-
針對角色名稱,輸入 ecsInstanceRole
-
檢閱角色,然後選擇 Create role (建立角色)。
- AWS CLI
-
將所有使用者輸入
取代為您自己的值。
-
建立稱為 instance-role-trust-policy.json
的檔案,其中具有以下內容。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}
]
}
-
使用以下命令,使用信任政策文件建立執行個體 IAM 角色。
aws iam create-role \
--role-name ecsInstanceRole \
--assume-role-policy-document file://instance-role-trust-policy.json
-
使用 create-instance-profile 命令建立名為 ecsInstanceRole-profile
的執行個體設定檔。
aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile
回應範例
{
"InstanceProfile": {
"InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE",
"Roles": [],
"CreateDate": "2022-04-12T23:53:34.093Z",
"InstanceProfileName": "ecsInstanceRole-profile",
"Path": "/",
"Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile"
}
}
-
將 ecsInstanceRole
角色新增至 ecsInstanceRole-profile
執行個體設定檔。
aws iam add-role-to-instance-profile \
--instance-profile-name ecsInstanceRole-profile \
--role-name ecsInstanceRole
-
使用下列命令將 AmazonEC2ContainerServiceRoleForEC2Role
受管政策連接至角色。
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \
--role-name ecsInstanceRole
建立角色之後,請為角色新增下列功能的其他許可。
Amazon ECR 許可
搭配容器執行個體使用的 Amazon ECS 容器執行個體角色,必須具有下列 Amazon ECR 的 IAM 政策許可。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:GetAuthorizationToken"
],
"Resource": "*"
}
]
}
如果您的容器執行個體使用 AmazonEC2ContainerServiceforEC2Role
受管政策,則您的角色具有適當的許可。若要檢查您的角色是否支援 Amazon ECR,請參閱 Amazon Elastic Container Service 開發人員指南中的 Amazon ECS 容器執行個體 IAM 角色。
Amazon S3 唯讀存取
在 Amazon S3 中的私有儲存貯體內存放組態資訊,並對容器執行個體 IAM 角色授予唯讀存取權,這是一種允許容器執行個體在啟動時進行設定的安全且便利方法。您可以在私有儲存貯體中存放ecs.config
檔案的複本,使用 Amazon EC2 使用者資料安裝 , AWS CLI 然後在執行個體啟動/etc/ecs/ecs.config
時將您的組態資訊複製到 。
如需建立 ecs.config
檔案、將其存放在 Amazon S3 以及使用此組態啟動執行個體的詳細資訊,請參閱 在 Amazon S3 中存放 Amazon ECS 容器執行個體組態。
您可以使用下列 AWS CLI 命令來允許容器執行個體角色的 Amazon S3 唯讀存取。將 ecsInstanceRole
取代為您建立的角色名稱。
aws iam attach-role-policy \
--role-name ecsInstanceRole
\
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
您也可以使用 IAM 主控台將 Amazon S3 唯讀存取 (AmazonS3ReadOnlyAccess
) 新增至您的角色。如需詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的更新角色的許可。
監控容器執行個體許可
在容器執行個體將日誌資料傳送至 CloudWatch Logs 之前,您必須建立 IAM 政策,以允許 Amazon ECS 代理程式將客戶的應用程式日誌寫入 CloudWatch (通常透過awslogs
驅動程式處理)。建立政策之後,請將該政策連接至 ecsInstanceRole
。
- AWS Management Console
-
若要使用 JSON 政策編輯器來建立政策
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。
-
在左側的導覽窗格中,選擇 Policies (政策)。
如果這是您第一次選擇 Policies (政策),將會顯示 Welcome to Managed Policies (歡迎使用受管政策) 頁面。選擇 Get Started (開始使用)。
-
在頁面頂端,選擇 Create policy (建立政策)。
-
在政策編輯器中,選擇 JSON 選項。
-
輸入下列 JSON 政策文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": ["arn:aws:logs:*:*:*"]
}
]
}
-
選擇 Next (下一步)。
您可以隨時切換視覺化與 JSON 編輯器選項。不過,如果您進行變更或在視覺化編輯器中選擇下一步,IAM 就可能會調整您的政策結構,以便針對視覺化編輯器進行最佳化。如需詳細資訊,請參閱 IAM 使用者指南中的調整政策結構。
-
在檢視與建立頁面上,為您正在建立的政策輸入政策名稱與描述 (選用)。檢視此政策中定義的許可,來查看您的政策所授予的許可。
-
選擇 Create policy (建立政策) 儲存您的新政策。
建立政策之後,請將政策連接至容器執行個體角色。如需有關如何將政策連接至角色的資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的更新角色的許可。
- AWS CLI
-
-
建立稱為 instance-cw-logs.json
的檔案,其中具有以下內容。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": ["arn:aws:logs:*:*:*"]
}
]
}
-
使用以下命令,使用 JSON 政策文件檔案建立 IAM 政策。
aws iam create-policy \
--policy-name cwlogspolicy
\
--policy-document file://instance-cw-logs.json
-
擷取您使用以下命令建立的 IAM 政策 ARN。將 cwlogspolicy
取代為您建立的政策名稱。
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogspolicy
`].Arn'
-
使用下列命令,使用政策 ARN 將政策連接至容器執行個體 IAM 角色。
aws iam attach-role-policy \
--role-name ecsInstanceRole
\
--policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy