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 主控台的導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

  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 開發人員指南》中的 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政策編輯器建立政策
  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. 擷取IAM您使用下列命令建立ARN的政策。cwlogspolicy 將 取代為您建立的政策名稱。

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

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