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 EC2 執行個體類型,以更高的 ENI 密度來啟動容器執行個體。當您使用此功能時,我們建議您建立 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 ,並在 https://https://console.aws.amazon.com/iam/ 開啟 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

所有使用者輸入取代為您自己的值。

  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. 使用 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" } }
  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 Logs 監控容器執行個體

監控容器執行個體許可

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

Amazon S3 唯讀存取

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 政策編輯器來建立政策
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 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. 使用以下命令,使用 JSON 政策文件檔案建立 IAM 政策。

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

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

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