

# Amazon ECS CodeDeploy IAM 역할
<a name="codedeploy_IAM_role"></a>

Amazon ECS와 함께 CodeDeploy 블루/그린 배포 유형을 사용하기 전에 CodeDeploy 서비스는 사용자를 대신하여 Amazon ECS 서비스를 업데이트할 수 있는 권한이 필요합니다. 이러한 권한은 CodeDeploy IAM 역할(`ecsCodeDeployRole`)에 의해 제공됩니다.

**참고**  
사용자는 CodeDeploy를 사용할 권한도 필요합니다. 이러한 권한은 [필수 IAM 권한](deployment-type-bluegreen.md#deployment-type-bluegreen-IAM)에 설명되어 있습니다.

관리형 정책은 2가지가 있습니다. 자세한 내용은 *AWS 관리형 정책 참조 안내서*의 다음 중 하나를 참조하세요.
+  [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 Management Console ]

**CodeDeploy에 대한 서비스 역할을 생성하는 방법(IAM 콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. IAM 콘솔의 탐색 창에서 **역할**을 선택하고 **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에서 **AWS 서비스**를 선택합니다.

1. **서비스 또는 사용 사례**에서 **CodeDeploy**를 선택하고 **CodeDeploy - ECS** 사용 사례를 선택합니다.

1. **다음**을 선택합니다.

1. **권한 정책 연결** 섹션에서 **AWSCodeDeployRoleForECS** 정책이 선택되어 있는지 확인합니다.

1. **다음**을 선택합니다.

1.  **역할 이름**에 **ecsCodeDeployRole**을 입력합니다.

1. 역할을 검토한 다음 **역할 생성**을 선택합니다.

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

모든 *사용자 입력*을 사용자 정보로 바꿉니다.

1. CodeDeploy IAM 역할에 사용할 신뢰 정책이 포함된 `codedeploy-trust-policy.json`이라는 이름의 파일을 생성합니다.

------
#### [ 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 Management Console ]

**JSON 정책 편집기를 사용하여 정책을 생성하는 방법**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 에서 IAM 콘솔을 엽니다.

1. 왼쪽의 탐색 창에서 **정책**을 선택합니다.

   **정책**을 처음으로 선택하는 경우 **관리형 정책 소개** 페이지가 나타납니다. **시작**을 선택합니다.

1. 페이지 상단에서 **정책 생성**을 선택합니다.

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. **정책 생성**을 선택하고 새로운 정책을 저장합니다.

정책을 생성한 후 CodeDeploy 역할에 정책을 연결합니다. 정책을 역할에 연결하는 방법에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [역할 권한 업데이트](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html)를 참조하세요.

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

모든 *사용자 입력*을 사용자 정보로 바꿉니다.

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
   ```

------