Amazon ECS容器執行個體IAM角色 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECS容器執行個體IAM角色

Amazon ECS容器執行個體,包括 Amazon EC2和外部執行個體,都會執行 Amazon ECS容器代理程式,並需要 IAM角色才能讓服務知道代理程式屬於您。啟動容器執行個體並將其註冊到叢集之前,您必須建立IAM角色,讓容器執行個體使用。角色會在您用來登入主控台或執行 AWS CLI 命令的帳戶中建立。

重要

如果您要向叢集註冊外部執行個體,您使用IAM的角色也需要 Systems Manager 許可。如需詳細資訊,請參閱Amazon ECS Anywhere IAM角色

Amazon ECS提供 AmazonEC2ContainerServiceforEC2Role受管IAM政策,其中包含使用完整 Amazon ECS功能集所需的許可。此受管政策可以連接至IAM角色,並與容器執行個體相關聯。或者,您可以在建立要使用的自訂政策時,使用受管政策作為指南。容器執行個體角色提供 Amazon ECS容器代理程式和 Docker 常駐程式代表您呼叫 AWS APIs所需的許可。如需受管政策的詳細資訊,請參閱 AmazonEC2ContainerServiceforEC2Role

Amazon ECS支援使用支援的 Amazon 執行個體類型啟動ENI密度更高的容器EC2執行個體。當您使用此功能時,建議您建立 2 個容器執行個體角色。為一個角色啟用awsvpcTrunking帳戶設定,並將該角色用於需要ENI中繼的任務。如需awsvpcTrunking帳戶設定的相關資訊,請參閱 使用帳戶設定存取 Amazon ECS功能

建立容器執行個體角色

重要

如果您要向叢集註冊外部執行個體,請參閱 Amazon ECS Anywhere IAM角色

您可以手動建立角色並連接容器執行個體的受管IAM政策,以允許 Amazon 在引入未來功能和增強功能時ECS新增許可。如有需要,請使用下列程序連接 受管IAM政策。

AWS Management Console
建立 Elastic Container Service 的服務角色 (IAM 主控台)
  1. 登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在IAM主控台的導覽窗格中,選擇角色 ,然後選擇建立角色

  3. 對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務

  4. 針對服務或使用案例 ,選擇彈性容器服務 ,然後選擇EC2彈性容器服務角色使用案例。

  5. 選擇 Next (下一步)

  6. 許可政策區段中,確認已選取 AmazonEC2ContainerServiceforEC2Role 政策。

    重要

    AmazonEC2ContainerServiceforEC2Role 受管政策應連接至容器執行個體IAM角色,否則您會使用 AWS Management Console 來建立叢集而收到錯誤。

  7. 選擇 Next (下一步)

  8. 針對角色名稱 ,輸入 ecsInstanceRole

  9. 檢閱角色,然後選擇 Create role (建立角色)。

AWS CLI

取代全部 user input 使用您自己的值。

  1. 建立稱為 instance-role-trust-policy.json 的檔案,其中具有以下內容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
  2. 使用以下命令,使用信任政策文件建立執行個體IAM角色。

    aws iam create-role \ --role-name ecsInstanceRole \ --assume-role-policy-document file://instance-role-trust-policy.json
  3. 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" } }
  4. ecsInstanceRole 角色新增至 ecsInstanceRole-profile 執行個體設定檔。

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole
  5. 使用下列命令將 AmazonEC2ContainerServiceRoleForEC2Role 受管政策連接至角色。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role \ --role-name ecsInstanceRole

建立角色之後,請為角色新增下列功能的其他許可。

功能 額外許可

Amazon ECR具有容器映像

Amazon ECR許可

讓 CloudWatch 日誌監控容器執行個體

監控容器執行個體許可

Amazon S3 儲存貯體中的主機組態檔案

Amazon S3 唯讀存取

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政策編輯器建立政策
  1. 登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在左側的導覽窗格中,選擇 Policies (政策)

    如果這是您第一次選擇 Policies (政策),將會顯示 Welcome to Managed Policies (歡迎使用受管政策) 頁面。選擇 Get Started (開始使用)

  3. 在頁面頂端,選擇 Create policy (建立政策)

  4. 政策編輯器區段中,選擇 JSON選項。

  5. 輸入下列JSON政策文件:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  6. 選擇 Next (下一步)

    注意

    您可以隨時在視覺化JSON編輯器選項之間切換。不過,如果您進行變更或在視覺效果編輯器中選擇下一步, IAM可能會重組您的政策,以將其最佳化為視覺效果編輯器。如需詳細資訊,請參閱 IAM 使用者指南 中的政策重組

  7. 檢視與建立頁面上,為您在建立的政策輸入政策名稱描述 (選用)。檢視此政策中定義的許可,來查看您的政策所授予的許可。

  8. 選擇 Create policy (建立政策) 儲存您的新政策。

建立政策之後,請將政策連接至容器執行個體角色。如需有關如何將政策連接至角色的資訊,請參閱 AWS Identity and Access Management 使用者指南 中的修改角色許可政策 (主控台)

AWS CLI
  1. 建立稱為 instance-cw-logs.json 的檔案,其中具有以下內容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": ["arn:aws:logs:*:*:*"] } ] }
  2. 使用以下命令,使用IAM政策文件檔案建立JSON政策。

    aws iam create-policy \ --policy-name cwlogspolicy \ --policy-document file://instance-cw-logs.json
  3. 擷取您使用以下命令建立ARNIAM的政策。Replace (取代) cwlogspolicy 以及您建立的政策名稱。

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cwlogsppolicy`].Arn'
  4. 使用以下命令,使用政策 將政策連接至容器執行個體IAM角色ARN。

    aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cwlogspolicy