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 API。如需受管政策的詳細資訊,請參閱 亚马逊 ContainerServicefor

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

建立容器執行個體角色

重要

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

您可手動建立角色並連接容器執行個體的受管 IAM 政策,讓 Amazon ECS 為日後推出的功能和改進新增許可。如有需要,請使用下列程序附加受管 IAM 政策。

AWS Management Console
建立彈性容器服務 (IAM 主控台) 的服務角色
  1. 登入 AWS Management Console 並開啟 IAM 主控台,網址為 https://console.aws.amazon.com/iam/

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

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

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

  5. 選擇下一步

  6. 許可政策部分中,確認已選取亞馬遜 ContainerServicefor EC2Role 政策。

    重要

    AmazonEC2 ContainerServicefor EC2Role 受管政策應附加至容器執行個體 IAM 角色,否則您將收到使用建立叢集的錯誤訊息。 AWS Management Console

  7. 選擇下一步

  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. 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 許可

您與容器執行個體搭配使用的 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 中存儲亞馬遜 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 使用手冊》中的〈修改角色權限原則 (主控台)

監視容器執行個體權

您必須先建立 IAM 政策,容器執行個體才能將 CloudWatch 日誌資料傳送至記錄檔,以允許容器執行個體使用 CloudWatch 記錄 API,然後您必須將該政策附加至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. 選擇下一步

    注意

    您可以隨時切換視覺化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==`cwlogsppolicy`].Arn'
  4. 使用下列命令,使用政策 ARN 將政策附加至容器執行個體 IAM 角色。

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