本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 執行個體類型啟動ENI密度更高的容器EC2執行個體。當您使用此功能時,建議您建立 2 個容器執行個體角色。為一個角色啟用awsvpcTrunking
帳戶設定,並將該角色用於需要ENI中繼的任務。如需awsvpcTrunking
帳戶設定的相關資訊,請參閱 使用帳戶設定存取 Amazon ECS功能。
建立容器執行個體角色
您可以手動建立角色並連接容器執行個體的受管IAM政策,以允許 Amazon 在引入未來功能和增強功能時ECS新增許可。如有需要,請使用下列程序連接 受管IAM政策。
- AWS Management Console
-
建立 Elastic Container Service 的服務角色 (IAM 主控台)
登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/。
-
在IAM主控台的導覽窗格中,選擇角色 ,然後選擇建立角色 。
-
對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務。
-
針對服務或使用案例 ,選擇彈性容器服務 ,然後選擇EC2彈性容器服務角色使用案例。
-
選擇 Next (下一步)。
-
在許可政策區段中,確認已選取 AmazonEC2ContainerServiceforEC2Role 政策。
AmazonEC2ContainerServiceforEC2Role 受管政策應連接至容器執行個體IAM角色,否則您會使用 AWS Management Console 來建立叢集而收到錯誤。
-
選擇 Next (下一步)。
-
針對角色名稱 ,輸入 ecsInstanceRole
-
檢閱角色,然後選擇 Create role (建立角色)。
- AWS CLI
-
取代全部 user input
使用您自己的值。
-
建立稱為 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
-
ecsInstanceRole-profile
使用 create-instance-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許可
您與ECS容器執行個體搭配使用的 Amazon 容器執行個體角色必須具有下列 Amazon IAM的政策許可ECR。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:GetAuthorizationToken"
],
"Resource": "*"
}
]
}
如果您的容器執行個體使用 AmazonEC2ContainerServiceforEC2Role
受管政策,則您的角色具有適當的許可。若要檢查您的角色是否支援 Amazon ECR,請參閱 Amazon Elastic ECS Container Service 開發人員指南 IAM 中的 Amazon Container Instance Role。
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 唯讀存取。Replace (取代) 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政策以允許容器執行個體使用 CloudWatch Logs APIs,然後將該政策連接至 ecsInstanceRole
。
- AWS Management Console
-
使用JSON政策編輯器建立政策
登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/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:*:*:*"]
}
]
}
-
使用以下命令,使用IAM政策文件檔案建立JSON政策。
aws iam create-policy \
--policy-name cwlogspolicy
\
--policy-document file://instance-cw-logs.json
-
擷取您使用以下命令建立ARNIAM的政策。Replace (取代) cwlogspolicy
以及您建立的政策名稱。
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogsppolicy
`].Arn'
-
使用以下命令,使用政策 將政策連接至容器執行個體IAM角色ARN。
aws iam attach-role-policy \
--role-name ecsInstanceRole
\
--policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy