Amazon ECS CodeDeploy IAM 角色 - Amazon Elastic Container Service

Amazon ECS CodeDeploy IAM 角色

在您搭配使用 CodeDeploy 藍/綠部署類型與 Amazon ECS 之前,CodeDeploy 服務需要許可來代您更新 Amazon ECS 服務。這些許可由 CodeDeploy IAM 角色 (ecsCodeDeployRole) 提供。

注意

使用者也需要許可來使用 CodeDeploy;所需的 IAM 許可 中描述了這些許可。

提供兩個受管政策。如需詳細資訊,請參閱 AWS Managed Policy Reference Guide 中的如下項目:

建立 CodeDeploy 角色

您可以透過如下程序建立 Amazon ECS 的 CodeDeploy 角色

AWS Management Console
建立 CodeDeploy 的服務角色 (IAM 主控台)
  1. 登入 AWS Management Console,並前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

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

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

  4. 服務或使用案例欄位中選擇 CodeDeploy,然後選擇 CodeDeploy – ECS 使用案例。

  5. 選擇下一步

  6. 連接許可政策區段中,確保已選取 AWSCodeDeployRoleForECS 政策。

  7. 選擇下一步

  8. 角色名稱欄位中輸入 ecsCodeDeployRole

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

AWS CLI

將所有 user input 取代為自己的資訊。

  1. 建立名為 codedeploy-trust-policy.json 的檔案,其中包含用於 CodeDeploy IAM 角色的信任政策。

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": ["codedeploy.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }
  2. 使用在上一個步驟中建立的信任政策,建立名為 ecsCodedeployRole 的 IAM 角色。

    aws iam create-role \ --role-name ecsCodedeployRole \ --assume-role-policy-document file://codedeploy-trust-policy.json
  3. AWSCodeDeployRoleForECSAWSCodeDeployRoleForECSLimited 受管政策連接至 ecsTaskRole 角色。

    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS
    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECSLimited

當服務中的任務需要任務執行角色時,您必須將每個任務執行角色或任務角色覆寫的 iam:PassRole 許可新增至 CodeDeploy 角色作為政策。

任務執行角色許可

當服務中的任務需要任務執行角色時,您必須將每個任務執行角色或任務角色覆寫的 iam:PassRole 許可新增至 CodeDeploy 角色作為政策。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色Amazon ECS 任務 IAM 角色。然後,將該政策連接至 CodeDeploy 角色

建立政策

AWS Management Console
若要使用 JSON 政策編輯器來建立政策
  1. 登入 AWS Management Console,並開啟位於 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": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"] } ] }
  6. 選擇下一步

    注意

    您可以隨時切換視覺化JSON 編輯器選項。不過,如果您進行變更或在視覺化編輯器中選擇下一步,IAM 就可能會調整您的政策結構,以便針對視覺化編輯器進行最佳化。如需詳細資訊,請參閱 IAM 使用者指南中的調整政策結構

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

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

建立政策後,請將政策連接至 CodeDeploy 角色。如需有關如何將政策連接至角色的資訊,請參閱 AWS Identity and Access Management User Guide 中的 Update permissions for a role

AWS CLI

將所有 user input 取代為自己的資訊。

  1. 建立稱為 blue-green-iam-passrole.json 的檔案,其中具有以下內容。

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::*:role/code-deploy-role"], "Condition": { "StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"} } } ] }
  2. 使用以下命令,透過 JSON 政策文件檔案建立 IAM 政策。

    aws iam create-policy \ --policy-name cdTaskExecutionPolicy \ --policy-document file://blue-green-iam-passrole.json
  3. 透過以下命令擷取您所建立 IAM 政策的 ARN。

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cdTaskExecutionPolicy`].Arn'
  4. 使用以下命令,將政策連接至 CodeDeploy IAM 角色。

    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cdTaskExecutionPolicy