

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

# Amazon ECS CodeDeploy IAM 角色
<a name="codedeploy_IAM_role"></a>

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

**注意**  
使用者也需要許可來使用 CodeDeploy；[所需的 IAM 許可](deployment-type-bluegreen.md#deployment-type-bluegreen-IAM) 中描述了這些許可。

提供兩個受管政策。如需詳細資訊，請參閱 *AWS Managed Policy Reference Guide* 中的如下項目：
+  [AWSCodeDeployRoleForECS](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeDeployRoleForECS.html) – 授予 CodeDeploy 使用相關聯動作更新任何資源的許可。
+ [AWSCodeDeployRoleForECSLimited](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeDeployRoleForECSLimited.html) – 授予 CodeDeploy 更多的有限許可。

## 建立 CodeDeploy 角色
<a name="cd-iam-role-create"></a>

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

------
#### [ AWS 管理主控台 ]

**建立 CodeDeploy 的服務角色 (IAM 主控台)**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 對於 **Trusted entity type** (信任的實體類型)，請選擇 **AWS 服務**。

1. 在**服務或使用案例**欄位中選擇 **CodeDeploy**，然後選擇 **CodeDeploy – ECS** 使用案例。

1. 選擇**下一步**。

1. 在**連接許可政策**區段中，確保已選取 **AWSCodeDeployRoleForECS** 政策。

1. 選擇**下一步**。

1.  在**角色名稱**欄位中輸入 **ecsCodeDeployRole**。

1. 檢閱角色，然後選擇 **Create role** (建立角色)。

------
#### [ AWS CLI ]

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

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": ["codedeploy.amazonaws.com"]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 使用在上一個步驟中建立的信任政策，建立名為 `ecsCodedeployRole` 的 IAM 角色。

   ```
   aws iam create-role \
         --role-name ecsCodedeployRole \
         --assume-role-policy-document file://codedeploy-trust-policy.json
   ```

1. 將 `AWSCodeDeployRoleForECS` 或 `AWSCodeDeployRoleForECSLimited` 受管政策連接至 `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 角色作為政策。

### 任務執行角色許可
<a name="cd-iam-role-attach-policy"></a>

當服務中的任務需要任務執行角色時，您必須將每個任務執行角色或任務角色覆寫的 `iam:PassRole` 許可新增至 CodeDeploy 角色作為政策。如需詳細資訊，請參閱[Amazon ECS 任務執行 IAM 角色](task_execution_IAM_role.md)及[Amazon ECS 任務 IAM 角色](task-iam-roles.md)。然後，將該政策連接至 CodeDeploy 角色

建立政策

------
#### [ AWS 管理主控台 ]

**若要使用 JSON 政策編輯器來建立政策**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在左側的導覽窗格中，選擇 **Policies (政策)**。

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

1. 在頁面頂端，選擇 **Create policy (建立政策)**。

1. 在**政策編輯器**中，選擇 **JSON** 選項。

1. 輸入下列 JSON 政策文件：

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
           }
       ]
   }
   ```

1. 選擇**下一步**。
**注意**  
您可以隨時切換**視覺化**與 **JSON** 編輯器選項。不過，如果您進行變更或在**視覺化**編輯器中選擇**下一步**，IAM 就可能會調整您的政策結構，以便針對視覺化編輯器進行最佳化。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[調整政策結構](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure)。

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

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

建立政策後，請將政策連接至 CodeDeploy 角色。如需有關如何將政策連接至角色的資訊，請參閱 *AWS Identity and Access Management User Guide* 中的 [Update permissions for a role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html)。

------
#### [ AWS CLI ]

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

1. 建立稱為 `blue-green-iam-passrole.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"}
               }
           }
       ]
   }
   ```

------

1. 使用以下 命令，透過 JSON 政策文件檔案建立 IAM 政策。

   ```
   aws iam create-policy \
         --policy-name cdTaskExecutionPolicy \
         --policy-document file://blue-green-iam-passrole.json
   ```

1. 透過以下命令擷取您所建立 IAM 政策的 ARN。

   ```
   aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cdTaskExecutionPolicy`].Arn'
   ```

1. 使用以下命令，將政策連接至 CodeDeploy IAM 角色。

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

------