本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 主控台的導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)。
-
對於 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 開發人員指南》中的 Amazon Container Instance IAM 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 唯讀存取。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 並在 開啟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
-
擷取IAM您使用下列命令建立ARN的政策。cwlogspolicy
將 取代為您建立的政策名稱。
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogspolicy
`].Arn'
-
使用下列命令,使用政策 將政策連接至容器執行個體IAM角色ARN。
aws iam attach-role-policy \
--role-name ecsInstanceRole
\
--policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy