

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 2단계: CodeDeploy에 대한 서비스 역할 생성
<a name="getting-started-create-service-role"></a>

에서 AWS서비스 역할은 AWS 리소스에 액세스할 수 있도록 AWS 서비스에 권한을 부여하는 데 사용됩니다. 서비스 역할에 연결하는 정책에 따라 서비스에 액세스할 수 있는 리소스와 서비스가 해당 리소스로 수행할 수 있는 작업이 결정됩니다.

CodeDeploy에 대해 생성하는 서비스 역할에는 컴퓨팅 플랫폼에 필요한 권한을 부여해야 합니다. 둘 이상의 컴퓨팅 플랫폼에 배포하는 경우 플랫폼별로 서비스 역할을 하나씩 생성합니다. 권한을 추가하려면 다음 AWS 제공 정책 중 하나 이상을 연결합니다.

EC2/온프레미스 배포의 경우 **AWSCodeDeployRole** 정책을 연결합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.
+ Amazon EC2 Auto Scaling 그룹 이름으로 인스턴스의 태그를 읽거나 Amazon EC2 인스턴스를 식별합니다.
+ Amazon EC2 Auto Scaling 그룹, 수명 주기 후크 및 크기 조정 정책을 읽고, 생성하고, 업데이트하고, 삭제합니다.
+ Amazon SNS 주제로 정보를 게시합니다.
+ CloudWatch 경보에 관한 정보를 검색합니다.
+ Elastic Load Balancing을 읽고 업데이트합니다.
**참고**  
 시작 템플릿으로 Auto Scaling 그룹을 생성한 경우 다음 권한을 추가해야 합니다.  
 `ec2:RunInstances` 
 `ec2:CreateTags` 
 `iam:PassRole` 
자세한 내용은 [2단계: 서비스 역할 생성](#getting-started-create-service-role), [Auto Scaling 그룹을 위한 시작 템플릿 만들기](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) 및 *Amazon EC2 Auto Scaling 사용 설명서*의 [시작 템플릿 지원](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-launch-template-permissions.html)을 참조하세요.

Amazon ECS 배포에 대해 지원 서비스에 대한 전체 액세스 권한을 부여하려는 경우 **AWSCodeDeployRoleForECS** 정책을 연결합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.
+  Amazon ECS 작업 세트를 읽고, 업데이트하고, 삭제합니다.
+  Elastic Load Balancing 대상그룹, 리스너 및 규칙을 업데이트합니다.
+  AWS Lambda 함수를 호출합니다.
+  Amazon S3 버킷에 있는 개정 파일에 액세스합니다.
+  CloudWatch 경보에 관한 정보를 검색합니다.
+ Amazon SNS 주제로 정보를 게시합니다.

Amazon ECS 배포의 경우 서비스 지원을 위한 액세스를 제한하려면 **AWSCodeDeployRoleForECSLimited** 정책을 사용합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.
+  Amazon ECS 작업 세트를 읽고, 업데이트하고, 삭제합니다.
+  CloudWatch 경보에 관한 정보를 검색합니다.
+ Amazon SNS 주제로 정보를 게시합니다.

 AWS Lambda 배포의 경우 Amazon SNS에 게시를 허용하려면 **AWSCodeDeployRoleForLambda** 정책을 연결합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.
+  AWS Lambda 함수 및 별칭을 읽고 업데이트하고 호출합니다.
+  Amazon S3 버킷에 있는 개정 파일에 액세스합니다.
+  CloudWatch 경보에 관한 정보를 검색합니다.
+  Amazon SNS 주제로 정보를 게시합니다.

 AWS Lambda 배포의 경우 Amazon SNS에 대한 액세스를 제한하려면 **AWSCodeDeployRoleForLambdaLimited** 정책을 연결합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.
+  AWS Lambda 함수 및 별칭을 읽고 업데이트하고 호출합니다.
+  Amazon S3 버킷에 있는 개정 파일에 액세스합니다.
+  CloudWatch 경보에 관한 정보를 검색합니다.

서비스 역할을 설정하는 과정에서 액세스 권한을 부여하려는 엔드포인트를 지정하도록 신뢰 관계를 업데이트합니다.

IAM 콘솔 AWS CLI, 또는 IAM APIs.

**Topics**
+ [서비스 역할 생성(콘솔)](#getting-started-create-service-role-console)
+ [서비스 역할 생성(CLI)](#getting-started-create-service-role-cli)
+ [서비스 역할 ARN 확인(콘솔)](#getting-started-get-service-role-console)
+ [서비스 역할 ARN 확인(CLI)](#getting-started-get-service-role-cli)

## 서비스 역할 생성(콘솔)
<a name="getting-started-create-service-role-console"></a>

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

1. 탐색 창에서 **역할**을 선택한 후 **역할 생성**을 선택합니다.

1. **AWS  서비스**를 선택하고 **사용 사례**의 드롭다운 목록에서 **CodeDeploy**를 선택합니다.

1. 사용 사례를 선택합니다.
   +  EC2/온프레미스 배포의 경우 **CodeDeploy**를 선택합니다.
   +  AWS Lambda 배포의 경우 **Lambda용 CodeDeploy**를 선택합니다.
   +  Amazon ECS 배포의 경우 **CodeDeploy - ECS**를 선택합니다.

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

1. **권한 추가** 페이지에는 사용 사례에 대한 올바른 권한 정책이 표시됩니다. **다음**을 선택합니다.

1. **이름 지정, 검토 및 생성** 페이지의 **역할 이름**에 서비스 역할의 이름(예: **CodeDeployServiceRole**)을 입력한 후 **역할 생성**을 선택합니다.

   이 서비스 역할에 대한 설명을 **역할 설명(Role description)**에 입력할 수도 있습니다.

1. 이 서비스 역할이 현재 지원되는 모든 엔드포인트에 대한 액세스 권한을 갖도록 하려면 여기서 이 절차를 마칩니다.

   이 서비스 역할이 일부 엔드포인트에 액세스하지 못하도록 제한하려면 이 절차의 나머지 단계를 계속 진행합니다.

1. 역할 목록에서 방금 생성한 역할(`CodeDeployServiceRole`)을 검색하고 선택합니다.

1. **신뢰 관계** 탭을 선택합니다.

1. **신뢰 정책 편집**을 선택합니다.

   다음 정책은 지원되는 모든 엔드포인트에 액세스할 수 있는 권한을 서비스 역할에 부여합니다.

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

   서비스 역할에 지원되는 일부 엔드포인트에 대한 액세스 권한만 부여하려면 신뢰 정책 텍스트 상자의 콘텐츠를 다음 정책으로 바꿉니다. 액세스를 방지하려는 엔드포인트 행을 제거한 후, **정책 업데이트**를 선택합니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       
                       "codedeploy.us-east-1.amazonaws.com",
                       "codedeploy.us-east-2.amazonaws.com",
                       "codedeploy.us-west-1.amazonaws.com",
                       "codedeploy.us-west-2.amazonaws.com",
                       "codedeploy.ca-central-1.amazonaws.com",
                       "codedeploy.ap-east-1.amazonaws.com",                  
                       "codedeploy.ap-northeast-1.amazonaws.com",
                       "codedeploy.ap-northeast-2.amazonaws.com",
                       "codedeploy.ap-northeast-3.amazonaws.com",
                       "codedeploy.ap-southeast-1.amazonaws.com",
                       "codedeploy.ap-southeast-2.amazonaws.com",
                       "codedeploy.ap-southeast-3.amazonaws.com",
                       "codedeploy.ap-southeast-4.amazonaws.com",
                       "codedeploy.ap-south-1.amazonaws.com",
                       "codedeploy.ap-south-2.amazonaws.com",
                       "codedeploy.ca-central-1.amazonaws.com",
                       "codedeploy.eu-west-1.amazonaws.com",
                       "codedeploy.eu-west-2.amazonaws.com",
                       "codedeploy.eu-west-3.amazonaws.com",
                       "codedeploy.eu-central-1.amazonaws.com",
                       "codedeploy.eu-central-2.amazonaws.com",
                       "codedeploy.eu-north-1.amazonaws.com",
                       "codedeploy.eu-south-1.amazonaws.com",
                       "codedeploy.eu-south-2.amazonaws.com",
                       "codedeploy.il-central-1.amazonaws.com",
                       "codedeploy.me-central-1.amazonaws.com",
                       "codedeploy.me-south-1.amazonaws.com",
                       "codedeploy.sa-east-1.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

서비스 역할 생성에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 권한을 위임할 역할 생성을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-creatingrole-service.html).

## 서비스 역할 생성(CLI)
<a name="getting-started-create-service-role-cli"></a>

1. 개발 머신에서 텍스트 파일을 작성합니다(예: `CodeDeployDemo-Trust.json`). 이 파일은 사용자를 대신해 CodeDeploy가 작동하도록 허용하는 데 사용됩니다.

   다음 중 하나를 수행하세요.
   + 지원되는 모든 AWS 리전에 대한 액세스 권한을 부여하려면 파일에 다음 콘텐츠를 저장합니다.

     ```
     {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": [
                         "codedeploy.amazonaws.com"
                     ]
                 },
                 "Action": "sts:AssumeRole"
             }
         ]
     }
     ```
   + 지원되는 일부 리전에만 액세스를 허용하려면, 파일에 다음 내용을 입력한 후 액세스를 제한할 리전 행을 제거합니다.

     ```
     {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": [
                         
                         "codedeploy.us-east-1.amazonaws.com",
                         "codedeploy.us-east-2.amazonaws.com",
                         "codedeploy.us-west-1.amazonaws.com",
                         "codedeploy.us-west-2.amazonaws.com",
                         "codedeploy.ca-central-1.amazonaws.com",
                         "codedeploy.ap-east-1.amazonaws.com",                  
                         "codedeploy.ap-northeast-1.amazonaws.com",
                         "codedeploy.ap-northeast-2.amazonaws.com",
                         "codedeploy.ap-northeast-3.amazonaws.com",
                         "codedeploy.ap-southeast-1.amazonaws.com",
                         "codedeploy.ap-southeast-2.amazonaws.com",
                         "codedeploy.ap-southeast-3.amazonaws.com",
                         "codedeploy.ap-southeast-4.amazonaws.com",
                         "codedeploy.ap-south-1.amazonaws.com",
                         "codedeploy.ap-south-2.amazonaws.com",
                         "codedeploy.ca-central-1.amazonaws.com",
                         "codedeploy.eu-west-1.amazonaws.com",
                         "codedeploy.eu-west-2.amazonaws.com",
                         "codedeploy.eu-west-3.amazonaws.com",
                         "codedeploy.eu-central-1.amazonaws.com",
                         "codedeploy.eu-central-2.amazonaws.com",
                         "codedeploy.eu-north-1.amazonaws.com",
                         "codedeploy.eu-south-1.amazonaws.com",
                         "codedeploy.eu-south-2.amazonaws.com",
                         "codedeploy.il-central-1.amazonaws.com",
                         "codedeploy.me-central-1.amazonaws.com",
                         "codedeploy.me-south-1.amazonaws.com",
                         "codedeploy.sa-east-1.amazonaws.com"
                     ]
                 },
                 "Action": "sts:AssumeRole"
             }
         ]
     }
     ```
**참고**  
목록에서 마지막 엔드포인트 뒤에는 쉼표를 사용하지 마세요.

1. 동일한 디렉터리에서 **create-role** 명령을 호출하여 방금 만든 텍스트 파일의 정보를 바탕으로 **CodeDeployServiceRole**이라는 서비스 역할을 만듭니다.

   ```
   aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
   ```
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   명령의 출력에서 `Arn` 객체 아래의 `Role` 항목 값을 적어 둡니다. 이 값은 나중에 배포 그룹을 만들 때 필요합니다. 값을 잊어버린 경우, [서비스 역할 ARN 확인(CLI)](#getting-started-get-service-role-cli)의 지침을 따릅니다.

1. 사용하는 관리형 정책은 컴퓨팅 플랫폼에 따라 다릅니다.
   + EC2/온프레미스 컴퓨팅 플랫폼에 배포하는 경우:

     **attach-role-policy** 명령을 호출하여 **CodeDeployServiceRole**이라는 서비스 역할에 **AWSCodeDeployRole**이라는 IAM 관리형 정책에 기반한 권한을 부여합니다. 예제:

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
     ```
   +  AWS Lambda 컴퓨팅 플랫폼에 배포하는 경우:

     **attach-role-policy** 명령을 호출하여 **CodeDeployServiceRole**이라는 서비스 역할에 **AWSCodeDeployRoleForLambda** 또는 **AWSCodeDeployRoleForLambdaLimited**라는 IAM 관리형 정책에 기반한 권한을 부여합니다. 예:

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
     ```
   + Amazon ECS 컴퓨팅 플랫폼에 배포하는 경우:

     **attach-role-policy** 명령을 호출하여 **CodeDeployServiceRole**이라는 서비스 역할에 **AWSCodeDeployRoleForECS** 또는 **AWSCodeDeployRoleForECSLimited**라는 IAM 관리형 정책에 기반한 권한을 부여합니다. 예:

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS
     ```

서비스 역할 생성에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 대한 역할 생성을](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-xacct.html) 참조하세요.

## 서비스 역할 ARN 확인(콘솔)
<a name="getting-started-get-service-role-console"></a>

IAM 콘솔을 사용하여 서비스 역할의 ARN을 확인하려면:

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

1. 탐색 창에서 **역할**을 선택합니다.

1. **필터** 상자에 **CodeDeployServiceRole**을 입력한 후 Enter 키를 누릅니다.

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

1. **역할 ARN** 필드의 값을 기록해 둡니다.

## 서비스 역할 ARN 확인(CLI)
<a name="getting-started-get-service-role-cli"></a>

 AWS CLI 를 사용하여 서비스 역할의 ARN을 가져오려면 라는 서비스 역할에 대해 **get-role** 명령을 호출합니다**CodeDeployServiceRole**.

```
aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text
```

반환되는 값은 서비스 역할의 ARN입니다.