

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

# CodeDeploy용 인스턴스 작업
<a name="instances"></a>

CodeDeploy는 Amazon Linux, Ubuntu Server, Red Hat Enterprise Linux(RHEL) 및 Windows Server를 실행하는 인스턴스에 대한 배포를 지원합니다.

CodeDeploy를 사용하여 Amazon EC2 인스턴스와 온프레미스 인스턴스 모두에 배포할 수 있습니다. 온프레미스 인스턴스는 CodeDeploy 에이전트를 실행하고 퍼블릭 AWS 서비스 엔드포인트에 연결할 수 있는 Amazon EC2 인스턴스가 아닌 모든 물리적 디바이스입니다. CodeDeploy를 사용하여 애플리케이션을 클라우드의 Amazon EC2 인스턴스와 사무실의 데스크톱 PC 또는 자체 데이터 센터의 서버에 동시에 배포할 수 있습니다.

## Amazon EC2 인스턴스와 온프레미스 인스턴스 비교
<a name="instances-comparison"></a>

다음 표에서는 Amazon EC2 인스턴스 및 온프레미스 인스턴스를 비교합니다.


| **Subject** | **Amazon EC2 인스턴스** | **온프레미스 인스턴스** | 
| --- | --- | --- | 
|  인스턴스에서 실행 중인 운영 체제와 호환되는 CodeDeploy 에이전트 버전을 설치 및 실행해야 합니다.  | 예 |  예  | 
|  인스턴스가 CodeDeploy에 연결할 수 있어야 합니다.  |  예  |  예  | 
|  IAM 인스턴스 프로파일을 인스턴스에 연결해야 합니다. IAM 인스턴스 프로파일에는 CodeDeploy 배포에 참여할 수 있는 권한이 있어야 합니다. 자세한 내용은 [4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기](getting-started-create-iam-instance-profile.md) 단원을 참조하세요.  |  예  |  아니요  | 
|  인스턴스를 인증하고 등록하려면 다음 중 하나를 수행해야 합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/instances.html)  |  아니요  |  예  | 
|  각 인스턴스에 배포하려면 먼저 CodeDeploy에 각 인스턴스를 등록해야 합니다.  |  아니요  |  예  | 
|  CodeDeploy가 인스턴스에 배포할 수 있으려면 먼저 각 인스턴스에 태그를 지정해야 합니다.  |  예  |  예  | 
|  CodeDeploy 배포의 일부로 Amazon EC2 Auto Scaling 및 Elastic Load Balancing 시나리오에 참여할 수 있습니다.  |  예  |  아니요  | 
|  Amazon S3 버킷 및 GitHub 리포지토리에서 배포할 수 있습니다.  |  예  |  예  | 
|  배포 또는 인스턴스에서 지정된 이벤트가 발생할 때 SMS 또는 이메일 알림을 보내도록 요청하는 트리거를 지원할 수 있습니다.  |  예  |  예  | 
|  연결된 배포에 대해 요금이 청구될 수 있습니다.  |  아니요  |  예  | 

## CodeDeploy에 대한 인스턴스 작업
<a name="instances-task-list"></a>

배포에 사용할 인스턴스를 시작하거나 구성하려면 다음 지침 중에서 선택합니다.


|  |  | 
| --- |--- |
|  새 Amazon Linux 또는 Windows Server Amazon EC2 인스턴스를 시작하려고 합니다.  |  최소한의 작업으로 Amazon EC2 인스턴스를 시작하려면 [CodeDeploy용 Amazon EC2 인스턴스 생성(CloudFormation 템플릿)](instances-ec2-create-cloudformation-template.md) 단원을 참조하세요. 주로 사용자가 직접 Amazon EC2 인스턴스를 시작하려면 [CodeDeploy용 Amazon EC2 인스턴스 생성(AWS CLI 또는 Amazon EC2 콘솔)](instances-ec2-create.md) 단원을 참조하세요.  | 
|  새로운 Ubuntu Server 또는 RHEL Amazon EC2 인스턴스를 시작하려고 합니다.  |  [CodeDeploy용 Amazon EC2 인스턴스 생성(AWS CLI 또는 Amazon EC2 콘솔)](instances-ec2-create.md)을(를) 참조하세요.  | 
| Amazon Linux, Windows Server, Ubuntu Server 또는 RHEL Amazon EC2 인스턴스를 구성하려고 합니다. | [CodeDeploy 작업을 위한 Amazon EC2 인스턴스 구성](instances-ec2-configure.md)을(를) 참조하세요. | 
| Windows 서버, Ubuntu Server 또는 RHEL 온프레미스 인스턴스(Amazon EC2 인스턴스가 아닌 물리적 디바이스)를 구성하려고 합니다. | [CodeDeploy용 온프레미스 인스턴스 작업](instances-on-premises.md)을(를) 참조하세요. | 
| CodeDeploy가 블루/그린 배포 중에 대체 인스턴스 집합을 프로비저닝하기를 원합니다. | [CodeDeploy에서 배포 작업](deployments.md)을(를) 참조하세요. | 

Amazon EC2 Auto Scaling 그룹에서 Amazon EC2 인스턴스를 준비하려면 몇 가지 추가 단계를 수행해야 합니다. 자세한 내용은 [Amazon EC2 Auto Scaling과 CodeDeploy 통합](integrations-aws-auto-scaling.md) 단원을 참조하십시오.

**주제**
+ [Tagging Instances for Deployments](instances-tagging.md)
+ [Working with Amazon EC2 Instances](instances-ec2.md)
+ [Working with On-Premises Instances](instances-on-premises.md)
+ [View Instance Details](instances-view-details.md)
+ [Instance Health](instances-health.md)

# CodeDeploy에서 배포 그룹에 대한 인스턴스에 태그 지정
<a name="instances-tagging"></a>

태그를 사용하여 각 리소스에 고유의 메타데이터를 할당하면 Amazon EC2 인스턴스 및 온프레미스 인스턴스를 손쉽게 관리할 수 있습니다. 태그를 사용하면 인스턴스를 다양한 방식(예: 용도, 소유자 또는 환경을 기준으로)으로 분류할 수 있습니다. 이는 인스턴스가 많을 때 유용합니다. 인스턴스에 할당한 태그를 기준으로 인스턴스 또는 인스턴스 그룹을 손쉽게 식별할 수 있습니다. 각 태그는 사용자가 정의하는 키와 선택적 값으로 구성됩니다. 자세한 내용은 [Amazon EC2 리소스에 태그 지정](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)을 참조하세요.

CodeDeploy 배포 그룹에 포함시킬 인스턴스를 지정하려면 하나 이상의 *태그 그룹*에서 태그를 지정합니다. 태그 기준을 충족하는 인스턴스는 해당 배포 그룹에 대한 배포가 만들어질 때 최신 애플리케이션 개정이 설치된 인스턴스입니다.

**참고**  
배포 그룹에 Amazon EC2 Auto Scaling 그룹을 포함시킬 수도 있지만, 인스턴스에 적용된 태그가 아닌 이름으로 식별됩니다. 자세한 내용은 [Amazon EC2 Auto Scaling과 CodeDeploy 통합](integrations-aws-auto-scaling.md) 단원을 참조하세요.

배포 그룹의 인스턴스 기준은 한 태그 그룹의 태그 한 개만큼 단순하거나, 최대 세 태그 그룹의 각 10개의 태그만큼 복잡할 수도 있습니다.

한 태그 그룹을 사용하는 경우 그룹의 하나 이상의 태그로 식별되는 모든 인스턴스가 배포 그룹에 포함됩니다. 여러 태그 그룹을 사용하는 경우 *각* 태그 그룹의 하나 이상의 태그로 식별되는 인스턴스만 포함됩니다.

다음 예에서는 태그와 태그 그룹을 사용하여 배포 그룹에 대한 인스턴스를 선택하는 방법을 보여 줍니다.

**Topics**
+ [예 1: 한 태그 그룹, 한 태그](#instances-tagging-example-1)
+ [예 2: 한 태그 그룹, 여러 태그](#instances-tagging-example-2)
+ [예 3: 여러 태그 그룹, 한 태그](#instances-tagging-example-3)
+ [예 4: 여러 태그 그룹, 여러 태그](#instances-tagging-example-4)

## 예 1: 한 태그 그룹, 한 태그
<a name="instances-tagging-example-1"></a>

한 태그 그룹에서 한 태그를 지정할 수 있습니다.


**태그 그룹 1**  

| Key(키) | 값 | 
| --- | --- | 
| 이름 | AppVersion-ABC | 

`Name=AppVersion-ABC`로 태그 지정된 각 인스턴스는 다른 태그가 적용되었을지라도 배포 그룹의 일부입니다.

CodeDeploy 콘솔 설정 보기: 

![\[CodeDeploy 콘솔에 태그가 하나인 태그 그룹 하나가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/images/TaggingExample1-polaris.png)


JSON 구조:

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Name",
                  "Value": "AppVersion-ABC"
               }
            ]
         ]
      },
```

## 예 2: 한 태그 그룹, 여러 태그
<a name="instances-tagging-example-2"></a>

한 태그 그룹에서 여러 태그를 지정할 수도 있습니다.


**태그 그룹 1**  

| Key(키) | 값 | 
| --- | --- | 
| 리전 | North | 
| 리전 | South | 
| 리전 | East | 

이러한 세 개의 태그 중 하나로 태그 지정된 인스턴스는 다른 태그가 적용되었을지라도 배포 그룹의 일부입니다. 예를 들어, `Region=West`로 태그가 지정된 인스턴스는 배포 그룹에 포함되지 않습니다.

CodeDeploy 콘솔 설정 보기: 

![\[CodeDeploy 콘솔에 태그가 세 개인 태그 그룹 하나가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/images/TaggingExample2-polaris.png)


JSON 구조:

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "North"
               },
                              { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "South"
               },
                              { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "East"
               }
            ]
         ]
      },
```

## 예 3: 여러 태그 그룹, 한 태그
<a name="instances-tagging-example-3"></a>

각각에 키-값 페어 한 개가 있는 여러 태그 그룹 세트를 사용하여 배포 그룹의 인스턴스에 대한 기준을 지정할 수도 있습니다. 배포 그룹에서 여러 태그 그룹을 사용하는 경우 모든 태그 그룹으로 식별되는 인스턴스만 배포 그룹에 포함됩니다.


**태그 그룹 1**  

| Key(키) | 값 | 
| --- | --- | 
| 이름 | AppVersion-ABC | 


**태그 그룹 2**  

| Key(키) | 값 | 
| --- | --- | 
| 리전 | North | 


**태그 그룹 3**  

| Key(키) | 값 | 
| --- | --- | 
| Type | t2.medium | 

여러 리전에 `Name=AppVersion-ABC`로 태그 지정된 다양한 인스턴스 유형이 있을 수 있지만, 이 예에서는 `Region=North` 및 `Type=t2.medium`으로도 태그 지정된 인스턴스만 배포 그룹의 일부입니다.

CodeDeploy 콘솔 설정 보기: 

![\[CodeDeploy 콘솔에 태그가 각각 하나인 태그 그룹 세 개가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/images/TaggingExample3-polaris.png)


JSON 구조:

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Name",
                  "Value": "AppVersion-ABC"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "North"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Type",
                  "Value": "t2.medium"
               }
            ],
         ]
      },
```

## 예 4: 여러 태그 그룹, 여러 태그
<a name="instances-tagging-example-4"></a>

하나 이상의 그룹에서 여러 태그가 있는 여러 태그 그룹을 사용하는 경우, 인스턴스는 각 그룹의 태그 중 적어도 하나와 일치해야 합니다.


**태그 그룹 1**  

| Key(키) | 값 | 
| --- | --- | 
| 환경 | 베타 | 
| 환경 | Staging | 


**태그 그룹 2**  

| Key(키) | 값 | 
| --- | --- | 
| 리전 | North | 
| 리전 | South | 
| 리전 | East | 


**태그 그룹 3**  

| Key(키) | 값 | 
| --- | --- | 
| Type | t2.medium | 
| Type | t2.large | 

이 예에서 배포 그룹에 포함되려면 인스턴스는 (1) `Environment=Beta` 또는 `Environment=Staging`, (2) `Region=North`, `Region=South` 또는 `Region=East`, (3) `Type=t2.medium` 또는 `Type=t2.large`로 태그 지정되어야 합니다.

예를 들어, 다음 태그 그룹이 있는 인스턴스는 배포 그룹에 포함되는 *인스턴스입니다*.
+ `Environment=Beta`, `Region=North`,`Type=t2.medium`
+ `Environment=Staging`,`Region=East`,`Type=t2.large`
+ `Environment=Staging`,`Region=South`,`Type=t2.large`

다음 태그 그룹이 있는 인스턴스는 배포 그룹에 포함되지 *않습니다*. **강조 표시된** 키 값으로 인해 인스턴스가 제외됩니다.
+ `Environment=Beta`, 리전=**West**,`Type=t2.medium`
+ `Environment=Staging`, `Region=East`, 유형=**t2.micro**
+ 환경=**Production**,`Region=South`,`Type=t2.large`

CodeDeploy 콘솔 설정 보기: 

![\[CodeDeploy 콘솔에 태그가 각각 여러 개인 태그 그룹 세 개가 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/images/TaggingExample4-polaris.png)


JSON 구조:

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Environment",
                  "Value": "Beta"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Environment",
                  "Value": "Staging"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "North"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "South"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "East"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Type",
                  "Value": "t2.medium"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Type",
                  "Value": "t2.large"
               }
            ],
         ]
      },
```

# CodeDeploy용 Amazon EC2 인스턴스 작업
<a name="instances-ec2"></a>

Amazon EC2 인스턴스는 Amazon Elastic Compute Cloud를 사용하여 생성하고 구성하는 가상 컴퓨팅 환경입니다. Amazon EC2는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하여 CodeDeploy 배포에 필요한 만큼 많거나 적은 수의 가상 서버를 시작할 수 있습니다.

Amazon EC2에 대한 자세한 내용은 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)를 참조하세요.

다음 지침에서는 CodeDeploy 배포에 사용하도록 구성된 Amazon EC2 인스턴스를 생성하고 구성하는 방법을 안내합니다.

**Topics**
+ [CodeDeploy를 위한 Amazon EC2 인스턴스 생성](instances-ec2-create.md)
+ [Amazon EC2 인스턴스 생성(CloudFormation 템플릿)](instances-ec2-create-cloudformation-template.md)
+ [Amazon EC2 인스턴스 구성](instances-ec2-configure.md)

# CodeDeploy용 Amazon EC2 인스턴스 생성(AWS CLI 또는 Amazon EC2 콘솔)
<a name="instances-ec2-create"></a>

다음 지침은 CodeDeploy 배포에 사용하도록 구성된 새 Amazon EC2 인스턴스를 시작하는 방법을 안내합니다.

 CloudFormation 템플릿을 사용하여 CodeDeploy 배포에 사용하도록 이미 구성된 Amazon Linux 또는 Windows Server를 실행하는 Amazon EC2 인스턴스를 시작할 수 있습니다. Ubuntu Server 또는 Red Hat Enterprise Linux(RHEL)를 실행하는 Amazon EC2 인스턴스에는 CloudFormation 템플릿을 제공하지 않습니다. 템플릿 사용 대신 적용할 수 있는 방법은 [CodeDeploy용 인스턴스 작업](instances.md) 단원을 참조하세요.

Amazon EC2 콘솔 AWS CLI또는 Amazon EC2 APIs를 사용하여 Amazon EC2 인스턴스를 시작할 수 있습니다.

## Amazon EC2 인스턴스 시작(콘솔)
<a name="instances-ec2-create-console"></a>

### 사전 조건
<a name="instances-ec2-create-console-prerequisites"></a>

아직 수행하지 않은 경우의 지침에 따라 [CodeDeploy 시작하기](getting-started-codedeploy.md)를 설정 및 구성 AWS CLI 하고 IAM 인스턴스 프로파일을 생성합니다.

### Amazon EC2 인스턴스 시작하기
<a name="instances-ec2-create-console-steps"></a>

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

1. 탐색 창에서 **인스턴스**를 선택한 후 **인스턴스 시작**을 선택합니다.

1. **1단계: Amazon Machine Image(AMI) 선택** 페이지의 **빠른 시작** 탭에서 사용하려는 운영 체제와 버전을 찾은 다음 **선택**을 선택합니다. CodeDeploy에서 지원하는 Amazon EC2 AMI 운영 체제를 선택해야 합니다. 자세한 내용은 [CodeDeploy 에이전트에서 지원하는 운영 체제](codedeploy-agent.md#codedeploy-agent-supported-operating-systems) 단원을 참조하십시오.

1. **2단계: 인스턴스 유형 선택(Step 2: Choose an Instance Type)** 페이지에서 사용 가능한 Amazon EC2 인스턴스 유형을 선택한 후 **다음: 인스턴스 세부 정보 구성(Next: Configure Instance Details)**을 선택합니다.

1. **3단계: 인스턴스 세부 정보 구성(Step 3: Configure Instance Details)** 페이지의 **IAM 역할(IAM role)** 목록에서 [4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기](getting-started-create-iam-instance-profile.md)에서 생성한 IAM 인스턴스 역할을 선택합니다. 제안된 역할 이름을 사용한 경우 **CodeDeployDemo-EC2-Instance-Profile**을 선택합니다. 고유의 역할 이름을 생성한 경우 해당 이름을 선택합니다.
**참고**  
기본 Virtual Private Cloud(VPC)가 **Network**(네트워크) 목록에 표시되지 않는 경우 Amazon VPC 및 서브넷을 선택하거나 생성해야 합니다. **새 VPC 생성**이나 **새 서브넷 생성** 또는 둘 다 선택합니다. 자세한 내용은 [VPC 및 서브넷](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)을 참조하세요.

1. **다음: 스토리지 추가**를 선택합니다.

1. **4단계: 스토리지 추가** 페이지의 설정을 그대로 두고 **다음: 태그 추가**를 선택합니다.

1. **5단계: 태그 추가** 페이지에서 **태그 추가**를 선택합니다.

1.  **키** 상자에 **Name**을 입력합니다. **값** 상자에 **CodeDeployDemo**를 입력합니다.
**중요**  
**키** 및 **값** 상자의 내용은 대/소문자를 구분합니다.

1. **다음: 보안 그룹 구성(Next: Configure Security Group)**을 선택합니다.

1. **6단계: 보안 그룹 구성** 페이지에서 **새 보안 그룹 생성** 옵션을 선택된 채로 둡니다.

   SSH 역할 기본값은 Amazon Linux, Ubuntu Server 또는 RHEL을 실행하는 Amazon EC2 인스턴스로 구성되어 있습니다. RDP 역할 기본값은 Windows Server를 실행하는 Amazon EC2 인스턴스로 구성되어 있습니다.

1. HTTP 포트를 열려면 **규칙 추가** 버튼을 선택하고 **유형** 드롭다운 목록에서 **HTTP**를 선택합니다. **소스**의 기본값 **사용자 지정 0.0.0.0/0**을 그대로 두고, **검토 및 시작**을 선택합니다.
**참고**  
프로덕션 환경에서는 **위치 무관 0.0.0.0/0(Anywhere 0.0.0.0/0)**을 지정하는 대신 SSH, RDP 및 HTTP 포트에 대한 액세스를 제한하는 것이 좋습니다. CodeDeploy는 무제한 포트 액세스와 HTTP 액세스가 필요하지 않습니다. 자세한 내용은 [Amazon EC2 인스턴스의 보안 유지를 위한 팁](https://aws.amazon.com/articles/1233)을 참조하세요.

   **범용(SSD)에서 부팅** 대화 상자가 표시되면 해당 지침을 따른 후 **다음**을 선택합니다.

1. **7단계: 인스턴스 시작 검토** 페이지의 설정을 그대로 두고 **시작**을 선택합니다.

1. **기존 키 페어 선택 또는 새 키 페어 생성** 대화 상자에서 **기존 키 페어 선택** 또는 **새 키 페어 생성**을 선택합니다. Amazon EC2 인스턴스 키 페어를 이미 구성했다면 여기에서 선택할 수 있습니다.

   아직 Amazon EC2 인스턴스 키 페어가 없다면 **새 키 페어 생성(Create a new key pair)**을 선택하고 식별 가능한 이름을 지정합니다. **키 페어 다운로드(Download Key Pair)**를 선택하여 컴퓨터에 Amazon EC2 인스턴스 키 페어를 다운로드합니다.
**중요**  
SSH 또는 RDP를 사용하여 Amazon EC2 인스턴스에 액세스하려면 키 페어가 있어야 합니다.

1. **인스턴스 시작(Launch Instances)**을 선택합니다.

1. Amazon EC2 인스턴스의 ID를 선택합니다. 인스턴스가 시작되어 모든 검사를 통과할 때까지 기다리세요.

### CodeDeploy 에이전트 설치
<a name="instances-ec2-create-console-agent"></a>

CodeDeploy 배포에서 CodeDeploy 에이전트를 사용하기 전에 Amazon EC2 인스턴스에 에이전트를 설치해야 합니다. 자세한 내용은 [CodeDeploy 에이전트 설치](codedeploy-agent-operations-install.md) 단원을 참조하십시오.

**참고**  
콘솔에서 배포 그룹을 생성할 때 CodeDeploy 에이전트의 자동 설치 및 업데이트를 구성할 수 있습니다.

## Amazon EC2 인스턴스 시작하기(CLI)
<a name="instances-ec2-create-cli"></a>

### 사전 조건
<a name="instances-ec2-create-cli-prerequisites"></a>

아직 수행하지 않은 경우의 지침에 따라 [CodeDeploy 시작하기](getting-started-codedeploy.md)를 설정 및 구성 AWS CLI 하고 IAM 인스턴스 프로파일을 생성합니다.

### Amazon EC2 인스턴스 시작하기
<a name="instances-ec2-create-cli-steps"></a>

1. **Windows Server만 해당**: Windows Server를 실행하여 Amazon EC2 인스턴스를 만드는 경우 **create-security-group** 및 **authorize-security-group-ingress** 명령을 호출하여 RDP 액세스(기본값으로 허용되지 않음) 또는 HTTP 액세스를 허용하는 보안 그룹을 만듭니다. 예를 들어 *CodeDeployDemo-Windows-Security-Group*이라는 보안 그룹을 만들려면 다음 명령을 한 번에 하나씩 실행합니다.

   ```
   aws ec2 create-security-group --group-name CodeDeployDemo-Windows-Security-Group --description "For launching Windows Server images for use with CodeDeploy"
   ```

   ```
   aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 3389 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 3389
   ```

   ```
   aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 80 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 80
   ```
**참고**  
데모용으로 이 명령은 포트 3389를 통한 RDP 또는 포트 80을 통한 HTTP에 대한 무제한 액세스를 허용하는 보안 그룹을 만듭니다. RDP 및 HTTP 포트에 대한 액세스를 제한하는 것을 모범 사례로 권장합니다. CodeDeploy는 무제한 포트 액세스와 HTTP 액세스가 필요하지 않습니다. 자세한 내용은 [Amazon EC2 인스턴스의 보안 유지를 위한 팁](https://aws.amazon.com/articles/1233)을 참조하세요.

1. **run-instances** 명령을 호출하여 Amazon EC2 인스턴스를 생성하고 시작합니다.

   이 명령을 호출하기 전에 다음을 수집해야 합니다.
   + 인스턴스에 사용할 Amazon Machine Image(AMI)의 ID(*ami-id*). ID를 확인하려면 [적합한 AMI 찾기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)를 참조하세요.
   + 생성할 Amazon EC2 인스턴스 유형(*instance-type*)의 이름(예: `t1.micro`). [Amazon EC2 인스턴스 유형](https://aws.amazon.com/ec2/instance-types/)에서 목록을 확인하세요.
   + 리전에 적합한 CodeDeploy 에이전트 설치 파일이 저장되어 있는 Amazon S3 버킷에 액세스할 권한을 가진 IAM 인스턴스 프로파일의 이름.

     IAM 인스턴스 프로파일의 생성에 대한 자세한 내용은 [4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기](getting-started-create-iam-instance-profile.md) 섹션을 참조하세요.
   + Amazon Linux, Ubuntu Server를 실행하는 Amazon EC2 인스턴스에 대한 SSH 액세스 또는 Windows Server를 실행하는 Amazon EC2 인스턴스에 대한 RHEL 또는 RDP 액세스를 가능하게 하는 Amazon EC2 인스턴스 키 페어의 이름(*key-name*).
**중요**  
키 페어 파일 확장명은 제외하고 키 페어 이름만 입력합니다. 예를 들어 *my-keypair.pem*이 아니라 *my-keypair*로 입력합니다.

     키 페어 이름을 확인하려면 [https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2)에서 Amazon EC2 콘솔을 엽니다. 탐색 창의 **네트워크 및 보안**에서 **키 페어**를 선택하고 목록에 표시되는 키 페어의 이름을 기록해 둡니다.

     키 페어를 생성하려면 [Amazon EC2를 사용하여 키 페어 만들기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair)를 참조하세요. *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 리전 중 하나에 키 페어를 생성해야 합니다. 그렇지 않으면 CodeDeploy에서 Amazon EC2 인스턴스 키 페어를 사용할 수 없습니다.

   **Amazon Linux, RHEL 및 Ubuntu Server용**

   **run-instances** 명령을 호출하여 Amazon Linux, Ubuntu Server 또는 RHEL을 실행하는 Amazon EC2 인스턴스를 시작하고 [4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기](getting-started-create-iam-instance-profile.md)에서 생성된 IAM 인스턴스 프로파일을 연결합니다. 예:

   ```
   aws ec2 run-instances \
     --image-id ami-id \
     --key-name key-name \
     --count 1 \
     --instance-type instance-type \
     --iam-instance-profile Name=iam-instance-profile
   ```
**참고**  
이 명령은 Amazon EC2 인스턴스에 대해 여러 포트에 대한 액세스를 허용하는 보안 그룹 기본값을 만듭니다. 여기에는 SSH의 경우 포트 22, HTTP의 경우 포트 80을 통한 무제한 액세스가 포함됩니다. RDP 및 HTTP 포트에 대한 액세스를 제한하는 것을 모범 사례로 권장합니다. CodeDeploy에는 무제한 포트 액세스와 HTTP 포트 액세스가 필요하지 않습니다. 자세한 내용은 [Amazon EC2 인스턴스의 보안 유지를 위한 팁](https://aws.amazon.com/articles/1233)을 참조하세요.

   **Windows Server용**

   **run-instances** 명령을 호출하여 Windows Server를 실행하는 Amazon EC2 인스턴스를 시작하고 [4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기](getting-started-create-iam-instance-profile.md)에서 생성한 IAM 인스턴스 프로파일을 연결하며, 1단계에서 생성한 보안 그룹의 이름을 지정합니다. 예:

   ```
   aws ec2 run-instances --image-id ami-id --key-name key-name --count 1 --instance-type instance-type --iam-instance-profile Name=iam-instance-profile --security-groups CodeDeploy-Windows-Security-Group
   ```

   이 명령은 지정된 IAM 인스턴스 프로파일에 따라 지정된 AMI, 키 페어, 인스턴스 유형으로 단일 Amazon EC2 인스턴스를 시작하고, 시작 시 지정된 스크립트를 실행합니다.

1. 출력에서 `InstanceID` 값을 기록해 둡니다. 이 값을 잊어버린 경우 Amazon EC2 인스턴스 키 페어에 대해 **describe-instances** 명령을 호출하여 나중에 확인할 수 있습니다.

   ```
   aws ec2 describe-instances --filters "Name=key-name,Values=keyName" --query "Reservations[*].Instances[*].[InstanceId]" --output text
   ```

   인스턴스 ID를 사용하여 **create-tags** 명령을 호출합니다. 이 명령은 Amazon EC2 인스턴스에 태그를 지정하여 이후 배포 중에 CodeDeploy가 인스턴스를 찾을 수 있도록 합니다. 다음 예제에서 태그 이름이 **CodeDeployDemo**지만, 원하는 대로 Amazon EC2 인스턴스 태그를 지정할 수 있습니다.

   ```
   aws ec2 create-tags --resources instance-id --tags Key=Name,Value=CodeDeployDemo
   ```

   하나의 인스턴스에 태그 여러 개를 동시에 적용할 수 있습니다. 예:

   ```
   aws ec2 create-tags --resources instance-id --tags Key=Name,Value=testInstance Key=Region,Value=West Key=Environment,Value=Beta
   ```

   Amazon EC2 인스턴스가 시작되어 모든 검사를 통과했는지 확인하려면, 인스턴스 ID를 사용하여 **describe-instance-status** 명령을 호출합니다.

   ```
   aws ec2 describe-instance-status --instance-ids instance-id --query "InstanceStatuses[*].InstanceStatus.[Status]" --output text 
   ```

인스턴스가 시작되어 모든 검사를 통과한 경우 출력에 `ok`가 표시됩니다.

### CodeDeploy 에이전트 설치
<a name="instances-ec2-create-console-agent"></a>

CodeDeploy 배포에서 CodeDeploy 에이전트를 사용하기 전에 Amazon EC2 인스턴스에 에이전트를 설치해야 합니다. 자세한 내용은 [CodeDeploy 에이전트 설치](codedeploy-agent-operations-install.md) 단원을 참조하십시오.

**참고**  
콘솔에서 배포 그룹을 생성할 때 CodeDeploy 에이전트의 자동 설치 및 업데이트를 구성할 수 있습니다.

# CodeDeploy용 Amazon EC2 인스턴스 생성(CloudFormation 템플릿)
<a name="instances-ec2-create-cloudformation-template"></a>

 CloudFormation 템플릿을 사용하여 Amazon Linux 또는 Windows Server를 실행하는 Amazon EC2 인스턴스를 빠르게 시작할 수 있습니다. AWS CLI, CodeDeploy 콘솔 또는 AWS APIs를 사용하여 템플릿으로 인스턴스를 시작할 수 있습니다. 템플릿은 인스턴스를 시작하는 것 외에도 다음을 수행합니다.
+ 인스턴스에 CodeDeploy 배포에 참여할 수 있는 권한을 부여 CloudFormation 하도록 지시합니다.
+ 배포 중에 CodeDeploy가 인스턴스를 찾을 수 있도록 인스턴스에 태그를 지정합니다.
+ 인스턴스에 CodeDeploy 에이전트를 설치하고 실행합니다.

Amazon EC2 인스턴스를 설정 CloudFormation 하기 위해를 사용할 필요는 없습니다. [CodeDeploy용 인스턴스 작업](instances.md)에서 다른 방법을 확인해 보세요.

Ubuntu Server 또는 Red Hat Enterprise Linux(RHEL)를 실행하는 Amazon EC2 인스턴스에는 CloudFormation 템플릿을 제공하지 않습니다.

**Topics**
+ [시작하기 전 준비 사항](#instances-ec2-create-cloudformation-template-before)
+ [CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스 시작(콘솔)](#instances-ec2-create-cloudformation-template-console)
+ [CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스 시작(AWS CLI)](#instances-ec2-create-cloudformation-template-cli)

## 시작하기 전 준비 사항
<a name="instances-ec2-create-cloudformation-template-before"></a>

 CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스를 시작하려면 먼저 다음 단계를 완료해야 합니다.

1. [1단계: 설정](getting-started-setting-up.md)에 설명된 대로 관리 사용자를 생성했는지 확인합니다. 사용자에게 다음과 같은 최소 권한이 있는지 다시 확인하고 누락된 권한을 추가합니다.
   + cloudformation:\$1
   + codedeploy:\$1
   + ec2:\$1
   + iam:AddRoleToInstanceProfile
   + iam:CreateInstanceProfile
   + iam:CreateRole
   + iam:DeleteInstanceProfile
   + iam:DeleteRole
   + iam:DeleteRolePolicy
   + iam:GetRole
   + iam:DeleteRolePolicy
   + iam:PutRolePolicy
   + iam:RemoveRoleFromInstanceProfile

1. Amazon Linux를 실행하는 Amazon EC2 인스턴스에 대한 SSH 액세스 또는 Windows 서버를 실행하는 인스턴스에 대한 RDP 액세스를 활성화하려면 인스턴스 키 페어가 있는지 확인합니다.

   키 페어 이름을 확인하려면 [https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2)에서 Amazon EC2 콘솔을 엽니다. 탐색 창의 **네트워크 및 보안**에서 **키 페어**를 선택하고 목록에 표시되는 키 페어의 이름을 기록해 둡니다.

   새 키 페어를 생성하려면 [Amazon EC2를 사용하여 키 페어 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair)을 참조하세요. *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 리전 중 하나에 키 페어가 생성되어야 합니다. 그렇지 않으면 CodeDeploy에서 인스턴스 키 페어를 사용할 수 없습니다.

## CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스 시작(콘솔)
<a name="instances-ec2-create-cloudformation-template-console"></a>

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) CloudFormation 콘솔을 엽니다.
**중요**  
에서 사용한 AWS Management Console 것과 동일한 계정으로에 로그인합니다[CodeDeploy 시작하기](getting-started-codedeploy.md). 탐색 모음의 리전 선택기에서 *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 리전 중 하나를 선택합니다. CodeDeploy는 이러한 리전만 지원합니다.

1. **스택 생성**을 선택합니다.

1. **템플릿 선택(Choose a template)**에서 **Amazon S3 템플릿 URL 지정(Specify an Amazon S3 template URL)**을 선택합니다. 상자에 해당 리전의 CloudFormation 템플릿 위치를 입력한 **후 다음을** 선택합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/instances-ec2-create-cloudformation-template.html)

1. **스택 이름(Stack name)** 상자에 스택 이름(예: **CodeDeployDemoStack**)을 입력합니다.

1. **파라미터(Parameters)**에 다음을 입력한 후 **다음(Next)**을 선택합니다.
   + **InstanceCount**에 시작하려는 인스턴스의 수를 입력합니다. (기본값 **1**을 그대로 두는 것을 권장합니다.)
   + **InstanceType**에 시작할 인스턴스 유형을 입력합니다(또는 기본값 **t1.micro**를 그대로 유지).
   + **KeyPairName**에 인스턴스 키 페어 이름을 입력합니다. 키 페어 파일 확장명은 제외하고 키 페어 이름만 입력합니다.
   + **OperatingSystem** 상자에 **Windows**를 입력하여 Windows 서버를 실행하는 인스턴스를 시작합니다(또는 기본값 **Linux**를 그대로 유지).
   + **SSHLocation**에서, SSH 또는 RDP를 사용하여 인스턴스에 연결하는 데 사용할 IP 주소 범위를 입력합니다(또는 기본값 **0.0.0.0/0**을 그대로 유지).
**중요**  
기본값 **0.0.0.0/0**은 데모용으로만 제공됩니다. CodeDeploy에서는 Amazon EC2 인스턴스에 포트에 대한 무제한 액세스를 요구하지 않습니다. SSH(및 HTTP) 포트에 대한 액세스를 제한할 것을 모범 사례로 권장합니다. 자세한 내용은 [Amazon EC2 인스턴스의 보안 유지를 위한 팁](https://aws.amazon.com/articles/1233)을 참조하세요.
   + **TagKey**에 CodeDeploy가 배포 중에 인스턴스를 식별하는 데 사용할 인스턴스 태그 키를 입력합니다(또는 기본값 **이름(Name)**을 그대로 둠).
   + **TagValue**에 CodeDeploy가 배포 중에 인스턴스를 식별하는 데 사용할 인스턴스 태그 값을 입력합니다(또는 기본값 **CodeDeployDemo**를 그대로 유지).

1. **옵션(Options)** 페이지에서 옵션 상자를 비워 두고 **다음(Next)**을 선택합니다.
**중요**  
CloudFormation 태그는 CodeDeploy 태그와 다릅니다.는 태그를 CloudFormation 사용하여 인프라 관리를 간소화합니다. CodeDeploy에서는 태그를 사용하여 Amazon EC2 인스턴스를 식별합니다. **파라미터 지정(Specify Parameters)** 페이지에서 CodeDeploy 태그를 지정했습니다.

1. **검토** 페이지의 **기능**에서 **가 IAM 리소스를 생성할 CloudFormation 수 있음을 승인합니다** 상자를 선택한 다음 **생성을** 선택합니다.

    CloudFormation 가 스택을 생성하고 Amazon EC2 인스턴스를 시작한 후 콘솔에서 CloudFormation **CREATE\$1COMPLETE**가 **상태** 열에 표시됩니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.

Amazon EC2 인스턴스에서 CodeDeploy 에이전트가 실행 중인지 확인하려면 [CodeDeploy 에이전트 작업 관리](codedeploy-agent-operations.md)를 확인한 다음 [CodeDeploy를 사용하여 애플리케이션 생성](applications-create.md)로 진행합니다.

## CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스 시작(AWS CLI)
<a name="instances-ec2-create-cloudformation-template-cli"></a>

1. **create-stack** 명령을 호출할 때 CloudFormation 템플릿을 사용합니다. 이 스택으로 CodeDeploy 에이전트가 설치된 새 Amazon EC2 인스턴스를 시작합니다.

   Amazon Linux를 실행하는 Amazon EC2 인스턴스 시작하기:

   ```
   aws cloudformation create-stack \
     --stack-name CodeDeployDemoStack \
     --template-url templateURL \
     --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro \
       ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Linux \
       ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name \
       ParameterKey=TagValue,ParameterValue=CodeDeployDemo \
     --capabilities CAPABILITY_IAM
   ```

   Windows Server를 실행하는 Amazon EC2 인스턴스 시작: 

   ```
   aws cloudformation create-stack --stack-name CodeDeployDemoStack --template-url template-url --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Windows ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name ParameterKey=TagValue,ParameterValue=CodeDeployDemo --capabilities CAPABILITY_IAM
   ```

   *keyName*은 인스턴스 키 페어의 이름입니다. 키 페어 파일 확장명은 제외하고 키 페어 이름만 입력합니다.

   *template-url*은 해당 리전의 CloudFormation 템플릿 위치입니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/instances-ec2-create-cloudformation-template.html)

   이 명령은 지정된 Amazon S3 버킷의 CloudFormation 템플릿을 **CodeDeployDemoStack**사용하여 라는 CloudFormation 스택을 생성합니다. Amazon EC2 인스턴스는 t1.micro 인스턴스 유형을 따르지만 모든 유형을 사용할 수 있습니다. **CodeDeployDemo** 값으로 태그 지정되어 있지만 모든 값을 태그 지정할 수 있습니다. 키 페어가 적용된 지정된 인스턴스가 있습니다.

1. **describe-stacks** 명령을 호출하여 라는 CloudFormation 스택이 성공적으로 생성**CodeDeployDemoStack**되었는지 확인합니다.

   ```
   aws cloudformation describe-stacks --stack-name CodeDeployDemoStack --query "Stacks[0].StackStatus" --output text
   ```

   `CREATE_COMPLETE` 값이 반환될 때까지 진행하지 마세요.

Amazon EC2 인스턴스에서 CodeDeploy 에이전트가 실행 중인지 확인하려면 [CodeDeploy 에이전트 작업 관리](codedeploy-agent-operations.md) 섹션을 확인한 다음 [CodeDeploy를 사용하여 애플리케이션 생성](applications-create.md)로 진행합니다.

# CodeDeploy 작업을 위한 Amazon EC2 인스턴스 구성
<a name="instances-ec2-configure"></a>

이러한 지침은 CodeDeploy에 사용하기 위해 Amazon Linux, Ubuntu Server, Red Hat Enterprise Linux(RHEL) 또는 Windows Server를 실행하는 Amazon EC2 인스턴스 구성 방법을 안내합니다.

**참고**  
Amazon EC2 인스턴스가 없는 경우 CloudFormation 템플릿을 사용하여 Amazon Linux 또는 Windows Server를 실행하는 인스턴스를 시작할 수 있습니다. Ubuntu Server 또는 RHEL용 템플릿은 제공되지 않습니다.

## 1단계: IAM 인스턴스 프로파일이 Amazon EC2 인스턴스에 연결되어 있는지 확인
<a name="instances-ec2-configure-1-verify-instance-profile-attached"></a>

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

1. 탐색 창의 **인스턴스**에서 **인스턴스**를 선택합니다.

1. 목록에서 Amazon EC2 인스턴스를 찾아서 선택합니다.

1. 세부 정보 창의 **설명(Description)** 탭에서 **IAM 역할(IAM role)** 필드의 값을 기록해 둔 후 다음 섹션으로 넘어갑니다.

   필드가 비어 있는 경우 IAM 인스턴스 프로파일을 인스턴스에 연결할 수 있습니다. 자세한 내용은 [IAM 역할을 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)을 참조하세요.

## 2단계: 연결된 IAM 인스턴스 프로파일에 올바른 액세스 권한이 있는지 확인
<a name="instances-ec2-configure-2-verify-instance-profile-permissions"></a>

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

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

1. 이전 섹션의 4단계에서 기록해 둔 IAM 역할 이름을 찾아 선택합니다.
**참고**  
의 지침에 따라 생성한 서비스 역할 대신 CloudFormation 템플릿에서 생성한 서비스 역할을 사용하려면 다음 사항에 [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md)유의하세요.  
 CloudFormation 템플릿의 일부 버전에서는 생성되어 Amazon EC2 인스턴스에 연결된 IAM 인스턴스 프로파일의 표시 이름이 IAM 콘솔의 표시 이름과 동일하지 않습니다. 예를 들어 IAM 인스턴스 프로파일의 표시 이름은 `CodeDeploySampleStack-expnyi6-InstanceRoleInstanceProfile-IK8J8A9123EX`인 반면 IAM 콘솔의 IAM 인스턴스 프로파일의 표시 이름은 `CodeDeploySampleStack-expnyi6-InstanceRole-C5P33V1L64EX`일 수 있습니다.  
IAM 콘솔에서 인스턴스 프로파일을 식별하기 위해서는 두 가지 표시 이름의 `CodeDeploySampleStack-expnyi6-InstanceRole` 접두사가 동일한 것을 확인합니다. 표시 이름이 다를 수 있는 이유에 대해서는 [인스턴스 프로파일](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html)에서 자세한 내용을 확인하세요.

1. **신뢰 관계(Trust Relationships)** 탭을 선택합니다. **신뢰할 수 있는 엔터티(Trusted Entities)**에 **The identity provider(s) ec2.amazonaws.com**이라는 항목이 없으면 이 Amazon EC2 인스턴스를 사용할 수 없습니다. 중지한 후, [CodeDeploy용 인스턴스 작업](instances.md)의 정보를 사용하여 Amazon EC2 인스턴스를 생성합니다

   **The identity provider(s) ec2.amazonaws.com**이라는 항목이 있고 GitHub 리포지토리에만 애플리케이션을 저장하는 경우는 [3단계: Amazon EC2 인스턴스에 태그 지정](#instances-ec2-configure-3-tag-instance)으로 진행합니다.

   **The identity provider(s) ec2.amazonaws.com**이라는 항목이 있고 애플리케이션을 Amazon S3 버킷에 저장하는 경우 **권한(Permissions)** 탭을 선택합니다.

1. **권한 정책(Permissions policies)** 영역에 정책이 있는 경우 정책을 확장한 다음 **정책 편집(Edit policy)**을 선택합니다.

1. **JSON** 탭을 선택합니다. Amazon S3 버킷에 애플리케이션을 저장하는 경우 `"s3:Get*"` 및 `"s3:List*"`가 지정된 작업 목록에 있어야 합니다.

   다음과 같을 것입니다.

   ```
   {"Statement":[{"Resource":"*","Action":[
     ... Some actions may already be listed here ...
     "s3:Get*","s3:List*"
     ... Some more actions may already be listed here ...
     ],"Effect":"Allow"}]}
   ```

   또는 다음과 같을 것입니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

   `"s3:Get*"` 및 `"s3:List*"`가 지정된 작업 목록에 없으면 **편집(Edit)**을 선택하여 추가한 다음**저장(Save)**을 선택합니다. (`"s3:Get*"` 또는 `"s3:List*"`가 목록의 마지막 작업이 아닌 경우 정책 문서의 유효성을 검사할 수 있도록 작업 뒤에 쉼표를 추가해야 합니다.)
**참고**  
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/*"
         ]
       }
     ]
   }
   ```

## 3단계: Amazon EC2 인스턴스에 태그 지정
<a name="instances-ec2-configure-3-tag-instance"></a>

배포 중에 CodeDeploy가 Amazon EC2 인스턴스를 찾을 수 있도록 태그를 지정하는 방법은 [콘솔에서 태그 작업하기](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console)를 참조한 다음 이 페이지로 돌아오세요.

**참고**  
Amazon EC2 인스턴스에 원하는 키와 값으로 태깅할 수 있습니다. 배포할 때 해당 키와 값을 지정했는지 확인합니다.

## 4단계: Amazon EC2 인스턴스에 AWS CodeDeploy 에이전트 설치
<a name="instances-ec2-configure-4-install-agent"></a>

Amazon EC2 인스턴스에서 CodeDeploy 에이전트를 설치하고 에이전트가 실행 중인지 확인하는 지침을 [CodeDeploy 에이전트 작업 관리](codedeploy-agent-operations.md) 섹션에서 확인한 다음 [CodeDeploy를 사용하여 애플리케이션 생성](applications-create.md)으로 진행합니다.

# CodeDeploy용 온프레미스 인스턴스 작업
<a name="instances-on-premises"></a>

온프레미스 인스턴스는 CodeDeploy 에이전트를 실행하고 퍼블릭 AWS 서비스 엔드포인트에 연결할 수 있는 Amazon EC2 인스턴스가 아닌 모든 물리적 디바이스입니다.

온프레미스 인스턴스에 CodeDeploy 애플리케이션 개정 버전을 배포하는 데는 두 가지 주요 단계가 필요합니다.
+ **1단계** – 각 온프레미스 인스턴스를 구성하고 CodeDeploy에 등록한 다음 태그를 지정합니다.
+ **2단계** - 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포합니다.
**참고**  
올바르게 구성되고 등록된 온프레미스 인스턴스에 샘플 애플리케이션 개정 버전을 만들고 배포하는 방법을 실험하려면 [튜토리얼: CodeDeploy를 사용하여 온프레미스 인스턴스에 애플리케이션 배포(Windows Server, Ubuntu Server 또는 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md) 단원을 참조하세요. 온프레미스 인스턴스와 이러한 인스턴스가 CodeDeploy와 작동하는 방식에 대한 자세한 내용은 [CodeDeploy용 온프레미스 인스턴스 작업](#instances-on-premises) 단원을 참조하세요.

온프레미스 인스턴스를 배포에서 더 이상 사용하지 않으려면 배포 그룹에서 온프레미스 인스턴스 태그를 제거할 수 있습니다. 보다 강력한 접근 방식을 위해 인스턴스에서 온프레미스 인스턴스 태그를 제거합니다. 또한 온프레미스 인스턴스를 명시적으로 등록 취소할 수 있으므로 더 이상 배포에서 사용할 수 없게 됩니다. 자세한 내용은 [CodeDeploy에서 온프레미스 인스턴스 작업 관리](on-premises-instances-operations.md) 단원을 참조하십시오.

이 섹션의 지침은 온프레미스 인스턴스를 구성한 다음 배포에 사용할 수 있도록 CodeDeploy에 등록하고 태그를 지정하는 방법을 보여 줍니다. 이 섹션에서는 CodeDeploy를 사용하여 온프레미스 인스턴스에 대한 정보를 가져오고 더 이상 배포할 계획이 없는 온프레미스 인스턴스를 등록 취소하는 방법도 설명합니다.

**Topics**
+ [온프레미스 인스턴스 구성을 위한 사전 요구 사항](instances-on-premises-prerequisites.md)
+ [온프레미스 인스턴스 등록](on-premises-instances-register.md)
+ [온프레미스 인스턴스 작업 관리](on-premises-instances-operations.md)

# 온프레미스 인스턴스 구성을 위한 사전 요구 사항
<a name="instances-on-premises-prerequisites"></a>

온프레미스 인스턴스를 등록하려면 다음 사전 요구 사항을 충족해야 합니다.

**중요**  
[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 명령을 사용하고 AWS Security Token Service (AWS STS)로 생성된 임시 자격 증명을 주기적으로 새로 고치는 경우 다른 사전 조건이 있습니다. 자세한 내용은 [IAM 세션 ARN 등록 필수 조건](register-on-premises-instance-iam-session-arn.md#register-on-premises-instance-iam-session-arn-prerequisites) 단원을 참조하세요.

**디바이스 요구 사항**

준비하고, CodeDeploy에 등록하고, 온프레미스 인스턴스로 태그를 지정하려는 디바이스는 지원되는 운영 체제에서 실행 중이어야 합니다. 목록을 보려면 [CodeDeploy 에이전트에서 지원하는 운영 체제](codedeploy-agent.md#codedeploy-agent-supported-operating-systems) 단원을 참조하세요.

운영 체제가 지원되지 않는 경우 필요에 따라 조정할 수 있도록 CodeDeploy 에이전트는 오픈 소스로 제공됩니다. 자세한 내용은 GitHub에서 [CodeDeploy 에이전트](https://github.com/aws/aws-codedeploy-agent) 리포지토리를 참조하세요.

**아웃바운드 통신**

온프레미스 인스턴스는 CodeDeploy와 통신하기 위해 퍼블릭 AWS 서비스 엔드포인트에 연결할 수 있어야 합니다.

CodeDeploy 에이전트는 포트 443을 통해 HTTPS를 사용하여 아웃바운드 통신을 수행합니다.

**관리 제어**

온프레미스 인스턴스를 구성하기 위해 온프레미스 인스턴스에 사용하는 로컬 또는 네트워크 계정은 `sudo` 또는 `root`(Ubuntu Server의 경우) 또는 관리자(Windows Server의 경우)로 실행해야 합니다.

**IAM 권한**

온프레미스 인스턴스를 등록하는 데 사용하는 IAM 자격 증명에는 등록을 완료할 수 있는 권한(및 필요에 따라 온프레미스 인스턴스를 등록 취소할 수 있는 권한)이 있어야 합니다.

[3단계: CodeDeploy 사용자 권한 제한](getting-started-policy.md)에서 설명하는 정책 이외에도 IAM 자격 증명 호출에 다음과 같은 추가 정책을 연결해야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow", 
      "Action": [
        "iam:CreateAccessKey",
        "iam:CreateUser",
        "iam:DeleteAccessKey",
        "iam:DeleteUser",
        "iam:DeleteUserPolicy",
        "iam:ListAccessKeys",
        "iam:ListUserPolicies",
        "iam:PutUserPolicy",
        "iam:GetUser"
      ],
      "Resource": "*"
    }
  ]
}
```

------

IAM 정책을 연결하는 방법에 대한 자세한 내용은 [IAM 정책 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)를 참조하세요.

# CodeDeploy에 온프레미스 인스턴스 등록
<a name="on-premises-instances-register"></a>

온프레미스 인스턴스를 등록하려면 IAM 자격 증명을 사용하여 요청을 인증해야 합니다. IAM 자격 증명 및 등록 방법에 대해 다음 옵션 중에서 선택할 수 있습니다.
+ IAM 역할 ARN을 사용하여 요청을 인증합니다.
  + [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 명령을 사용하고 AWS Security Token Service (AWS STS)로 생성된 임시 자격 증명을 주기적으로 새로 고쳐 대부분의 등록 옵션을 수동으로 구성합니다. 이 옵션은 제한 시간이 있고 주기적으로 새로 고쳐야 하는 임시 토큰을 사용하여 인증이 수행되므로 가장 높은 수준의 보안을 제공합니다. 이 옵션은 규모와 상관없이 프로덕션 배포에 권장됩니다. 자세한 내용은 [register-on-premises-instance 명령(IAM 세션 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-session-arn.md) 단원을 참조하세요.
+ (권장되지 않음) IAM 사용자 ARN을 사용하여 요청을 인증합니다.
  + 대부분의 자동화된 등록 프로세스에 [register](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html) 명령을 사용합니다. 이 옵션은 보안의 중요성이 비교적 낮은 비프로덕션 배포에만 사용해야 합니다. 이 옵션은 인증에 정적(영구) 보안 인증 정보를 사용하므로 덜 안전합니다. 이 옵션은 단일 온프레미스 인스턴스 등록에 가장 적합합니다. 자세한 내용은 [레지스터 명령(IAM 사용자 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](instances-on-premises-register-instance.md) 단원을 참조하세요.
  + [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 명령을 사용하여 대부분의 등록 옵션을 수동으로 구성합니다. 소수의 온프레미스 인스턴스를 등록하는 데 적합합니다. 자세한 내용은 [register-on-premises-instance 명령(IAM 사용자 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-user-arn.md) 섹션을 참조하세요.

**Topics**
+ [register-on-premises-instance 명령(IAM 세션 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-session-arn.md)
+ [레지스터 명령(IAM 사용자 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](instances-on-premises-register-instance.md)
+ [register-on-premises-instance 명령(IAM 사용자 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-user-arn.md)

# register-on-premises-instance 명령(IAM 세션 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.
<a name="register-on-premises-instance-iam-session-arn"></a>

온프레미스 인스턴스의 인증 및 등록을 최대한 제어하려면 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 명령을 사용하고 AWS Security Token Service ()로 생성된 임시 자격 증명을 주기적으로 새로 고칠 수 있습니다AWS STS. 인스턴스에 대한 정적 IAM 역할은 새로 고쳐진 자격 AWS STS 증명의 역할을 수임하여 CodeDeploy 배포 작업을 수행합니다.

이 방법은 많은 수의 인스턴스를 등록해야 하는 경우에 가장 유용합니다. CodeDeploy를 사용하여 등록 프로세스를 자동화할 수 있습니다. 자체 자격 증명 및 인증 시스템을 사용하여 온프레미스 인스턴스를 인증하고 서비스에서 인스턴스에 IAM 세션 자격 증명을 배포하여 CodeDeploy와 함께 사용할 수 있습니다.

**참고**  
또는 모든 온프레미스 인스턴스에 분산된 공유 IAM 사용자를 사용하여 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API를 호출하여 온프레미스 인스턴스의 세션 자격 증명을 검색할 수 있습니다. 이 방법은 안전성이 떨어지며 프로덕션 환경이나 미션 크리티컬 환경에는 권장되지 않습니다.

다음 주제의 정보를 사용하여에서 생성된 임시 보안 자격 증명을 사용하여 온프레미스 인스턴스를 구성합니다 AWS STS.

**Topics**
+ [IAM 세션 ARN 등록 필수 조건](#register-on-premises-instance-iam-session-arn-prerequisites)
+ [1단계: 온프레미스 인스턴스에서 가정할 IAM 역할 만들기](#register-on-premises-instance-iam-session-arn-1)
+ [2단계:를 사용하여 개별 인스턴스에 대한 임시 자격 증명 생성 AWS STS](#register-on-premises-instance-iam-session-arn-2)
+ [3단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-session-arn-3)
+ [4단계: CodeDeploy 배포를 위한 온프레미스 인스턴스 준비](#register-on-premises-instance-iam-session-arn-4)
+ [5단계: CodeDeploy에 온프레미스 인스턴스 등록](#register-on-premises-instance-iam-session-arn-5)
+ [6단계: 온프레미스 인스턴스에 태그 지정](#register-on-premises-instance-iam-session-arn-6)
+ [7단계 : 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포합니다.](#register-on-premises-instance-iam-session-arn-7)
+ [8단계: 온프레미스 인스턴스에 대한 배포 추적](#register-on-premises-instance-iam-session-arn-8)

## IAM 세션 ARN 등록 필수 조건
<a name="register-on-premises-instance-iam-session-arn-prerequisites"></a>

[온프레미스 인스턴스 구성을 위한 사전 요구 사항](instances-on-premises-prerequisites.md)에 나열된 사전 필수 조건에 더하여 다음 추가 요구 사항을 충족해야 합니다.

**IAM 권한**

온프레미스 인스턴스를 등록하는 데 사용하는 IAM 자격 증명에는 CodeDeploy 작업을 수행할 수 있는 권한이 부여되어야 합니다. **AWSCodeDeployFullAccess** 관리형 정책이 IAM 자격 증명에 연결되도록 해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)을 참조하세요.

**임시 보안 인증 정보를 새로 고치는 시스템**

IAM 세션 ARN을 사용하여 온프레미스 인스턴스를 등록하는 경우 임시 자격 증명을 주기적으로 새로 고칠 수 있는 시스템이 있어야 합니다. 자격 증명이 생성될 때 더 짧은 기간을 지정하면 임시 자격 증명이 1시간 후에 만료됩니다. 자격 증명 새로 고치는 방법은 두 가지입니다.
+ **방법 1**: ID 및 인증 시스템을 주기적으로 폴링하고 최신 세션 자격 증명을 인스턴스에 복사하는 CRON 스크립트와 함께 회사 네트워크에 있는 자격 증명 및 인증 시스템을 사용합니다. 이를 통해 조직에서 사용하는 인증 유형을 지원하기 위해 CodeDeploy 에이전트 또는 서비스를 변경할 필요 AWS 없이 인증 및 자격 증명 구조를와 통합할 수 있습니다.
+ **방법 2**: 인스턴스에서 CRON 작업을 주기적으로 실행하여 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 작업을 호출하고 CodeDeploy 에이전트가 액세스할 수 있는 파일에 세션 자격 증명을 씁니다. 이 방법을 사용하려면 IAM 사용자를 사용하고 온프레미스 인스턴스에 자격 증명을 복사해야 하지만 온프레미스 인스턴스 전체에서 동일한 IAM 사용자 및 자격 증명을 재사용할 수 있습니다.

**참고**  
1과 2 중 어떤 방법을 사용하든 임시 세션 보안 인증 정보가 업데이트된 후 CodeDeploy 에이전트를 다시 시작하는 프로세스를 설정해야 새 보안 인증 정보가 적용됩니다.

자격 AWS STS 증명 생성 및 작업에 대한 자세한 내용은 [AWS Security Token Service API 참조](https://docs.aws.amazon.com/STS/latest/APIReference/) 및 [임시 보안 자격 증명을 사용하여 AWS 리소스에 대한 액세스 요청을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).

## 1단계: 온프레미스 인스턴스에서 가정할 IAM 역할 만들기
<a name="register-on-premises-instance-iam-session-arn-1"></a>

 AWS CLI 또는 IAM 콘솔을 사용하여 온프레미스 인스턴스가 CodeDeploy를 인증하고 상호 작용하는 데 사용할 IAM 역할을 생성할 수 있습니다.

IAM 역할은 하나씩만 생성하면 됩니다. 각 온프레미스 인스턴스는 이 역할을 수임하여 이 역할에 부여된 권한을 제공하는 임시 보안 자격 증명을 검색할 수 있습니다.

만드는 역할에 CodeDeploy 에이전트를 설치하는 데 필요한 파일에 액세스하려면 다음 권한이 필요합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

온프레미스 인스턴스에서 액세스해야 하는 Amazon S3 버킷으로만 이 정책을 제한하는 것이 좋습니다. 이 정책을 제한하는 경우, CodeDeploy 에이전트가 포함된 Amazon S3 버킷에 대한 액세스 권한도 부여해야 합니다. 그렇지 않으면 온프레미스 인스턴스에 CodeDeploy 에이전트를 설치 또는 업데이트할 때 오류가 발생할 수 있습니다. Amazon S3 버킷 액세스 제어에 대한 자세한 내용은 [Amazon S3 리소스에 대한 액세스 권한 관리](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)를 참조하세요.

**IAM 역할을 만들려면**

1. `--role-name` 옵션을 사용하여 [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 명령을 호출해 IAM 역할의 이름(예: `CodeDeployInstanceRole`)을 지정하고 `--assume-role-policy-document` 옵션을 사용하여 권한을 제공할 수 있습니다.

   이 인스턴스에 대한 IAM 역할을 생성할 때 `CodeDeployInstanceRole`(이)라는 이름을 지정하고 `CodeDeployRolePolicy.json`(이)라는 파일에 필요한 권한을 포함합니다.

   ```
   aws iam create-role --role-name CodeDeployInstanceRole --assume-role-policy-document file://CodeDeployRolePolicy.json
   ```

1. **create-role** 명령에 대한 호출의 출력에서 ARN 필드의 값을 기록해 둡니다. 예제:

   ```
   arn:aws:iam::123456789012:role/CodeDeployInstanceRole
   ```

    AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API를 사용하여 각 인스턴스에 대한 단기 자격 증명을 생성할 때 역할 ARN이 필요합니다.

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

   기존 역할에 사용 권한을 할당하는 방법에 대한 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)의 [put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)을 참조하세요.

## 2단계:를 사용하여 개별 인스턴스에 대한 임시 자격 증명 생성 AWS STS
<a name="register-on-premises-instance-iam-session-arn-2"></a>

온프레미스 인스턴스 등록에 사용할 임시 자격 증명을 생성하기 전에 임시 자격 증명을 생성할 IAM 자격 증명(사용자 또는 역할)을 생성하거나 선택해야 합니다. `sts:AssumeRole` 권한은 이 IAM 자격 증명에 대한 정책 설정에 포함되어야 합니다.

IAM 자격 증명에 `sts:AssumeRole` 권한을 부여하는 방법에 대한 자세한 내용은 [AWS 서비스에 권한을 위임할 역할 생성 및 AssumeRole을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)

임시 자격 증명 생성 방법은 두 가지입니다.
+  AWS CLI와(과) 함께 [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 명령 사용 예제:

  ```
  aws sts assume-role --role-arn arn:aws:iam::12345ACCOUNT:role/role-arn --role-session-name session-name
  ```

  위치:
  + *12345ACCOUNT*는 조직의 12자리 계정 번호입니다.
  + *role-arn*은 [1단계: 온프레미스 인스턴스에서 가정할 IAM 역할 만들기](#register-on-premises-instance-iam-session-arn-1)에서 생성한 수임할 역할의 ARN입니다.
  + *session-name*은 지금 만들려는 역할 세션에 제공할 이름입니다.
**참고**  
자격 증명 및 인증 시스템을 주기적으로 폴링하고 최신 세션 자격 증명을 인스턴스에 복사하는 CRON 스크립트를 사용하는 경우(에 설명된 임시 자격 증명을 새로 고치는 방법 1[IAM 세션 ARN 등록 필수 조건](#register-on-premises-instance-iam-session-arn-prerequisites)), 지원되는 SDK를 사용하여 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)을 호출 AWS 할 수 있습니다.
+ 에서 제공하는 도구를 사용합니다 AWS.

  aws-codedeploy-session-helper 도구는 AWS STS 자격 증명을 생성하고 인스턴스에 배치한 파일에 기록합니다. 이 도구는 [IAM 세션 ARN 등록 필수 조건](#register-on-premises-instance-iam-session-arn-prerequisites)에 설명된 임시 자격 증명을 새로 고치는 방법 2에 가장 적합합니다. 이 방법에서 aws-codedeploy-session-helper 도구는 각 인스턴스에 배치되고 IAM 사용자의 권한을 사용하여 명령을 실행합니다. 각 인스턴스는 이 도구와 함께 동일한 IAM 사용자의 자격 증명을 사용합니다.

  자세한 내용은 [aws-codedeploy-session-helper](https://github.com/awslabs/aws-codedeploy-samples/tree/master/utilities/aws-codedeploy-session-helper) GitHub 리포지토리를 참조하세요.
**참고**  
IAM 세션 자격 증명을 생성한 후에는 온프레미스 인스턴스의 어느 위치에나 배치합니다. 다음 단계에서는 이 위치의 자격 증명에 액세스하도록 CodeDeploy 에이전트를 구성합니다.

계속하기 전에 임시 자격 증명을 주기적으로 새로 고치는 데 사용할 시스템이 있는지 확인하세요. 임시 자격 증명이 새로 고쳐지지 않으면 온프레미스 인스턴스에 대한 배포가 실패합니다. 자세한 내용은 [IAM 세션 ARN 등록 필수 조건](#register-on-premises-instance-iam-session-arn-prerequisites)의 “임시 자격 증명을 새로 고치는 시스템”을 참조하세요.

## 3단계: 온프레미스 인스턴스에 구성 파일 추가
<a name="register-on-premises-instance-iam-session-arn-3"></a>

루트 또는 관리자 권한을 사용하여 온프레미스 인스턴스에 구성 파일을 추가합니다. 이 구성 파일은 CodeDeploy에 사용될 IAM 자격 증명 및 대상 AWS 리전을 선언하는 데 사용합니다. 온프레미스 인스턴스의 특정 위치에 파일을 추가해야 합니다. 파일에는 IAM 임시 세션 ARN, 보안 키 ID 및 보안 액세스 키, 대상 AWS 리전이 포함되어야 합니다.

**구성 파일을 추가하려면**

1. 온프레미스 인스턴스의 다음 위치에 `codedeploy.onpremises.yml`(Ubuntu Server 또는 RHEL 온프레미스 인스턴스의 경우) 또는 `conf.onpremises.yml`(Windows Server 온-레미스 인스턴스의 경우)라는 이름의 파일을 만듭니다.
   + Ubuntu Server: `/etc/codedeploy-agent/conf`
   + Windows Server: `C:\ProgramData\Amazon\CodeDeploy`

1. 텍스트 편집기를 사용하여 새로 만든 `codedeploy.onpremises.yml` 파일(Linux) 또는 `conf.onpremises.yml` 파일(Windows)에 다음 정보를 추가하세요.

   ```
   ---
   iam_session_arn: iam-session-arn
   aws_credentials_file: credentials-file
   region: supported-region
   ```

   위치:
   + *iam-session-arn*은 [2단계:를 사용하여 개별 인스턴스에 대한 임시 자격 증명 생성 AWS STS](#register-on-premises-instance-iam-session-arn-2)에서 기록해 둔 IAM 세션 ARN 입니다.
   + *credentials-file*은 [2단계:를 사용하여 개별 인스턴스에 대한 임시 자격 증명 생성 AWS STS](#register-on-premises-instance-iam-session-arn-2)에서 기록해 둔대로 임시 세션 ARN에 대한 자격 증명 파일의 위치입니다.
   + *supported-region*은 *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 대로 CodeDeploy가 지원하는 리전 중 하나입니다.

## 4단계: CodeDeploy 배포를 위한 온프레미스 인스턴스 준비
<a name="register-on-premises-instance-iam-session-arn-4"></a>

**설치 및 구성 AWS CLI **

온프레미스 인스턴스 AWS CLI 에를 설치하고 구성합니다. ( AWS CLI 는 온프레미스 인스턴스에서 CodeDeploy 에이전트를 다운로드하고 설치하는 데 사용됩니다.) 

1. 온프레미스 인스턴스 AWS CLI 에를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [로 설정 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)의 지침을 따르세요.
**참고**  
온프레미스 인스턴스 작업을 위한 CodeDeploy 명령은 AWS CLI의 버전 1.7.19에서 사용할 수 있게 되었습니다. 버전이 AWS CLI 이미 설치되어 있는 경우를 호출하여 버전을 확인할 수 있습니다**aws --version**.

1. 온프레미스 인스턴스 AWS CLI 에서를 구성하려면 *AWS Command Line Interface 사용 설명서*의 [구성 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)의 지침을 따르세요.
**중요**  
를 구성할 때 AWS CLI (예: **aws configure** 명령을 호출하여) 최소한에 설명된 권한이 있는 IAM 사용자의 보안 키 ID와 보안 액세스 키를 지정해야 합니다[IAM 세션 ARN 등록 필수 조건](#register-on-premises-instance-iam-session-arn-prerequisites).

**AWS\$1REGION 환경 변수 설정(Ubuntu Server 및 RHEL만 해당)**

온프레미스 인스턴스에서 Ubuntu Server 또는 RHEL을 실행하지 않는 경우 이 단계를 건너뛰고 "CodeDeploy 에이전트 생성"으로 직접 이동합니다.

Ubuntu Server 또는 RHEL 온프레미스 인스턴스에 CodeDeploy 에이전트를 설치하고 새 버전을 사용할 수 있을 때마다 인스턴스가 CodeDeploy 에이전트를 업데이트하도록 설정합니다. 인스턴스에서 `AWS_REGION` 환경 변수를 CodeDeploy에서 지원하는 리전 중 하나의 식별자로 설정하면 됩니다. CodeDeploy 애플리케이션, 배포 그룹 및 애플리케이션 개정 버전이 있는 리전으로 값을 설정하는 것이 좋습니다(예: `us-west-2`). 전체 리전 목록은 *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)를 참조하세요.

환경 변수를 설정하려면 터미널에서 다음을 호출하세요.

```
export AWS_REGION=supported-region
```

여기서 *supported-region*이 리전의 식별자입니다(예: `us-west-2`).

**CodeDeploy 에이전트 설치**
+ Ubuntu Server 온프레미스 인스턴스의 경우 [Ubuntu Server용 CodeDeploy 에이전트 설치](codedeploy-agent-operations-install-ubuntu.md)의 지침을 따르고 이 페이지로 돌아옵니다.
+ RHEL 온프레미스 인스턴스의 경우 [Amazon Linux 또는 RHEL용 CodeDeploy 에이전트 설치](codedeploy-agent-operations-install-linux.md)의 지침을 따르고 이 페이지로 돌아옵니다.
+ Windows Serve 온프레미스 인스턴스의 경우 [Windows Server용 CodeDeploy 에이전트 설치](codedeploy-agent-operations-install-windows.md)의 지침을 따르고 이 페이지로 돌아옵니다.

## 5단계: CodeDeploy에 온프레미스 인스턴스 등록
<a name="register-on-premises-instance-iam-session-arn-5"></a>

이 단계의 지침은 온프레미스 인스턴스 자체에서 온프레미스 인스턴스를 등록한다고 가정합니다. 가 AWS CLI 설치 및 구성된 별도의 디바이스 또는 인스턴스에서 온프레미스 인스턴스를 등록할 수 있습니다.

 AWS CLI 를 사용하여 배포에 사용할 수 있도록 CodeDeploy에 온프레미스 인스턴스를 등록합니다.

를 사용하려면 먼저에서 생성한 임시 세션 자격 증명의 ARN AWS CLI이 필요합니다[3단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-session-arn-3). 예를 들어, `AssetTag12010298EX`(으)로 식별하는 인스턴스의 경우:

```
arn:sts:iam::123456789012:assumed-role/CodeDeployInstanceRole/AssetTag12010298EX
```

[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 명령을 호출하여 다음을 지정합니다.
+  온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-name` 옵션 사용).
**중요**  
특히 디버깅을 위해 온프레미스 인스턴스를 식별하려면 온프레미스 인스턴스의 일부 고유 특성(예: STS 자격 증명의 session-name과 일련 번호 또는 해당되는 경우 내부 자산 식별자)에 매핑되는 이름을 지정하는 것이 좋습니다. 이름으로 MAC 주소를 지정하는 경우 MAC 주소에는 콜론(:)과 같이 CodeDeploy에서 허용하지 않는 문자가 포함되어 있다는 점에 유의하세요. 허용되는 문자 목록은 [CodeDeploy 할당량](limits.md) 단원을 참조하세요.
+ [1단계: 온프레미스 인스턴스에서 가정할 IAM 역할 만들기](#register-on-premises-instance-iam-session-arn-1)에서 여러 온프레미스 인스턴스를 인증하도록 설정한 IAM 세션 ARN

예:

```
aws deploy register-on-premises-instance --instance-name name-of-instance --iam-session-arn arn:aws:sts::account-id:assumed-role/role-to-assume/session-name
```

위치:
+ *name-of-instance*은 온프레미스 인스턴스를 식별하는 데 사용하는 이름입니다(예: `AssetTag12010298EX`).
+ *account-id*는 조직의 12자리 계정 ID입니다(예: `111222333444`).
+ *role-to-assume*은 인스턴스에 대해 생성한 IAM 역할의 이름입니다(예: `CodeDeployInstanceRole`).
+ *session-name*은 [2단계:를 사용하여 개별 인스턴스에 대한 임시 자격 증명 생성 AWS STS](#register-on-premises-instance-iam-session-arn-2)에서 지정한 세션 역할의 이름입니다..

## 6단계: 온프레미스 인스턴스에 태그 지정
<a name="register-on-premises-instance-iam-session-arn-6"></a>

 AWS CLI 또는 CodeDeploy 콘솔을 사용하여 온프레미스 인스턴스에 태그를 지정할 수 있습니다. CodeDeploy는 온프레미스 인스턴스 태그를 사용하여 배포 중 배포 대상을 식별합니다.

**온프레미스 인스턴스에 태그 지정(CLI)**
+ [add-tags-to-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html) 명령을 호출하여 다음을 지정합니다.
  + 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-names` 옵션 사용).
  + 사용하려는 온프레미스 인스턴스 태그 키 및 태그 값의 이름(`--tags` 옵션 사용). 이름과 값을 둘 다 지정해야 합니다. CodeDeploy는 값만 있는 온프레미스 인스턴스 태그를 허용하지 않습니다.

    예:

    ```
    aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
    ```

**온프레미스 인스턴스에 태그 지정(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) CodeDeploy 콘솔을 엽니다.
**참고**  
[CodeDeploy 시작하기](getting-started-codedeploy.md)에서 설정한 사용자와 동일한 사용자로 로그인합니다.

1. 탐색 창에서 **배포**를 확장하고 **온프레미스 인스턴스**를 선택합니다.

1. 온프레미스 인스턴스 목록에서 태그를 지정할 온프레미스 인스턴스의 이름을 선택합니다.

1. 태그 목록에서 원하는 태그 키와 태그 값을 선택하거나 입력합니다. 태그 키와 태그 값을 입력하면 다른 행이 나타납니다. 최대 10개의 태그에 대해 이 작업을 반복할 수 있습니다. 태그를 제거하려면 **제거**를 선택합니다.

1. 태그를 추가한 후 **태그 업데이트**를 선택합니다.

## 7단계 : 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포합니다.
<a name="register-on-premises-instance-iam-session-arn-7"></a>

등록 및 태그가 지정된 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포할 준비가 되었습니다.

애플리케이션 개정 버전을 Amazon EC2 인스턴스에 배포하는 것과 유사한 방식으로 온프레미스 인스턴스에 배포합니다. 지침은 [CodeDeploy에서 배포 만들기](deployments-create.md) 단원을 참조하세요. 이러한 지침은 애플리케이션 만들기, 배포 그룹 만들기 및 애플리케이션 개정 버전 준비를 비롯한 필수 구성 요소에 대한 링크가 포함되어 있습니다. 배포하기 위해 간단한 샘플 애플리케이션 개정 버전이 필요한 경우 [튜토리얼: CodeDeploy를 사용하여 온프레미스 인스턴스에 애플리케이션 배포(Windows Server, Ubuntu Server 또는 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)의 [2단계: 샘플 애플리케이션 수정 버전 만들기](tutorials-on-premises-instance-2-create-sample-revision.md)에 설명된 개정 버전을 생성할 수 있습니다.

**중요**  
온프레미스 인스턴스를 대상으로 하는 배포 그룹을 만드는 과정에서 CodeDeploy 서비스 역할을 다시 사용하는 경우 서비스 역할 정책 설명의 `Action` 부분에 `Tag:get*`을(를) 포함해야 합니다. 자세한 내용은 [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md) 단원을 참조하십시오.

## 8단계: 온프레미스 인스턴스에 대한 배포 추적
<a name="register-on-premises-instance-iam-session-arn-8"></a>

등록되고 태그가 지정된 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포한 후 배포의 진행 상황을 추적할 수 있습니다.

Amazon EC2 인스턴스에 대한 배포를 추적하는 것과 유사한 방식으로 온프레미스 인스턴스에 대한 배포를 추적합니다. 지침은 [CodeDeploy 배포 세부 정보 보기](deployments-view-details.md) 단원을 참조하세요.

# 레지스터 명령(IAM 사용자 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.
<a name="instances-on-premises-register-instance"></a>

**중요**  
IAM 사용자를 사용하여 인스턴스를 등록하는 것은 인증에 정적(영구) 보안 인증 정보를 사용하므로 권장되지 않습니다. 보안을 강화하려면 인증을 위한 임시 보안 인증 정보를 사용하여 인스턴스를 등록하는 것이 좋습니다. 자세한 내용은 [register-on-premises-instance 명령(IAM 세션 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-session-arn.md) 단원을 참조하십시오.

**중요**  
IAM 사용자의 액세스 키(영구 보안 인증 정보)를 교체할 계획이 있어야 합니다. 자세한 내용은 [액세스 키 교체](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)를 참조하세요.

이 섹션에서는 온프레미스 인스턴스를 구성하고 최소한의 작업으로 CodeDeploy에 등록하고 태그를 지정하는 방법에 대해 설명합니다. **register** 명령은 단일 또는 소규모 온프레미스 인스턴스 집합으로 작업할 때 가장 유용합니다. **register** 명령은 IAM 사용자 ARN을 사용하여 인스턴스를 인증하는 경우에만 사용할 수 있습니다. **register** 명령은 인증용 IAM 세션 ARN과 함께 사용합니다.

**register** 명령을 사용할 때 CodeDeploy에서 다음 작업을 수행할 수 있습니다.
+ 명령을 사용하여 IAM 사용자를 지정하지 않은 경우 온프레미스 인스턴스에 AWS Identity and Access Management 대해에서 IAM 사용자를 생성합니다.
+ IAM 사용자의 자격 증명을 온프레미스 인스턴스 구성 파일에 저장합니다.
+ CodeDeploy에 온프레미스 인스턴스 등록
+ 명령의 일부로 태그를 지정한 경우 온프레미스 인스턴스에 태그를 추가합니다.

**참고**  
[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 명령은 [register](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html) 명령 대신 사용할 수 있습니다. **register-on-premises-instance** 명령을 사용하여 온프레미스 인스턴스를 구성하고 주로 직접 CodeDeploy에 등록하고 태그를 지정할 수 있습니다. **register-on-premises-instance** 명령은 IAM 사용자 ARN 대신 IAM 세션 ARN을 사용하여 인스턴스를 등록할 수 있는 옵션도 제공합니다. 이 접근 방식은 대규모 온프레미스 인스턴스 플릿이 있는 경우 큰 이점을 제공합니다. 특히 각 온프레미스 인스턴스에 대해 하나씩 IAM 사용자를 만들지 않고 단일 IAM 세션 ARN 사용하여 여러 인스턴스를 인증할 수 있습니다. 자세한 내용은 [register-on-premises-instance 명령(IAM 사용자 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-user-arn.md) 및 [register-on-premises-instance 명령(IAM 세션 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-session-arn.md) 섹션을 참조하세요.

**Topics**
+ [1단계: 온프레미스 인스턴스 AWS CLI 에 설치 및 구성](#instances-on-premises-register-instance-1-install-cli)
+ [2단계: 등록 명령 호출](#instances-on-premises-register-instance-2-register-command)
+ [3단계: 설치 명령 호출](#instances-on-premises-register-instance-3-install-command)
+ [4단계 : 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포합니다.](#instances-on-premises-register-instance-4-deploy-revision)
+ [5단계: 온프레미스 인스턴스에 대한 배포 추적](#instances-on-premises-register-instance-5-track-deployment)

## 1단계: 온프레미스 인스턴스 AWS CLI 에 설치 및 구성
<a name="instances-on-premises-register-instance-1-install-cli"></a>

1. 온프레미스 인스턴스 AWS CLI 에를 설치합니다. *AWS Command Line Interface 사용 설명서*의 [AWS CLI을(를) 이용하여 설치 시작하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)에 나와 있는 지침을 따릅니다.
**참고**  
온프레미스 인스턴스 작업을 위한 CodeDeploy 명령은 AWS CLI 버전 1.7.19 이상에서 사용할 수 있습니다. 가 AWS CLI 이미 설치되어 있는 경우를 호출**aws --version**하여 버전을 확인합니다.

1. 온프레미스 인스턴스 AWS CLI 에서를 구성합니다. *AWS Command Line Interface 사용 설명서*의 [AWS CLI구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)에 나와 있는 지침을 따릅니다.
**중요**  
를 구성할 때 AWS CLI (예: **aws configure** 명령을 호출하여) 최소한에 지정된 권한 외에도 다음 액세스 권한이 있는 IAM 사용자의 보안 키 ID와 보안 AWS 액세스 키를 지정해야 합니다[온프레미스 인스턴스 구성을 위한 사전 요구 사항](instances-on-premises-prerequisites.md). 이렇게 하면 온프레미스 인스턴스에 CodeDeploy 에이전트를 다운로드하고 설치할 수 있습니다. 액세스 권한은 다음과 비슷할 수 있습니다.  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*",
           "iam:CreateAccessKey",
           "iam:CreateUser",
           "iam:DeleteAccessKey",
           "iam:DeleteUser",
           "iam:DeleteUserPolicy",
           "iam:ListAccessKeys",
           "iam:ListUserPolicies",
           "iam:PutUserPolicy",
           "iam:GetUser",
           "tag:getTagKeys",
           "tag:getTagValues",
           "tag:GetResources"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket1/*"
         ]
       }     
     ]
   }
   ```
이전에 표시된 Amazon S3 버킷 중 하나에 액세스하려고 할 때 액세스 거부 오류가 표시되면 버킷의 리소스 ARN에서 `/*` 부분(예: `arn:aws:s3:::aws-codedeploy-sa-east-1`)을 생략해 보세요.

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*",
           "iam:CreateAccessKey",
           "iam:CreateUser",
           "iam:DeleteAccessKey",
           "iam:DeleteUser",
           "iam:DeleteUserPolicy",
           "iam:ListAccessKeys",
           "iam:ListUserPolicies",
           "iam:PutUserPolicy",
           "iam:GetUser",
           "tag:GetResources"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket2/*"
         ]
       }     
     ]
   }
   ```

## 2단계: 등록 명령 호출
<a name="instances-on-premises-register-instance-2-register-command"></a>

이 단계에서는 온프레미스 인스턴스 자체에서 온프레미스 인스턴스를 등록한다고 가정합니다. 이전 단계에서 설명한 대로가 AWS CLI 설치 및 구성된 별도의 디바이스 또는 인스턴스에서 온프레미스 인스턴스를 등록할 수도 있습니다.

를 사용하여 다음을 지정 AWS CLI 하여 [register](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html) 명령을 호출합니다.
+ CodeDeploy에 대한 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-name` 옵션 사용).
**중요**  
나중에 특히 디버깅을 위해 온프레미스 인스턴스를 식별하려면 온프레미스 인스턴스의 일부 고유 특성(예: 일련 번호 또는 해당되는 경우 고유한 내부 자산 식별자)에 매핑되는 이름을 사용하는 것이 좋습니다. 이름에 MAC 주소를 지정하는 경우 MAC 주소에는 콜론(`:`)과 같이 CodeDeploy에서 허용하지 않는 문자가 포함되어 있다는 점에 유의하세요. 허용되는 문자 목록은 [CodeDeploy 할당량](limits.md) 단원을 참조하세요.
+ 선택적으로 이 온프레미스 인스턴스와 연결하려는 기존 IAM 사용자의 ARN(`--iam-user-arn` 옵션 사용). IAM 사용자의 ARN을 가져오려면 [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 명령을 호출하거나 IAM 콘솔의 **사용자** 섹션에서 IAM 사용자 이름을 선택한 다음 **요약** 섹션에서 **사용자 ARN** 값을 찾습니다. 이 옵션을 지정하지 않으면 CodeDeploy는 AWS 계정에서 사용자를 대신하여 IAM 사용자를 생성하고 이를 온프레미스 인스턴스와 연결합니다.
**중요**  
`--iam-user-arn` 옵션을 지정하는 경우 [4단계: 온프레미스 인스턴스에 구성 파일 추가](register-on-premises-instance-iam-user-arn.md#register-on-premises-instance-iam-user-arn-4)에 설명된 대로 온프레미스 인스턴스 구성 파일도 수동으로 생성해야 합니다.  
 하나의 IAM 사용자만 하나의 온프레미스 인스턴스에만 연결할 수 있습니다. 단일 IAM 사용자를 여러 온프레미스 인스턴스와 연결하려고 하면 오류가 발생하거나, 이러한 온프레미스 인스턴스에 배포하지 못하거나, 영구 보류 상태로 유지된 온프레미스 인스턴스에 배포될 수 있습니다.
+ 온프레미스 인스턴스 태그 집합(`--tags`옵션)을 사용하여 CodeDeploy Amazon EC2 인스턴스 집합을 식별하는 데 사용할 수 있습니다. `Key=tag-key,Value=tag-value`을(를) 사용하여 각 태그를 지정합니다(예: `Key=Name,Value=Beta Key=Name,Value=WestRegion`). 이 옵션을 지정하지 않으면 태그가 등록되지 않습니다. 나중에 태그를 등록하려면 [add-tags-to-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html) 명령을 호출하세요.
+ 선택적으로 온프레미스 인스턴스가 CodeDeploy에 등록될 AWS 리전입니다( `--region` 옵션 사용). *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 지원되는 리전 중 하나여야 합니다(예: `us-west-2`). 이 옵션을 지정하지 않으면 호출하는 IAM 사용자와 연결된 기본 AWS 리전이 사용됩니다.

예제:

```
aws deploy register --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem --tags Key=Name,Value=CodeDeployDemo-OnPrem --region us-west-2
```

**register** 명령은 다음 작업을 수행합니다.

1. 기존 IAM 사용자가 지정되지 않은 경우 IAM 사용자를 생성하고 필요한 권한을 연결하며 해당 보안 키와 보안 액세스 키를 생성합니다. 온프레미스 인스턴스는 이 IAM 사용자와 해당 권한 및 자격 증명을 사용하여 CodeDeploy를 인증하고 상호 작용합니다.

1. CodeDeploy에 온프레미스 인스턴스 등록

1. 지정된 경우 CodeDeploy에서 `--tags` 옵션으로 지정된 태그를 등록된 온프레미스 인스턴스 이름과 연결합니다.

1. IAM 사용자가 생성된 경우 **register** 명령이 호출된 동일한 디렉터리에 필요한 구성 파일도 생성합니다.

이 명령에 오류가 발생하면 나머지 단계를 수동으로 완료하는 방법을 설명하는 오류 메시지가 나타납니다. 그렇지 않으면 다음 단계에 나열된 대로 **install** 명령을 호출하는 방법을 설명하는 성공 메시지가 나타납니다.

## 3단계: 설치 명령 호출
<a name="instances-on-premises-register-instance-3-install-command"></a>

온프레미스 인스턴스에서를 사용하여 다음을 지정 AWS CLI 하여 [설치](https://docs.aws.amazon.com/cli/latest/reference/deploy/install.html) 명령을 호출합니다.
+ 구성 파일의 경로(`--config-file` 옵션 사용).
+ 선택적으로, 온프레미스 인스턴스에 이미 존재하는 구성 파일을 대체할지 여부(`--override-config` 옵션 사용). 지정하지 않으면 기존 구성 파일이 대체되지 않습니다.
+ 선택적으로 온프레미스 인스턴스가 CodeDeploy에 등록될 AWS 리전입니다( `--region` 옵션 사용). *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 지원되는 리전 중 하나여야 합니다(예: `us-west-2`). 이 옵션을 지정하지 않으면 호출하는 IAM 사용자와 연결된 기본 AWS 리전이 사용됩니다.
+ 선택적으로, CodeDeploy 에이전트를 설치할 사용자 지정 위치(`--agent-installer` 옵션 사용). 이 옵션은 CodeDeploy가 공식적으로 지원하지 않는 CodeDeploy 에이전트의 사용자 지정 버전(예: GitHub의[ CodeDeploy 에이전트](https://github.com/aws/aws-codedeploy-agent) 리포지토리 기반 사용자 지정 버전)을 설치하는 데 유용합니다. 값은 다음 중 하나를 포함하는 Amazon S3 버킷의 경로여야 합니다.
  + CodeDeploy 에이전트 설치 스크립트(Linux 또는 UNIX 기반 운영 체제의 경우 GitHub의 [CodeDeploy 에이전트 ](https://github.com/aws/aws-codedeploy-agent/blob/master/bin/install) 리포지토리에 있는 설치 파일과 유사).
  + CodeDeploy 에이전트 설치 관리자 패키지(.msi) 파일(Windows 기반 운영 체제의 경우)

   이 옵션을 지정하지 않으면 CodeDeploy는 자체 위치에서 온프레미스 인스턴스의 운영 체제와 호환되는 공식적으로 지원되는 CodeDeploy 에이전트 버전을 설치하는 것이 가장 좋습니다.

예:

```
aws deploy install --override-config --config-file /tmp/codedeploy.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi
```

**install** 명령은 다음 작업을 수행합니다.

1. 온프레미스 인스턴스가 Amazon EC2 인스턴스인지 확인합니다. 이 경우 오류 메시지가 나타납니다.

1. 파일이 해당 위치에 없는 경우 인스턴스의 지정된 위치에서 CodeDeploy 에이전트가 해당 파일을 찾을 것으로 예상되는 위치로 온프레미스 인스턴스 구성 파일을 복사합니다.

   Ubuntu Server와 Red Hat Enterprise Linux(RHEL)의 경우, `/etc/codedeploy-agent/conf`/`codedeploy.onpremises.yml`.

   Windows Server의 경우 `C:\ProgramData\Amazon\CodeDeploy`\$1`conf.onpremises.yml`.

   `--override-config` 옵션이 지정되면 파일을 만들거나 덮어씁니다.

1. 온프레미스 인스턴스에 CodeDeploy 에이전트를 설치한 다음 시작합니다.

## 4단계 : 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포합니다.
<a name="instances-on-premises-register-instance-4-deploy-revision"></a>

등록 및 태그가 지정된 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포할 준비가 되었습니다.

애플리케이션 개정 버전을 Amazon EC2 인스턴스에 배포하는 것과 유사한 방식으로 온프레미스 인스턴스에 배포합니다. 지침은 [CodeDeploy에서 배포 만들기](deployments-create.md) 단원을 참조하세요. 이러한 지침은 애플리케이션 만들기, 배포 그룹 만들기 및 애플리케이션 개정 버전 준비를 비롯한 필수 구성 요소에 연결됩니다. 배포하기 위해 간단한 샘플 애플리케이션 개정 버전이 필요한 경우 [튜토리얼: CodeDeploy를 사용하여 온프레미스 인스턴스에 애플리케이션 배포(Windows Server, Ubuntu Server 또는 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)의 [2단계: 샘플 애플리케이션 수정 버전 만들기](tutorials-on-premises-instance-2-create-sample-revision.md)에 설명된 개정 버전을 생성할 수 있습니다.

**중요**  
온프레미스 인스턴스를 대상으로 하는 배포 그룹을 만드는 과정에서 기존 CodeDeploy 서비스 역할을 다시 사용하는 경우 서비스 역할 정책 설명의 `Action` 부분에 `Tag:get*`을(를) 포함해야 합니다. 자세한 내용은 [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md) 단원을 참조하십시오.

## 5단계: 온프레미스 인스턴스에 대한 배포 추적
<a name="instances-on-premises-register-instance-5-track-deployment"></a>

등록되고 태그가 지정된 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포한 후 배포의 진행 상황을 추적할 수 있습니다.

Amazon EC2 인스턴스에 대한 배포를 추적하는 것과 유사한 방식으로 온프레미스 인스턴스에 대한 배포를 추적합니다. 지침은 [CodeDeploy 배포 세부 정보 보기](deployments-view-details.md) 단원을 참조하세요.

더 많은 옵션은 [CodeDeploy에서 온프레미스 인스턴스 작업 관리](on-premises-instances-operations.md)을 참조하세요.

# register-on-premises-instance 명령(IAM 사용자 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.
<a name="register-on-premises-instance-iam-user-arn"></a>

**중요**  
IAM 사용자를 사용하여 인스턴스를 등록하는 것은 인증에 정적(영구) 보안 인증 정보를 사용하므로 권장되지 않습니다. 보안을 강화하려면 인증을 위한 임시 보안 인증 정보를 사용하여 인스턴스를 등록하는 것이 좋습니다. 자세한 내용은 [register-on-premises-instance 명령(IAM 세션 ARN)을 사용하여 온프레미스 인스턴스를 등록합니다.](register-on-premises-instance-iam-session-arn.md) 단원을 참조하십시오.

**중요**  
IAM 사용자의 액세스 키(영구 보안 인증 정보)를 교체할 계획이 있어야 합니다. 자세한 내용은 [액세스 키 교체](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)를 참조하세요.

다음 지침에 따라 온프레미스 인스턴스를 구성하고 인증에 정적 IAM 사용자 자격 증명을 사용하여 주로 CodeDeploy에 등록하고 태그를 지정합니다.

**Topics**
+ [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1)
+ [2단계: IAM 사용자에게 권한 할당](#register-on-premises-instance-iam-user-arn-2)
+ [3단계: IAM 사용자 자격 증명을 가져오기](#register-on-premises-instance-iam-user-arn-3)
+ [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)
+ [5단계: 설치 및 구성 AWS CLI](#register-on-premises-instance-iam-user-arn-5)
+ [6단계: AWS\$1REGION 환경 변수 설정(Ubuntu Server 및 RHEL만 해당)](#register-on-premises-instance-iam-user-arn-6)
+ [7단계: CodeDeploy 에이전트 설치](#register-on-premises-instance-iam-user-arn-7)
+ [8단계: CodeDeploy에 온프레미스 인스턴스 등록](#register-on-premises-instance-iam-user-arn-8)
+ [9단계: 온프레미스 인스턴스에 태그 지정](#register-on-premises-instance-iam-user-arn-9)
+ [10단계 : 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포합니다.](#register-on-premises-instance-iam-user-arn-10)
+ [11단계: 온프레미스 인스턴스에 대한 배포 추적](#register-on-premises-instance-iam-user-arn-11)

## 1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성
<a name="register-on-premises-instance-iam-user-arn-1"></a>

온프레미스 인스턴스가 CodeDeploy를 인증하고 상호 작용하는 데 사용할 IAM 사용자를 생성합니다.

**중요**  
참여하는 각 온프레미스 인스턴스에 대해 별도의 IAM 사용자를 생성해야 합니다. 개별 IAM 사용자를 여러 온프레미스 인스턴스에 재사용하려고 하면 해당 온프레미스 인스턴스를 CodeDeploy로 등록하거나 태그를 지정하지 못할 수 있습니다. 이러한 온프레미스 인스턴스에 대한 배포는 영구 보류 상태로 유지되거나 완전히 실패할 수 있습니다.

IAM 사용자에게 해당 용도를 식별하는 이름(예: CodeDeployUser-OnPrem)을 할당하는 것이 좋습니다.

 AWS CLI 또는 IAM 콘솔을 사용하여 IAM 사용자를 생성할 수 있습니다. 자세한 내용은 [AWS 계정의 IAM 사용자 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)을 참조하세요.

**중요**  
 AWS CLI 또는 IAM 콘솔을 사용하여 새 IAM 사용자를 생성하든 상관없이 사용자에게 제공된 사용자 ARN을 기록해 둡니다. 나중에 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4) 및 [8단계: CodeDeploy에 온프레미스 인스턴스 등록](#register-on-premises-instance-iam-user-arn-8)에서 이 정보가 필요합니다.

## 2단계: IAM 사용자에게 권한 할당
<a name="register-on-premises-instance-iam-user-arn-2"></a>

온프레미스 인스턴스가 Amazon S3 버킷의 애플리케이션 개정 버전을 배포할 경우 IAM 사용자에게 해당 버킷과 상호 작용할 수 있는 권한을 할당해야 합니다. AWS CLI 또는 IAM 콘솔을 사용하여 권한을 할당할 수 있습니다.

**참고**  
GitHub 리포지토리에서만 애플리케이션 개정 버전을 배포하는 경우이 단계를 건너 뛰고 [3단계: IAM 사용자 자격 증명을 가져오기](#register-on-premises-instance-iam-user-arn-3)(으)로 이동합니다. ([1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1)에서 생성한 IAM 사용자에 대한 정보가 계속 필요합니다. 이후 단계에서 사용하게 됩니다.)

**권한을 할당하려면(CLI)**

1.  AWS CLI을(를) 호출하는 데 사용하는 Amazon EC2 인스턴스 또는 디바이스에서 다음 정책 내용이 포함된 파일을 생성합니다. 파일의 이름을 **CodeDeploy-OnPrem-Permissions.json**와(과) 같이 지정한 다음 파일을 저장합니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```
**참고**  
온프레미스 인스턴스에서 액세스해야 하는 Amazon S3 버킷으로만 이 정책을 제한하는 것이 좋습니다. 이 정책을 제한하는 경우 AWS CodeDeploy 에이전트가 포함된 Amazon S3 버킷에 대한 액세스 권한도 부여해야 합니다. 그렇지 않으면 연결된 온프레미스 인스턴스에 CodeDeploy 에이전트를 설치 또는 업데이트할 때 오류가 발생할 수 있습니다.  
예:  

   ```
   {
     "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/*"
         ]
       }
     ]
   }
   ```

1. [put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html) 명령을 호출하여 IAM 사용자 이름(`--user-name` 옵션 사용), 정책 이름(`--policy-name` 옵션 사용), 새로 생성된 정책 문서의 경로(`--policy-document` 옵션 사용)를 지정합니다. 예를 들어, **CodeDeploy-OnPrem-Permissions.json** 파일은 이 명령을 호출하는 것과 동일한 디렉터리(폴더)에 있다고 가정합니다.
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   ```
   aws iam put-user-policy --user-name CodeDeployUser-OnPrem --policy-name CodeDeploy-OnPrem-Permissions --policy-document file://CodeDeploy-OnPrem-Permissions.json
   ```

**권한을 할당하려면(콘솔)**

1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택합니다. (**시작하기** 버튼이 표시되면 이 버튼을 선택한 후 **정책 생성**을 선택합니다.)

1. **자체 정책 생성** 옆의 **선택**을 선택하세요.

1. **정책 이름**) 상자에 이 정책의 이름(예: **CodeDeploy-OnPrem-Permissions**)을 입력합니다.

1. **정책 문서** 상자에 다음 권한 표현식을 입력하거나 붙여 넣습니다. 그러면 AWS CodeDeploy 가 정책에 지정된 Amazon S3 버킷의 애플리케이션 개정을 IAM 사용자를 대신하여 온프레미스 인스턴스에 배포할 수 있습니다.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```

1. **정책 생성**을 선택하세요.

1. 탐색 창에서 **사용자**를 선택합니다.

1. 사용자 목록에서 [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1)에서 생성한 IAM 사용자의 이름을 찾아서 선택합니다.

1. **권한** 탭의 **관리형 정책**에서 **정책 연결**을 선택합니다.

1. **CodeDeploy-OnPrem-Permissions**(이)라는 정책을 선택한 후 **정책 연결**을 선택합니다.

## 3단계: IAM 사용자 자격 증명을 가져오기
<a name="register-on-premises-instance-iam-user-arn-3"></a>

IAM 사용자의 보안 키 ID와 보안 액세스 키를 가져옵니다. [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)을(를) 위해 이 둘이 필요합니다. AWS CLI 또는 IAM 콘솔을 사용하여 보안 키 ID와 보안 액세스 키를 가져올 수 있습니다.

**참고**  
보안 키 ID와 보안 액세스 키가 이미 있는 경우 이 단계를 건너뛰고 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)으(로) 직접 이동하세요.  
사용자는 AWS 외부에서와 상호 작용하려는 경우 프로그래밍 방식으로 액세스해야 합니다 AWS Management Console. 프로그래밍 방식 액세스를 부여하는 방법은에 액세스하는 사용자 유형에 따라 다릅니다 AWS.  
사용자에게 프로그래밍 방식 액세스 권한을 부여하려면 다음 옵션 중 하나를 선택합니다.  


****  

| 프로그래밍 방식 액세스가 필요한 사용자 | 목적 | 방법 | 
| --- | --- | --- | 
| IAM | (권장) 콘솔 자격 증명을 임시 자격 증명으로 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 
|  작업 인력 ID (IAM Identity Center에서 관리되는 사용자)  | 임시 자격 증명을 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 
| IAM | 임시 자격 증명을 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. | IAM 사용 설명서의 [AWS 리소스에서 임시 자격 증명 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)의 지침을 따릅니다. | 
| IAM | (권장되지 않음)장기 자격 증명을 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 

**자격 증명을 가져오려면(CLI)**

1. [list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html) 명령을 호출하여 IAM 사용자의 이름(`--user-name` 옵션 사용)을 지정하고 액세스 키 ID만 쿼리합니다(`--query` 및 `--output` 옵션 사용). 예:

   ```
   aws iam list-access-keys --user-name CodeDeployUser-OnPrem --query "AccessKeyMetadata[*].AccessKeyId" --output text
   ```

1. 출력에 키가 나타나지 않거나 출력에 하나의 키에 대한 정보만 나타나는 경우 [create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html) 명령을 호출하여 IAM 사용자의 이름을 지정합니다(`--user-name` 옵션 사용).

   ```
   aws iam create-access-key --user-name CodeDeployUser-OnPrem
   ```

   **create-access-key** 명령에 대한 호출의 출력에서 `AccessKeyId` 및 `SecretAccessKey` 필드의 값을 기록해 둡니다. 나중에 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)에서 이 정보가 필요합니다.
**중요**  
지금이 보안 액세스 키에 액세스할 수 있는 유일한 시간입니다. 이 보안 액세스 키에 대한 액세스 권한을 잊어버리거나 분실한 경우 [3단계: IAM 사용자 자격 증명을 가져오기](#register-on-premises-instance-iam-user-arn-3)의 단계에 따라 새 액세스 키를 생성해야 합니다.

1. 두 개의 액세스 키가 이미 나열되어 있는 경우 [delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html) 명령을 호출하여 IAM 사용자의 이름(`--user-name` 옵션 사용) 및 삭제할 액세스 키의 ID(`--access-key-id` 옵션 사용)를 지정합니다. 그런 다음 이 단계의 앞부분에서 설명한 대로 **create-access-key** 명령을 호출합니다. 다음은 **delete-access-key** 명령 호출 예제입니다.

   ```
   aws iam delete-access-key --user-name CodeDeployUser-OnPrem --access-key-id access-key-ID
   ```
**중요**  
**delete-access-key** 명령을 호출하여 이러한 액세스 키 중 하나를 삭제하고 온프레미스 인스턴스가 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)에 설명된 대로 이미 이 액세스 키를 사용하고 있는 경우 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)의 지침에 따라 이 IAM 사용자와 연결된 다른 액세스 키 ID 및 보안 액세스 키를 지정해야 합니다. 그렇지 않으면 해당 온프레미스 인스턴스에 대한 배포가 영구 보류 상태로 유지되거나 완전히 실패할 수 있습니다.

**자격 증명을 가져오려면(콘솔)**

1. 

   1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

   1. 사용자 목록이 표시되지 않으면 탐색 창에서 **사용자**를 선택합니다.

   1. 사용자 목록에서 [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1)에서 생성한 IAM 사용자의 이름을 찾아서 선택합니다.

1. **보안 자격 증명** 탭에서 키가 없거나 키가 하나만 나열되어 있는 경우 **액세스 키 생성**을 선택합니다.

   두 개의 액세스 키가 나열되는 경우 그 중 하나를 삭제해야 합니다. 액세스 키 중 하나 옆에 있는 **삭제**를 선택한 다음 **액세스 키 생성**을 선택합니다.
**중요**  
이러한 액세스 키 중 하나 옆에 있는**삭제**를 선택한 경우, 온프레미스 인스턴스가 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)에 설명된 대로 이미 이 액세스 키를 사용하고 있다면 다시 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)의 지침에 따라 이 IAM 사용자와 연결된 다른 액세스 키 ID 및 보안 액세스 키를 지정해야 합니다. 그렇지 않으면 해당 온프레미스 인스턴스에 대한 배포가 영구 보류 상태로 유지되거나 완전히 실패할 수 있습니다.

1. **표시**를 선택하고 액세스 키 ID와 보안 액세스 키를 기록해 둡니다. 다음 단계에서 이 정보가 필요합니다. 또는 **.csv 파일 다운로드**를 선택하여 액세스 키 ID와 보안 액세스 키의 복사본을 저장합니다.
**중요**  
자격 증명을 기록하거나 다운로드하지 않는 한 지금이 이 보안 액세스 키에 액세스할 수 있는 유일한 시간입니다. 이 보안 액세스 키에 대한 액세스 권한을 잊어버리거나 분실한 경우 [3단계: IAM 사용자 자격 증명을 가져오기](#register-on-premises-instance-iam-user-arn-3)의 단계에 따라 새 액세스 키를 생성해야 합니다.

1. **닫기**를 선택하여 **사용자 > *IAM 사용자 이름*** 페이지로 돌아옵니다.

## 4단계: 온프레미스 인스턴스에 구성 파일 추가
<a name="register-on-premises-instance-iam-user-arn-4"></a>

루트 또는 관리자 권한을 사용하여 온프레미스 인스턴스에 구성 파일을 추가합니다. 이 구성 파일은 CodeDeploy에 사용할 IAM 사용자 자격 증명과 대상 AWS 리전을 선언하는 데 사용됩니다. 온프레미스 인스턴스의 특정 위치에 파일을 추가해야 합니다. 파일에는 IAM 사용자의 ARN, 보안 키 ID, 보안 액세스 키 및 대상 AWS 리전이 포함되어야 합니다. 파일은 특정 형식을 따라야 합니다.

1. 온프레미스 인스턴스의 다음 위치에 `codedeploy.onpremises.yml`(Ubuntu Server 또는 RHEL 온프레미스 인스턴스의 경우) 또는 `conf.onpremises.yml`(Windows Server 온-레미스 인스턴스의 경우)라는 이름의 파일을 만듭니다.
   + Ubuntu Server: `/etc/codedeploy-agent/conf`
   + Windows Server: `C:\ProgramData\Amazon\CodeDeploy`

1. 텍스트 편집기를 사용하여 새로 만든 `codedeploy.onpremises.yml` 또는 `conf.onpremises.yml` 파일에 다음 정보를 추가하세요.

   ```
   ---
   aws_access_key_id: secret-key-id
   aws_secret_access_key: secret-access-key
   iam_user_arn: iam-user-arn
   region: supported-region
   ```

   위치:
   + *secret-key-id*는 [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1) 또는 [3단계: IAM 사용자 자격 증명을 가져오기](#register-on-premises-instance-iam-user-arn-3)에서 기록해 둔 해당 IAM 사용자의 보안 키 ID입니다.
   + *secret-access-key*는 [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1) 또는 [3단계: IAM 사용자 자격 증명을 가져오기](#register-on-premises-instance-iam-user-arn-3)에서 기록해 둔 해당 IAM 사용자의 보안 액세스 키입니다.
   + *iam-user-arn*는 [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1)에서 앞서 기록해 둔 IAM 사용자의 ARN 입니다.
   + *supported-region*은 CodeDeploy에서 지원하는 리전 식별자로, 여기에 CodeDeploy의 애플리케이션, 배포 그룹 및 애플리케이션 개정 버전이 있습니다(예:`us-west-2`). 전체 리전 목록은 *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)를 참조하세요.

    
**중요**  
[3단계: IAM 사용자 자격 증명을 가져오기](#register-on-premises-instance-iam-user-arn-3)에서 이러한 액세스 키 중 하나 옆에 있는 **삭제**를 선택한 경우, 온프레미스 인스턴스가 이미 연결된 이 액세스 키 ID와 보안 액세스 키를 사용하고 있다면 [4단계: 온프레미스 인스턴스에 구성 파일 추가](#register-on-premises-instance-iam-user-arn-4)의 지침에 따라 이 IAM 사용자와 연결된 다른 액세스 키 ID 및 보안 액세스 키를 지정해야 합니다. 그렇지 않으면 해당 온프레미스 인스턴스에 대한 배포가 영구 보류 상태로 유지되거나 완전히 실패할 수 있습니다.

## 5단계: 설치 및 구성 AWS CLI
<a name="register-on-premises-instance-iam-user-arn-5"></a>

온프레미스 인스턴스 AWS CLI 에를 설치하고 구성합니다. ( AWS CLI 는에서 온프레미스 인스턴스에 CodeDeploy 에이전트를 다운로드하고 설치하는 [7단계: CodeDeploy 에이전트 설치](#register-on-premises-instance-iam-user-arn-7) 데 사용됩니다.)

1. 온프레미스 인스턴스 AWS CLI 에를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [로 설정 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)의 지침을 따르세요.
**참고**  
온프레미스 인스턴스 작업을 위한 CodeDeploy 명령은 AWS CLI의 버전 1.7.19에서 사용할 수 있게 되었습니다. 버전이 AWS CLI 이미 설치되어 있는 경우를 호출하여 버전을 확인할 수 있습니다**aws --version**.

1. 온프레미스 인스턴스 AWS CLI 에서를 구성하려면 *AWS Command Line Interface 사용 설명서*의 [구성 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)에 있는 지침을 따르세요.
**중요**  
를 구성할 때 AWS CLI (예: **aws configure** 명령을 호출하여) 최소한에 지정된 액세스 권한 외에도 다음 AWS 액세스 권한이 있는 IAM 사용자의 보안 키 ID와 보안 액세스 키를 지정해야 합니다[온프레미스 인스턴스 구성을 위한 사전 요구 사항](instances-on-premises-prerequisites.md). 이렇게 하면 온프레미스 인스턴스에 CodeDeploy 에이전트를 다운로드하고 설치할 수 있습니다.  
   

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket1/*"
         ]
       }     
     ]
   }
   ```

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "*"
         ]
       }     
     ]
   }
   ```
이러한 액세스 권한은 [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1) 또는 다른 IAM 사용자에게 연결할 수 있습니다. 이러한 권한을 IAM 사용자에게 할당하려면 해당 단계의 액세스 권한 대신 이러한 액세스 권한을 사용하여 [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1)의 지침을 따릅니다.

## 6단계: AWS\$1REGION 환경 변수 설정(Ubuntu Server 및 RHEL만 해당)
<a name="register-on-premises-instance-iam-user-arn-6"></a>

온프레미스 인스턴스에서 Ubuntu Server 또는 RHEL을 실행하지 않는 경우 이 단계를 건너뛰고 [7단계: CodeDeploy 에이전트 설치](#register-on-premises-instance-iam-user-arn-7)으(로) 직접 이동합니다.

Ubuntu Server 또는 RHEL 온프레미스 인스턴스에 CodeDeploy 에이전트를 설치하고 새 버전을 사용할 수 있을 때마다 인스턴스가 CodeDeploy 에이전트를 업데이트하도록 설정합니다. 인스턴스에서 `AWS_REGION` 환경 변수를 CodeDeploy에서 지원하는 리전 중 하나의 식별자로 설정하면 됩니다. CodeDeploy 애플리케이션, 배포 그룹 및 애플리케이션 개정 버전이 있는 리전으로 값을 설정하는 것이 좋습니다(예: `us-west-2`). 전체 리전 목록은 *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)를 참조하세요.

환경 변수를 설정하려면 터미널에서 다음을 호출하세요.

```
export AWS_REGION=supported-region
```

여기서 *supported-region*이 리전의 식별자입니다(예: `us-west-2`).

## 7단계: CodeDeploy 에이전트 설치
<a name="register-on-premises-instance-iam-user-arn-7"></a>

온프레미스 인스턴스에 CodeDeploy 에이전트 설치
+ Ubuntu Server 온프레미스 인스턴스의 경우 [Ubuntu Server용 CodeDeploy 에이전트 설치](codedeploy-agent-operations-install-ubuntu.md)의 지침을 따르고 이 페이지로 돌아옵니다.
+ RHEL 온프레미스 인스턴스의 경우 [Amazon Linux 또는 RHEL용 CodeDeploy 에이전트 설치](codedeploy-agent-operations-install-linux.md)의 지침을 따르고 이 페이지로 돌아옵니다.
+ Windows Serve 온프레미스 인스턴스의 경우 [Windows Server용 CodeDeploy 에이전트 설치](codedeploy-agent-operations-install-windows.md)의 지침을 따르고 이 페이지로 돌아옵니다.

## 8단계: CodeDeploy에 온프레미스 인스턴스 등록
<a name="register-on-premises-instance-iam-user-arn-8"></a>

이 단계의 지침은 온프레미스 인스턴스 자체에서 온프레미스 인스턴스를 등록한다고 가정합니다. 에 설명된 대로가 AWS CLI 설치 및 구성된 별도의 디바이스 또는 인스턴스에서 온프레미스 인스턴스를 등록할 수 있습니다[5단계: 설치 및 구성 AWS CLI](#register-on-premises-instance-iam-user-arn-5).

 AWS CLI 를 사용하여 배포에 사용할 수 있도록 CodeDeploy에 온프레미스 인스턴스를 등록합니다.

1. 를 사용하려면 먼저에서 생성한 IAM 사용자의 사용자 ARN AWS CLI이 필요합니다[1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1). 아직 사용자 ARN 이 없는 경우 [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 명령을 호출하여 IAM 사용자의 이름(`--user-name` 옵션 사용)을 지정하고 사용자 ARN만 쿼리합니다(`--query` 및 `--output` 옵션 사용).

   ```
   aws iam get-user --user-name CodeDeployUser-OnPrem --query "User.Arn" --output text
   ```

1. [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 명령을 호출하여 다음을 지정합니다.
   + 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-name` 옵션 사용).
**중요**  
특히 디버깅을 위해 온프레미스 인스턴스를 식별하려면 온프레미스 인스턴스의 일부 고유 특성(예: 일련 번호 또는 해당되는 경우 내부 자산 식별자)에 매핑되는 이름을 지정하는 것이 좋습니다. 이름으로 MAC 주소를 지정하는 경우 MAC 주소에는 콜론(`:`)과 같이 CodeDeploy에서 허용하지 않는 문자가 포함되어 있다는 점에 유의하세요. 허용되는 문자 목록은 [CodeDeploy 할당량](limits.md) 단원을 참조하세요.
   + [1단계: 온프레미스 인스턴스에 대한 IAM 사용자 생성](#register-on-premises-instance-iam-user-arn-1)에서 생성한 IAM 사용자의 사용자 ARN(`--iam-user-arn` 옵션 사옹).

     예:

     ```
     aws deploy register-on-premises-instance --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem
     ```

## 9단계: 온프레미스 인스턴스에 태그 지정
<a name="register-on-premises-instance-iam-user-arn-9"></a>

 AWS CLI 또는 CodeDeploy 콘솔을 사용하여 온프레미스 인스턴스에 태그를 지정할 수 있습니다. CodeDeploy는 온프레미스 인스턴스 태그를 사용하여 배포 중 배포 대상을 식별합니다.

**온프레미스 인스턴스에 태그 지정(CLI)**
+ [add-tags-to-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html) 명령을 호출하여 다음을 지정합니다.

   
  + 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-names` 옵션 사용).
  + 사용하려는 온프레미스 인스턴스 태그 키 및 태그 값의 이름(`--tags` 옵션 사용). 이름과 값을 둘 다 지정해야 합니다. CodeDeploy는 값만 있는 온프레미스 인스턴스 태그를 허용하지 않습니다.

    예:

    ```
    aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
    ```

**온프레미스 인스턴스에 태그 지정(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) CodeDeploy 콘솔을 엽니다.
**참고**  
[CodeDeploy 시작하기](getting-started-codedeploy.md)에서 설정한 사용자와 동일한 사용자로 로그인합니다.

1. CodeDeploy 메뉴에서 **온프레미스 인스턴스**를 선택합니다.

1. 온프레미스 인스턴스 목록에서 태그를 지정할 온프레미스 인스턴스 옆에 있는 화살표를 선택합니다.

1. 태그 목록에서 원하는 태그 키와 태그 값을 선택하거나 입력합니다. 태그 키와 태그 값을 입력하면 다른 행이 나타납니다. 최대 10개의 태그에 대해 이 작업을 반복할 수 있습니다. 태그를 제거하려면 삭제 아이콘(![\[The delete icon.\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/images/delete-triggers-x.png))을 선택합니다.

1. 태그를 추가한 후 **태그 업데이트**를 선택합니다.

## 10단계 : 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포합니다.
<a name="register-on-premises-instance-iam-user-arn-10"></a>

등록 및 태그가 지정된 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포할 준비가 되었습니다.

애플리케이션 개정 버전을 Amazon EC2 인스턴스에 배포하는 것과 유사한 방식으로 온프레미스 인스턴스에 배포합니다. 지침은 [CodeDeploy에서 배포 만들기](deployments-create.md) 단원을 참조하세요. 이러한 지침은 애플리케이션 만들기, 배포 그룹 만들기 및 애플리케이션 개정 버전 준비를 비롯한 필수 구성 요소에 대한 링크가 포함되어 있습니다. 배포하기 위해 간단한 샘플 애플리케이션 개정 버전이 필요한 경우 [튜토리얼: CodeDeploy를 사용하여 온프레미스 인스턴스에 애플리케이션 배포(Windows Server, Ubuntu Server 또는 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)의 [2단계: 샘플 애플리케이션 수정 버전 만들기](tutorials-on-premises-instance-2-create-sample-revision.md)에 설명된 개정 버전을 생성할 수 있습니다.

**중요**  
온프레미스 인스턴스를 대상으로 하는 배포 그룹을 만드는 과정에서 CodeDeploy 서비스 역할을 다시 사용하는 경우 서비스 역할 정책 설명의 `Action` 부분에 `Tag:get*`을(를) 포함해야 합니다. 자세한 내용은 [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md) 단원을 참조하십시오.

## 11단계: 온프레미스 인스턴스에 대한 배포 추적
<a name="register-on-premises-instance-iam-user-arn-11"></a>

등록되고 태그가 지정된 온프레미스 인스턴스에 애플리케이션 개정 버전을 배포한 후 배포의 진행 상황을 추적할 수 있습니다.

Amazon EC2 인스턴스에 대한 배포를 추적하는 것과 유사한 방식으로 온프레미스 인스턴스에 대한 배포를 추적합니다. 지침은 [CodeDeploy 배포 세부 정보 보기](deployments-view-details.md) 단원을 참조하세요.

# CodeDeploy에서 온프레미스 인스턴스 작업 관리
<a name="on-premises-instances-operations"></a>

CodeDeploy에 등록한 후 온프레미스 인스턴스의 작업을 관리하려면 이 섹션의 지침에 따라 자세한 정보 가져오기, 태그 제거, 온프레미스 인스턴스 제거 및 등록 취소 등의 작업을 관리할 수 있습니다.

**Topics**
+ [단일 온프레미스 인스턴스에 대한 정보를 가져옵니다.](on-premises-instances-operations-view-details-single.md)
+ [여러 온프레미스 인스턴스 정보 가져오기](on-premises-instances-operations-view-details-multiple.md)
+ [온프레미스 인스턴스에서 온프레미스 인스턴스 태그 수동 제거](on-premises-instances-operations-remove-tags.md)
+ [CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일 제거](on-premises-instances-operations-uninstall-agent.md)
+ [온프레미스 인스턴스 등록 자동 취소](on-premises-instances-operations-deregister-automatically.md)
+ [온프레미스 인스턴스 등록을 수동으로 취소합니다.](on-premises-instances-operations-deregister-manually.md)

# 단일 온프레미스 인스턴스에 대한 정보를 가져옵니다.
<a name="on-premises-instances-operations-view-details-single"></a>

[CodeDeploy 배포 세부 정보 보기](deployments-view-details.md)의 지침에 따라 단일 온프레미스 인스턴스에 대한 정보를 가져오는 데 필요합니다. AWS CLI 또는 CodeDeploy 콘솔을 사용하여 단일 온프레미스 인스턴스에 대한 자세한 정보를 얻을 수 있습니다.

**단일 온프레미스 인스턴스에 대한 정보를 가져오려면(CLI)**
+ [get-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-on-premises-instance.html) 명령을 호출하여 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-name` 옵션 사용)을 지정합니다.

  ```
  aws deploy get-on-premises-instance --instance-name AssetTag12010298EX
  ```

**단일 온프레미스 인스턴스에 대한 정보를 가져오려면(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) CodeDeploy 콘솔을 엽니다.
**참고**  
[CodeDeploy 시작하기](getting-started-codedeploy.md)에서 설정한 사용자와 동일한 사용자로 로그인합니다.

1. 탐색 창에서 **배포**를 확장하고 **온프레미스 인스턴스**를 선택합니다.

1. 온프레미스 인스턴스 목록에서 세부 정보를 표시할 온프레미스 인스턴스의 이름을 선택합니다.

# 여러 온프레미스 인스턴스 정보 가져오기
<a name="on-premises-instances-operations-view-details-multiple"></a>

[CodeDeploy 배포 세부 정보 보기](deployments-view-details.md)의 지침에 따라 온프레미스 인스턴스에 대한 정보를 가져올 수 있습니다. AWS CLI 또는 CodeDeploy 콘솔을 사용하여 온프레미스 인스턴스에 대한 자세한 정보를 얻을 수 있습니다.

**여러 온프레미스 인스턴스에 대한 정보를 가져오려면(CLI)**

1. 온프레미스 인스턴스 이름의 목록을 보려면 [list-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-on-premises-instances.html) 명령을 호출하여 다음을 지정합니다.
   + 등록 또는 등록 취소된 모든 온프레미스 인스턴스에 대한 정보를 가져올지 여부(각각 `--registration-status`, `Registered` 또는 `Deregistered` 옵션 사용). 이 옵션을 생략하면 등록된 온프레미스 인스턴스 이름과 등록 취소된 온프레미스 인스턴스 이름이 모두 반환됩니다.
   + 특정 온프레미스 인스턴스 태그로 태그가 지정된 온프레미스 인스턴스에 대한 정보만 가져오는지 여부(`--tag-filters` 옵션). 각 온프레미스 인스턴스 태그에 대해 `Key`, `Value`, 및 `Type`(항상`KEY_AND_VALUE`여야 함)을 지정합니다. 여러 온프레미스 인스턴스 태그는 각각 `Key`, `Value`, `Type` 삼중항 사이에 공백으로 구분합니다..

   예:

   ```
   aws deploy list-on-premises-instances --registration-status Registered --tag-filters Key=Name,Value=CodeDeployDemo-OnPrem,Type=KEY_AND_VALUE Key=Name,Value=CodeDeployDemo-OnPrem-Beta,Type=KEY_AND_VALUE
   ```

1. 자세한 내용은 온프레미스 인스턴스의 이름(`--instance-names` 옵션 사용)과 함께 [batch-get-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/batch-get-on-premises-instances.html) 명령을 호출합니다.

   ```
   aws deploy batch-get-on-premises-instances --instance-names AssetTag12010298EX AssetTag09920444EX
   ```

**여러 온프레미스 인스턴스에 대한 정보를 가져오려면(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) CodeDeploy 콘솔을 엽니다.
**참고**  
[CodeDeploy 시작하기](getting-started-codedeploy.md)에서 설정한 사용자와 동일한 사용자로 로그인합니다.

1. 탐색 창에서 **배포**를 확장하고 **온프레미스 인스턴스**를 선택합니다.

   온프레미스 인스턴스에 대한 자세한 정보가 표시됩니다.

# 온프레미스 인스턴스에서 온프레미스 인스턴스 태그 수동 제거
<a name="on-premises-instances-operations-remove-tags"></a>

일반적으로 해당 태그가 더 이상 사용되지 않는 경우 온프레미스 인스턴스에서 온프레미스 인스턴스 태그를 제거하거나 해당 태그에 의존하는 배포 그룹에서 온프레미스 인스턴스를 제거하려고 합니다. AWS CLI 또는 AWS CodeDeploy 콘솔을 사용하여 온프레미스 인스턴스에서 온프레미스 인스턴스 태그를 제거할 수 있습니다.

온프레미스 인스턴스를 등록 취소하기 전에 온프레미스 인스턴스에서 인스턴스를 제거할 필요가 없습니다.

온프레미스 인스턴스에서 온프레미스 인스턴스 태그를 수동으로 제거해도 인스턴스가 등록 취소되지 않습니다. 인스턴스에서 CodeDeploy 에이전트를 제거하지는 않습니다. 인스턴스에서 구성 파일은 제거되지 않습니다. 인스턴스와 연결된 IAM 사용자는 삭제되지 않습니다.

온프레미스 인스턴스의 등록을 자동으로 취소하는 방법은 [온프레미스 인스턴스 등록 자동 취소](on-premises-instances-operations-deregister-automatically.md) 단원을 참조하세요.

온프레미스 인스턴스의 등록을 수동으로 취소하는 방법은 [온프레미스 인스턴스 등록을 수동으로 취소합니다.](on-premises-instances-operations-deregister-manually.md) 단원을 참조하세요.

CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일을 제거하려면 [CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일 제거](on-premises-instances-operations-uninstall-agent.md) 단원을 참조하세요.

온프레미스 인스턴스에서 CodeDeploy 에이전트만 수동으로 제거하려면 [CodeDeploy 에이전트 작업 관리](codedeploy-agent-operations.md) 단원을 참조하세요.

연결된 IAM 사용자를 수동으로 삭제하려면 [AWS 계정에서 IAM 사용자 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)를 참조하세요.

**온프레미스 인스턴스에서 온프레미스 인스턴스 태그 제거(CLI)**
+ [remove-tags-from-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/remove-tags-from-on-premises-instances.html)를 호출하고 다음을 지정합니다.

   
  + 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-names` 옵션 사용).
  + 제거하고자 하는 태그의 이름과 값(`--tags` 옵션 사용).

    예:

    ```
    aws deploy remove-tags-from-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
    ```

**온프레미스 인스턴스에서 온프레미스 인스턴스 태그 제거(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) CodeDeploy 콘솔을 엽니다.
**참고**  
[CodeDeploy 시작하기](getting-started-codedeploy.md)에서 설정한 사용자와 동일한 사용자로 로그인합니다.

1. 탐색 창에서 **배포**를 확장하고 **온프레미스 인스턴스**를 선택합니다.

1. 온프레미스 인스턴스 목록에서 태그를 제거할 온프레미스 인스턴스의 이름을 선택합니다.

1. **태그**에서 제거할 각 태그 옆의 **제거**를 선택합니다.

1. 태그를 삭제한 후 **태그 업데이트**를 선택합니다.

# CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일 제거
<a name="on-premises-instances-operations-uninstall-agent"></a>

일반적으로 더 이상 배포할 계획이 없으면 CodeDeploy 에이전트를 제거하고 온프레미스 인스턴스에서 구성 파일을 제거합니다.

**참고**  
CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일을 제거해도 온프레미스 인스턴스의 등록이 취소되지 않습니다. 온프레미스 인스턴스와 연결된 모든 온프레미스 인스턴스 태그의 연결은 해제되지 않습니다. 온프레미스 인스턴스와 연결된 IAM 사용자는 삭제되지 않습니다.  
온프레미스 인스턴스의 등록을 자동으로 취소하는 방법은 [온프레미스 인스턴스 등록 자동 취소](on-premises-instances-operations-deregister-automatically.md) 단원을 참조하세요.  
온프레미스 인스턴스의 등록을 수동으로 취소하는 방법은 [온프레미스 인스턴스 등록을 수동으로 취소합니다.](on-premises-instances-operations-deregister-manually.md) 단원을 참조하세요.  
연결된 온프레미스 인스턴스 태그의 연결을 수동으로 해제하려면 [온프레미스 인스턴스에서 온프레미스 인스턴스 태그 수동 제거](on-premises-instances-operations-remove-tags.md) 단원을 참조하세요.  
온프레미스 인스턴스에서 CodeDeploy 에이전트를 수동으로 제거하려면 [CodeDeploy 에이전트 작업 관리](codedeploy-agent-operations.md) 단원을 참조하세요.  
연결된 IAM 사용자를 수동으로 삭제하려면 [AWS 계정에서 IAM 사용자 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)를 참조하세요.

온프레미스 인스턴스에서 AWS CLI 를 사용하여 [제거](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html) 명령을 호출합니다.

예제:

```
aws deploy uninstall
```

**uninstall** 명령은 다음 작업을 수행합니다.

1. 온프레미스 인스턴스에서 실행 중인 CodeDeploy 에이전트를 중지합니다.

1. 온프레미스 인스턴스에서 CodeDeploy 에이전트를 제거합니다.

1. 온프레미스 인스턴스에서 구성 파일을 제거합니다. (Ubuntu Server와 RHEL의 경우, `/etc/codedeploy-agent/conf`/`codedeploy.onpremises.yml`. Windows Server의 경우 `C:\ProgramData\Amazon\CodeDeploy`\$1`conf.onpremises.yml`.)

# 온프레미스 인스턴스 등록 자동 취소
<a name="on-premises-instances-operations-deregister-automatically"></a>

일반적으로 온프레미스 인스턴스에 더 이상 배포할 계획이 없는 경우 등록을 취소합니다. 온프레미스 인스턴스의 등록을 취소하면 온프레미스 인스턴스가 배포 그룹의 온프레미스 인스턴스 태그의 일부일 수 있지만 온프레미스 인스턴스는 배포에 포함되지 않습니다. 를 사용하여 온프레미스 인스턴스의 등록 AWS CLI 을 취소할 수 있습니다.

**참고**  
CodeDeploy 콘솔을 사용하여 온프레미스 인스턴스를 등록 취소할 수 없습니다. 또한 온프레미스 인스턴스를 등록 취소하면 온프레미스 인스턴스와 연결된 모든 온프레미스 인스턴스 태그가 제거됩니다. 온프레미스 인스턴스에서 CodeDeploy 에이전트를 제거하지 않습니다. 온프레미스 인스턴스에서 온프레미스 인스턴스 구성 파일은 제거하지 않습니다.  
CodeDeploy 콘솔을 사용하여 이 섹션의 일부 (전부는 아님) 작업을 수행하려면 [온프레미스 인스턴스 등록을 수동으로 취소합니다.](on-premises-instances-operations-deregister-manually.md)의 CodeDeploy 콘솔 섹션을 참조하세요.  
연결된 온프레미스 인스턴스 태그의 연결을 수동으로 해제하려면 [온프레미스 인스턴스에서 온프레미스 인스턴스 태그 수동 제거](on-premises-instances-operations-remove-tags.md) 단원을 참조하세요.  
CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일을 제거하려면 [CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일 제거](on-premises-instances-operations-uninstall-agent.md) 단원을 참조하세요.  
온프레미스 인스턴스에서 CodeDeploy 에이전트만 수동으로 제거하려면 [CodeDeploy 에이전트 작업 관리](codedeploy-agent-operations.md) 단원을 참조하세요.

를 사용하여 [등록 취소](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html) 명령을 호출 AWS CLI 하고 다음을 지정합니다.
+ CodeDeploy에 대한 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-name` 옵션 사용).
+  (선택 사항) 온프레미스 인스턴스와 연결된 IAM 사용자를 삭제할지 여부. 기본 동작은 IAM 사용자를 삭제하는 것입니다. 온프레미스 인스턴스와 연결된 IAM 사용자를 삭제하지 않으려는 경우, 명령에서 `--no-delete-iam-user` 옵션을 지정하세요.
+ 선택적으로 온프레미스 인스턴스가 CodeDeploy에 등록된 AWS 리전입니다( `--region` 옵션 사용). *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에서 나열된 지원되는 리전 중 하나여야 합니다(예: `us-west-2`). 이 옵션을 지정하지 않으면 호출하는 IAM 사용자와 연결된 기본 AWS 리전이 사용됩니다.

인스턴스를 등록 취소하고 사용자를 삭제하는 예는 다음과 같습니다.

```
aws deploy deregister --instance-name AssetTag12010298EX --region us-west-2
```

인스턴스를 등록 취소하고 사용자를 삭제하지 않는 예는 다음과 같습니다.

```
aws deploy deregister --instance-name AssetTag12010298EX --no-delete-iam-user --region us-west-2
```

**deregister** 명령은 다음 작업을 수행합니다.

1. CodeDeploy에서 온프레미스 인스턴스의 등록을 취소합니다.

1. 지정된 경우 온프레미스 인스턴스와 연결된 IAM 사용자를 삭제합니다.

온프레미스 인스턴스 등록을 취소한 후
+  콘솔에 즉시 나타나지 않습니다.
+  같은 이름의 다른 인스턴스를 즉시 만들 수 있습니다.

이 명령에 오류가 발생하면 나머지 단계를 수동으로 완료하는 방법을 설명하는 오류 메시지가 나타납니다. 그렇지 않으면 **uninstall** 명령을 호출하는 방법을 설명하는 성공 메시지가 나타납니다.

# 온프레미스 인스턴스 등록을 수동으로 취소합니다.
<a name="on-premises-instances-operations-deregister-manually"></a>

일반적으로 온프레미스 인스턴스에 더 이상 배포할 계획이 없는 경우 등록을 취소합니다. 를 사용하여 온프레미스 인스턴스의 등록 AWS CLI 을 수동으로 취소할 수 있습니다.

온프레미스 인스턴스를 수동으로 등록 취소해도 CodeDeploy 에이전트가 제거되지는 않습니다. 인스턴스에서 구성 파일은 제거되지 않습니다. 인스턴스와 연결된 IAM 사용자는 삭제되지 않습니다. 인스턴스와 연결된 태그는 제거하지 않습니다.

CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일을 제거하려면 [CodeDeploy 에이전트를 자동으로 제거하고 온프레미스 인스턴스에서 구성 파일 제거](on-premises-instances-operations-uninstall-agent.md) 단원을 참조하세요.

CodeDeploy 에이전트만 수동으로 제거하려면 [CodeDeploy 에이전트 작업 관리](codedeploy-agent-operations.md) 단원을 참조하세요.

연결된 IAM 사용자를 수동으로 삭제하려면 [AWS 계정에서 IAM 사용자 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)를 참조하세요.

연결된 온프레미스 인스턴스 태그만 수동으로 제거하려면 [온프레미스 인스턴스에서 온프레미스 인스턴스 태그 수동 제거](on-premises-instances-operations-remove-tags.md) 단원을 참조하세요.
+ [deregister-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister-on-premises-instance.html) 명령을 호출하여 온프레미스 인스턴스를 고유하게 식별하는 이름(`--instance-name` 옵션 사용)을 지정합니다.

  ```
  aws deploy deregister-on-premises-instance --instance-name AssetTag12010298EX
  ```

  온프레미스 인스턴스 등록을 취소한 후
  +  콘솔에 즉시 나타나지 않습니다.
  +  같은 이름의 다른 인스턴스를 즉시 만들 수 있습니다.

# CodeDeploy에서 인스턴스 정보 보기
<a name="instances-view-details"></a>

CodeDeploy 콘솔, AWS CLI 또는 CodeDeploy API를 사용하여 배포에 사용되는 인스턴스에 대한 세부 정보를 볼 수 있습니다.

CodeDeploy API 작업을 사용하여 인스턴스를 보는 방법에 대한 자세한 내용은 [GetDeploymentInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeploymentInstance.html), [ListDeploymentInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentInstances.html) 및 [ListOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListOnPremisesInstances.html)를 참조하세요.

**Topics**
+ [인스턴스 정보 보기(콘솔)](#instances-view-details-console)
+ [인스턴스 정보 보기(CLI)](#instances-view-details-cli)

## 인스턴스 정보 보기(콘솔)
<a name="instances-view-details-console"></a>

인스턴스 정보를 보려면

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy)에서 CodeDeploy 콘솔을 엽니다.
**참고**  
[CodeDeploy 시작하기](getting-started-codedeploy.md)에서 설정한 사용자와 동일한 사용자로 로그인합니다.

1. 탐색 창에서 **배포**를 확장하고 **배포**를 선택합니다.
**참고**  
항목이 표시되지 않으면 올바른 리전이 선택되어 있는지 확인합니다. 탐색 모음의 리전 선택기에서 *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 리전 중 하나를 선택합니다. CodeDeploy는 이러한 리전에서만 지원됩니다.

1. 배포 세부 정보를 표시하려면 인스턴스의 배포 ID를 선택합니다.

1. 배포 페이지의 **Instance activity** 섹션에서 모든 인스턴스를 볼 수 있습니다.

1. 인스턴스의 개별 배포 수명 주기 이벤트에 대한 정보를 보려면 배포 세부 정보 페이지의**이벤트** 열에서 **이벤트 보기**를 선택합니다.
**참고**  
수명 주기 이벤트에 대해 **실패함**이 표시되면 인스턴스 세부 정보 페이지에서 **로그 보기**나 **EC2에서 보기** 또는 둘 다를 선택합니다. 문제 해결 팁은 [인스턴스 문제 해결](troubleshooting-ec2-instances.md)에서 확인할 수 있습니다.

1. Amazon EC2 인스턴스에 대한 자세한 정보를 보려면 **인스턴스 ID** 열에서 인스턴스의 ID를 선택합니다.

## 인스턴스 정보 보기(CLI)
<a name="instances-view-details-cli"></a>

AWS CLI을(를) 사용하여 인스턴스 세부 정보를 보려면 `get-deployment-instance` 명령이나 `list-deployment-instances` 명령을 호출합니다.

단일 인스턴스에 대한 세부 정보를 보려면 [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) 명령을 호출하여, 다음을 지정합니다.
+ 고유한 배포 ID입니다. 배포 ID를 가져오려면 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 명령을 호출합니다.
+ 고유한 인스턴스 ID입니다. 인스턴스 ID를 가져오려면 [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) 명령을 호출합니다.

배포에 사용된 인스턴스의 ID 목록을 보려면 [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html)명령을 호출하여 다음을 지정합니다.
+ 고유한 배포 ID입니다. 배포 ID를 가져오려면 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 명령을 호출합니다.
+ 선택적으로 배포 상태에 따라 특정 인스턴스 ID만 포함할지 여부를 지정할 수 있습니다. (지정하지 않으면 배포 상태에 관계없이 일치하는 모든 인스턴스 ID가 나열됩니다.)

# CodeDeploy 인스턴스 상태
<a name="instances-health"></a>

CodeDeploy는 배포 그룹에 있는 인스턴스의 상태를 모니터링합니다. 정상 인스턴스 수가 배포 중에 배포 그룹에 대해 지정된 최소 정상 인스턴스 수 미만으로 떨어지면 배포에 실패합니다. 예를 들어 배포 중에 85%의 인스턴스를 정상 상태로 유지해야 하고 배포 그룹에 10개의 인스턴스가 포함된 경우, 만약 단일 인스턴스의 배포에 실패하면 전체 배포도 실패합니다. 이는 최신 애플리케이션 버전을 설치할 수 있도록 인스턴스를 오프라인으로 전환하면 사용 가능한 정상 인스턴스 수가 이미 90%로 떨어지기 때문입니다. 각각 하나씩의 실패한 인스턴스와 오프라인 인스턴스 때문에 80%의 인스턴스만 정상 상태이면서 사용 가능한 상태입니다. CodeDeploy가 전체 배포에 실패합니다.

전체 배포에 성공하려면 다음 조건이 참이어야 합니다.
+ CodeDeploy가 배포 중에 각 인스턴스에 배포할 수 있어야 합니다.
+ 하나 이상의 인스턴스에 배포를 성공해야 합니다. 즉, 최소 정상 호스트 값이 0인 경우에도 전체 배포에 성공하려면 하나 이상의 인스턴스에 대한 배포를 성공해야 합니다(즉, 하나 이상의 인스턴스가 정상이어야 함).

**Topics**
+ [상태 확인](#instances-health-status)
+ [최소 정상 인스턴스 수 정보](#minimum-healthy-hosts)
+ [가용 영역당 최소 정상 인스턴스 수 정보](#minimum-healthy-hosts-az)

## 상태 확인
<a name="instances-health-status"></a>

CodeDeploy는 각 인스턴스에 두 개의 상태 값(*수정 버전 상태* 및 *인스턴스 상태*)을 할당합니다.

수정 버전 상태  
수정 버전 상태는 인스턴스에 현재 설치되어 있는 애플리케이션 수정 버전을 기반으로 합니다. 다음과 같은 값이 표시될 수 있습니다.  
+ 현재: 배포 그룹이 마지막으로 배포에 성공한 수정 버전과 인스턴스에 설치된 수정 버전이 일치합니다.
+ 이전: 인스턴스에 설치된 수정 버전이 애플리케이션의 이전 버전과 일치합니다.
+ 알 수 없음: 애플리케이션의 수정 버전이 인스턴스에 성공적으로 설치되지 않았습니다.

인스턴스 상태  
인스턴스 상태는 인스턴스에 대한 배포를 성공했는지 여부에 따라 결정됩니다. 다음과 같은 값을 가질 수 있습니다.  
+ 정상: 인스턴스에 대한 마지막 배포에 성공했습니다.
+ 비정상: 인스턴스에 수정 버전을 배포하려는 시도가 실패했거나 수정 버전이 아직 인스턴스에 배포되지 않았습니다.

CodeDeploy는 수정 버전 상태 및 인스턴스 상태를 사용하여 배포 그룹의 인스턴스에 대한 배포를 다음 순서로 예약합니다.

1. 비정상 인스턴스 상태.

1. 알 수 없음 수정 버전 상태.

1. 이전 수정 버전 상태.

1. 현재 수정 버전 상태.

전체 배포에 성공하면 수정 버전이 업데이트되고 배포 그룹의 상태 값이 최신 배포를 반영하도록 업데이트됩니다.
+ 배포에 성공한 모든 현재 인스턴스는 현재 상태로 유지됩니다. 그렇지 않으면 알 수 없음 상태가 됩니다.
+ 배포에 성공한 모든 이전 인스턴스 또는 알 수 없음 상태의 모든 인스턴스는 현재 상태가 됩니다. 그렇지 않으면 이전 상태 또는 알 수 없음 상태로 유지됩니다.
+ 배포에 성공한 모든 정상 인스턴스는 정상 상태로 유지됩니다. 그렇지 않으면 비정상 상태가 됩니다.
+ 배포에 성공한 모든 비정상 인스턴스는 정상 상태가 됩니다. 그렇지 않으면 비정상 상태로 유지됩니다.

전체 배포에 실패하거나 중지된 경우:
+ CodeDeploy가 애플리케이션 수정 버전을 배포하려고 시도한 각 인스턴스는 해당 인스턴스에 대한 배포 시도의 성공 또는 실패 여부에 따라 해당 인스턴스 상태가 정상 또는 비정상으로 설정됩니다.
+ CodeDeploy가 애플리케이션 수정 버전을 배포하려고 시도하지 않은 각 인스턴스는 현재 인스턴스 상태 값을 유지합니다.
+ 배포 그룹의 수정 버전은 동일하게 유지됩니다.

## 최소 정상 인스턴스 수 정보
<a name="minimum-healthy-hosts"></a>

필요한 최소 정상 인스턴스 수는 배포 구성의 일부로 정의됩니다.

**중요**  
블루/그린 배포 시 배포 구성과 최소 정상 호스트 값은 원래 환경의 인스턴스가 아닌 대체 환경의 인스턴스에 적용됩니다. 그러나 원래 환경의 인스턴스가 로드 밸런서에서 등록 취소되는 경우 하나의 원본 인스턴스라도 성공적으로 등록 취소되지 않으면 전체 배포가 실패로 표시됩니다.

CodeDeploy는 일반적으로 최소 정상 호스트 값을 사용하는 세 가지 기본 배포 구성을 제공합니다.


| 기본 배포 구성 이름 | 미리 정의된 최소 정상 호스트 값 | 
| --- | --- | 
| CodeDeployDefault.OneAtATime | 1 | 
| CodeDeployDefault.HalfAtATime | 50% | 
| CodeDeployDefault.AllAtOnce | 0 | 

[CodeDeploy에서 배포 구성 작업](deployment-configurations.md)에서 기본 배포 구성에 대한 자세한 내용을 확인할 수 있습니다.

CodeDeploy에서 사용자 지정 배포 구성을 만들어 고유의 최소 정상 호스트 값을 정의할 수 있습니다. 다음 작업을 사용할 때 이러한 값을 정수 또는 백분율로 정의할 수 있습니다.
+  AWS CLI에서 [create-deployment-config](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-config.html) 명령을 사용할 때 `minimum-healthy-hosts`로.
+ CodeDeploy API의 [MinimumHealthyHosts](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_MinimumHealthyHosts.html) 데이터 유형에서 `Value`로.
+  CloudFormation 템플릿에서 [AWS::CodeDeploy::DeploymentConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html)를 사용하는 `MinimumHealthyHosts` 경우와 같습니다.

CodeDeploy를 사용하면 두 가지 주요 목적을 위해 배포에 관한 정상 인스턴스의 최소 개수를 지정할 수 있습니다.
+ 전체 배포의 성공 또는 실패 여부를 확인하기 위해. 애플리케이션 수정 버전이 최소 정상 인스턴스 수에 성공적으로 배포된 경우 배포에 성공합니다.
+ 배포가 진행되도록 배포 중에 정상 상태를 유지해야 하는 인스턴스 수를 확인하기 위해.

배포 그룹의 최소 정상 인스턴스 수를 인스턴스 수 또는 전체 인스턴스 수의 백분율로 지정할 수 있습니다. 백분율을 지정할 경우 배포 시작 시 CodeDeploy는 이 백분율을 해당 인스턴스 수로 변환하고 소수점 값은 반올림합니다.

CodeDeploy는 배포 프로세스 중에 배포 그룹 인스턴스의 상태를 추적하고 배포를 위해 지정된 최소 수의 정상 인스턴스를 사용하여 배포를 계속할지 여부를 결정합니다. 기본 원칙은 배포 시에 정상 인스턴스 수가 지정한 최소 개수보다 낮아서는 안 된다는 것입니다. 이 규칙의 한 가지 예외는 처음부터 배포 그룹의 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 작은 경우입니다. 이 경우 배포 프로세스는 정상 인스턴스의 수를 더 이상 줄이지 않습니다.

**참고**  
CodeDeploy는 배포 그룹의 모든 인스턴스(현재 중지 상태인 인스턴스 포함)에 배포를 시도합니다. 최소 정상 호스트 계산에서 중지된 인스턴스는 실패한 인스턴스와 동일한 영향을 미칩니다. 중지된 인스턴스가 너무 많아 배포에 실패한 경우 이를 해결하려면 인스턴스를 다시 시작하거나 태그를 변경하여 배포 그룹에서 제외합니다.

CodeDeploy는 배포 그룹의 비정상 인스턴스에 애플리케이션 수정 버전을 배포하려고 시도하여 배포 프로세스를 시작합니다. 배포에 성공할 때마다 CodeDeploy는 인스턴스의 상태를 정상으로 변경하고 배포 그룹의 정상 인스턴스에 추가합니다. 그런 다음 CodeDeploy는 현재 정상 인스턴스 수를 지정된 최소 정상 인스턴스 수와 비교합니다.
+ 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 작거나 같으면 CodeDeploy는 배포를 취소하여 더 많은 배포에 따라 정상 인스턴스 수가 줄어들지 않도록 합니다.
+ 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 하나 이상 많으면 CodeDeploy는 애플리케이션 수정 버전을 원래 정상 인스턴스 집합에 배포합니다.

정상 인스턴스에 대한 배포에 실패하면 CodeDeploy는 해당 인스턴스의 상태를 비정상으로 변경합니다. 배포가 진행됨에 따라 CodeDeploy는 현재 정상 인스턴스 수를 업데이트하고 지정된 최소 정상 인스턴스 수와 비교합니다. 배포 프로세스상의 어느 지점에서든 정상 인스턴스 수가 지정된 최소 수보다 적아지면 CodeDeploy는 배포를 중지합니다. 이렇게 하면 다음 배포에 실패하여 정상 인스턴스 수가 지정된 최소 수 미만으로 떨어질 가능성을 방지할 수 있습니다.

**참고**  
지정한 최소 인스턴스 수가 배포 그룹에 있는 전체 인스턴스 수보다 작아야 합니다. 백분율 값을 지정하면 반올림됩니다. 그렇지 않으면 배포가 시작될 때 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 작거나 같으며 CodeDeploy는 전체 배포에 즉시 실패합니다.

또한 CodeDeploy는 지정된 최소 정상 인스턴스 수와 실제 정상 인스턴스 수를 사용하여 애플리케이션 수정 버전을 여러 인스턴스에 배포할지 여부와 방법을 결정합니다. 기본적으로 CodeDeploy는 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수 미만으로 떨어질 위험 없이 가능한 한 많은 인스턴스에 애플리케이션 수정 버전을 배포합니다.

한 번에 배포해야 하는 인스턴스 수를 결정하기 위해 CodeDeploy는 다음 계산을 사용합니다.

```
[total-hosts] - [minimum-healthy-hosts] =
        [number-of-hosts-to-deploy-to-at-once]
```

예제:
+ 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 9로 설정한 경우 CodeDeploy는 한 번에 하나의 인스턴스에 배포합니다.
+ 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 3개로 설정한 경우 CodeDeploy는 첫 번째 배치에서 동시에 7개 인스턴스에 배포한 다음 두 번째 배치에서 나머지 3개에 배포합니다.
+ 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 0으로 설정한 경우 CodeDeploy는 동시에 10개의 인스턴스에 배포됩니다.

**예시**

다음 예에서는 인스턴스가 10개인 배포 그룹을 가정합니다.

최소 정상 인스턴스: 95%  
CodeDeploy는 최소 정상 인스턴스 수를 10개의 인스턴스로 반올림합니다. 이는 정상 인스턴스의 수와 같습니다. 어느 인스턴스에도 수정 버전을 배포하지 않고 전체 배포는 즉시 실패합니다.

최소 정상 인스턴스: 9  
CodeDeploy는 한 번에 하나의 인스턴스에 수정 버전을 배포합니다. 어느 하나의 인스턴스에 대한 배포에 실패하면 정상 인스턴스 수가 최소 정상 인스턴스 수와 같아지므로 CodeDeploy의 전체 배포는 즉시 실패합니다. 이 규칙의 예외는 마지막 인스턴스가 실패했는데 전체 배포에 성공하는 경우입니다.  
CodeDeploy는 배포에 실패하거나 전체 배포가 완료될 때까지 한 번에 한 인스턴스씩 배포를 계속합니다. 10개의 배포를 모두 성공하면 배포 그룹에는 10개의 정상 인스턴스가 있게 됩니다.

최소 정상 인스턴스: 8  
CodeDeploy는 한 번에 두 개의 인스턴스에 수정 버전을 배포합니다. 이러한 배포 중 두 개가 실패하면 CodeDeploy의 전체 배포는 즉시 실패합니다. 이 규칙의 예외는 마지막 인스턴스가 두 번째로 실패한 경우 배포가 계속 성공하는 경우입니다.

최소 정상 인스턴스: 0  
CodeDeploy는 수정 버전을 전체 배포 그룹에 한 번에 배포합니다. 전체 배포에 성공하려면 하나 이상의 인스턴스에 대해 배포를 성공해야 합니다. 정상 인스턴스의 수가 0이면 배포에 실패합니다. 이는 전체 배포를 성공으로 표시하려면 최소 정상 인스턴스 값이 0인 경우에도 전체 배포가 완료될 때 적어도 하나의 인스턴스가 정상이어야 한다는 요구 사항 때문입니다.

## 가용 영역당 최소 정상 인스턴스 수 정보
<a name="minimum-healthy-hosts-az"></a>

**참고**  
이 섹션에서는 인스턴스와 호스트라는 용어를 Amazon EC2 인스턴스를 지칭할 때 혼용하여 사용합니다.****

여러 [가용 영역](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones)의 인스턴스에 배포하는 경우, 선택적으로 영역 구성 기능을 활성화하여 한 번에 하나의 가용 영역에 CodeDeploy를 배포할 수 있습니다.

이 기능을 활성화하면 CodeDeploy는 정상 호스트 수가 '영역당 최소 정상 호스트' *및* '최소 정상 호스트' 값 이상으로 유지되는지 확인합니다. 정상 호스트 수가 두 값 아래로 떨어지면 모든 가용 영역에서 배포가 실패합니다.

한 번에 배포할 호스트 수를 계산하기 위해 CodeDeploy는 '영역당 최소 정상 호스트 수'와 '최소 정상 호스트 수' 값을 모두 사용합니다. CodeDeploy는 `[A]`와 `[B]` 중 *더 작은* 계산값을 사용하며, 여기서 `[A]`와 `[B]`는 다음과 같습니다.

```
[A] = [total-hosts] - [min-healthy-hosts] =
        [number-of-hosts-to-deploy-to-at-once]
```

```
[B] = [total-hosts-per-AZ] - [min-healthy-hosts-per-AZ] =
        [number-of-hosts-to-deploy-to-at-once-per-AZ]
```

한 번에 배포할 호스트 수를 결정한 후 CodeDeploy는 해당 수의 호스트에 한 번에 하나의 가용 영역씩 일괄적으로 배포하며, 영역 사이에 일시 중지(또는 '베이크 시간')를 선택할 수 있습니다.

**예제**

배포가 다음과 같이 구성된 경우:
+ `[total-hosts]`은(는) `200`
+ `[minimum-healthy-hosts]`은(는) `160`
+ `[total-hosts-per-AZ]`은(는) `100` 
+ `[minimum-healthy-hosts-per-AZ]`은(는) `50`

해당되는 조치
+ `[A]` = `200 - 160 = 40`
+ `[B]` = `100 - 50 = 50`
+ `40`은 `50` 미만

따라서 CodeDeploy는 한 번에 `40`개의 호스트에 배포됩니다.

이 시나리오에서 배포는 다음과 같이 전개됩니다.

1. CodeDeploy가 첫 번째 가용 영역에 배포됩니다.

   1. CodeDeploy가 처음 `40`개 호스트에 배포됩니다.

   1. CodeDeploy가 다음 `40`개 호스트에 배포됩니다.

   1. CodeDeploy가 남은 `20`개 호스트에 배포됩니다.

      이제 첫 번째 가용 영역에 대한 배포가 완료되었습니다.

1. 선택 사항) 첫 번째 영역에 대한 배포가 **모니터 지속 시간** 또는 **첫 번째 영역에 대한 모니터 지속 시간 추가** 설정에 정의된 대로 첫 번째 영역에 대한 배포가 '베이크'되는 동안 CodeDeploy가 대기합니다. 문제가 없으면 CodeDeploy가 계속됩니다.

1. CodeDeploy가 두 번째 가용 영역에 배포됩니다.

   1. CodeDeploy가 처음 `40`개 호스트에 배포됩니다.

   1. CodeDeploy가 다음 `40`개 호스트에 배포됩니다.

   1. CodeDeploy가 남은 `20`개 호스트에 배포됩니다.

      이제 두 번째이자 마지막 가용 영역에 대한 배포가 완료되었습니다.

영역 구성 기능 및 가용성 영역당 최소 정상 인스턴스 수를 지정하는 방법에 대해 알아보려면 [zonal configuration](deployment-configurations-create.md#zonal-config)을 참조하세요.