

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

# 4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기
<a name="getting-started-create-iam-instance-profile"></a>

**참고**  
 Amazon ECS 또는 AWS Lambda 컴퓨팅 플랫폼를 사용하는 경우이 단계를 건너뜁니다.

Amazon EC2 인스턴스에는 애플리케이션이 저장되는 Amazon S3 버킷 또는 GitHub 리포지토리에 액세스할 수 있는 권한이 필요합니다. CodeDeploy와 호환 가능한 Amazon EC2 인스턴스를 시작하려면 추가 IAM 역할인 *인스턴스 프로파일*을 만들어야 합니다. 다음 지침은 Amazon EC2 인스턴스에 연결할 IAM 인스턴스 프로파일을 만드는 방법을 안내합니다. 이 역할은 애플리케이션이 저장되는 Amazon S3 버킷 또는 GitHub 리포지토리에 액세스할 수 있는 권한을 CodeDeploy 에이전트에 제공합니다.

 AWS CLI, IAM 콘솔 또는 IAM APIs.

**참고**  
IAM 인스턴스 프로파일은 Amazon EC2 인스턴스를 시작할 때 해당 인스턴스에 연결하거나 이전에 시작한 인스턴스에 연결할 수 있습니다. 자세한 내용은 [인스턴스 프로파일](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-instanceprofile.html)을 참조하세요.

**Topics**
+ [Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기(CLI)](#getting-started-create-iam-instance-profile-cli)
+ [Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기(콘솔)](#getting-started-create-iam-instance-profile-console)

## Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기(CLI)
<a name="getting-started-create-iam-instance-profile-cli"></a>

이 단계에서는 [CodeDeploy 시작하기](getting-started-codedeploy.md)의 처음 세 단계에 있는 지침을 이미 완료한 것으로 가정합니다.

1. 개발 머신에 `CodeDeployDemo-EC2-Trust.json`이라는 텍스트 파일을 만듭니다. 다음 콘텐츠를 붙여 넣어 Amazon EC2가 사용자를 대신하여 작업하도록 허용합니다.

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

****  

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

------

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

****  

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

------

1. 동일한 디렉터리에 `CodeDeployDemo-EC2-Permissions.json`이라는 텍스트 파일을 만듭니다. 다음 콘텐츠를 붙여 넣습니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```
**참고**  
Amazon EC2 인스턴스에서 액세스해야 하는 Amazon S3 버킷으로만 이 정책을 제한하는 것이 좋습니다. CodeDeploy 에이전트가 포함된 Amazon S3 버킷에 대한 액세스 권한을 제공해야 합니다. 그렇지 않으면 인스턴스에 CodeDeploy 에이전트를 설치 또는 업데이트할 때 오류가 발생할 수 있습니다. Amazon S3의 일부 CodeDeploy 리소스 키트 버킷에만 IAM 인스턴스 프로파일 액세스 권한을 부여하려면 다음 정책을 사용하되 액세스를 차단하려는 버킷 라인을 제거합니다.  

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::aws-codedeploy-us-east-2/*",
           "arn:aws:s3:::aws-codedeploy-us-east-1/*",
           "arn:aws:s3:::aws-codedeploy-us-west-1/*",
           "arn:aws:s3:::aws-codedeploy-us-west-2/*",
           "arn:aws:s3:::aws-codedeploy-ca-central-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-2/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-3/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-2/*",
           "arn:aws:s3:::aws-codedeploy-eu-north-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-2/*",
           "arn:aws:s3:::aws-codedeploy-il-central-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-east-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",        
           "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-2/*",
           "arn:aws:s3:::aws-codedeploy-me-central-1/*",
           "arn:aws:s3:::aws-codedeploy-me-south-1/*",
           "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
         ]
       }
     ]
   }
   ```
**참고**  
CodeDeploy와 함께 [IAM 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization) 또는 Amazon Virtual Private Cloud(VPC) 엔드포인트를 사용하는 경우 권한을 추가해야 합니다. 자세한 내용은 [Amazon Virtual Private Cloud에서 CodeDeploy 사용](https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints)을 참조하세요.

1. 동일한 디렉터리에서 **create-role** 명령을 호출하여 첫 번째 파일의 정보를 바탕으로 **CodeDeployDemo-EC2-Instance-Profile**이라는 IAM 역할을 생성하세요.
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   ```
   aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json
   ```

1. 동일한 디렉터리에서 **put-role-policy** 명령을 호출하여 두 번째 파일의 정보를 바탕으로 **CodeDeployDemo-EC2-Instance-Profile**이라는 역할을 제공하세요.
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   ```
   aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
   ```

1. **attach-role-policy**을(를) 호출하여 SSM이 CodeDeploy 에이전트를 설치할 수 있도록 Amazon EC2 Systems Manager 권한을 이 역할에 부여합니다. 명령줄을 사용하여 퍼블릭 Amazon S3 버킷에서 에이전트를 설치하려는 경우에는 이 정책이 필요하지 않습니다. 자세한 내용은 [CodeDeploy 에이전트 설치](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)를 참조하세요.

   ```
   aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile
   ```

1. **create-instance-profile** 명령을 호출한 후 **add-role-to-instance-profile** 명령을 호출하여 **CodeDeployDemo-EC2-Instance-Profile**이라는 IAM 인스턴스 프로파일을 생성하세요. 인스턴스 프로필을 사용하면 인스턴스가 처음 시작될 때 Amazon EC2가 Amazon EC2 인스턴스에 **CodeDeployDemo-EC2-Instance-Profile**이라는 IAM 역할을 전달할 수 있습니다.

   ```
   aws iam create-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile
   aws iam add-role-to-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile --role-name CodeDeployDemo-EC2-Instance-Profile
   ```

   IAM 인스턴스 프로파일의 이름을 가져와야 하는 경우 *AWS CLI 참조*의 [list-instance-profiles-for-role](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html)을 참조하세요.

이제 Amazon EC2 인스턴스에 연결할 IAM 인스턴스 프로파일을 생성하였습니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2의 IAM 역할](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)을 참조하세요.

## Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기(콘솔)
<a name="getting-started-create-iam-instance-profile-console"></a>

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

1. IAM 콘솔의 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택하세요.

1. **권한 지정** 페이지에서 **JSON**을 선택합니다.

1. 예제 `JSON` 코드를 제거합니다.

1. 다음 코드를 붙여넣습니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```
**참고**  
Amazon EC2 인스턴스에서 액세스해야 하는 Amazon S3 버킷을 대상으로만 이 정책 적용을 제한하는 것이 좋습니다. CodeDeploy 에이전트가 포함된 Amazon S3 버킷에 대한 액세스 권한을 제공해야 합니다. 그렇지 않으면 인스턴스에 CodeDeploy 에이전트를 설치 또는 업데이트할 때 오류가 발생할 수 있습니다. Amazon S3의 일부 CodeDeploy 리소스 키트 버킷에만 IAM 인스턴스 프로파일 액세스 권한을 부여하려면 다음 정책을 사용하되 액세스를 차단하려는 버킷 라인을 제거합니다.  

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::aws-codedeploy-us-east-2/*",
           "arn:aws:s3:::aws-codedeploy-us-east-1/*",
           "arn:aws:s3:::aws-codedeploy-us-west-1/*",
           "arn:aws:s3:::aws-codedeploy-us-west-2/*",
           "arn:aws:s3:::aws-codedeploy-ca-central-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-2/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-3/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-2/*",
           "arn:aws:s3:::aws-codedeploy-eu-north-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-2/*",
           "arn:aws:s3:::aws-codedeploy-il-central-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-east-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",        
           "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-2/*",
           "arn:aws:s3:::aws-codedeploy-me-central-1/*",
           "arn:aws:s3:::aws-codedeploy-me-south-1/*",
           "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
         ]
       }
     ]
   }
   ```
**참고**  
CodeDeploy와 함께 [IAM 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization) 또는 Amazon Virtual Private Cloud(VPC) 엔드포인트를 사용하는 경우 권한을 추가해야 합니다. 자세한 내용은 [Amazon Virtual Private Cloud에서 CodeDeploy 사용](https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints)을 참조하세요.

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

1. **검토 및 생성** 페이지에서 **정책 이름**에 **CodeDeployDemo-EC2-Permissions**를 입력합니다.

1.  (선택 사항) **설명**에 정책에 대한 설명을 입력합니다.

1. **정책 생성**을 선택합니다.

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

1. **사용 사례**에서 **EC2** 사용 사례를 선택합니다.

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

1.  정책 목록에서 방금 생성한 정책(**CodeDeployDemo-EC2-Permissions**) 옆의 확인란을 선택합니다. 필요한 경우 검색 상자를 사용하여 정책을 찾습니다.

1.  Systems Manager를 사용하여 CodeDeploy 에이전트를 설치하거나 구성하려면 **AmazonSSMManagedInstanceCore** 옆의 확인란을 선택합니다. 이 AWS 관리형 정책을 사용하면 인스턴스가 Systems Manager 서비스 핵심 기능을 사용할 수 있습니다. 필요한 경우 검색 상자를 사용하여 정책을 찾습니다. 명령줄을 사용하여 퍼블릭 Amazon S3 버킷에서 에이전트를 설치하려는 경우에는 이 정책이 필요하지 않습니다. 자세한 내용은 [CodeDeploy 에이전트 설치](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)를 참조하세요.

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

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

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

이제 Amazon EC2 인스턴스에 연결할 IAM 인스턴스 프로파일을 생성하였습니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2의 IAM 역할](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)을 참조하세요.