

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

# 튜토리얼: CodeDeploy를 사용하여 GitHub에서 애플리케이션 배포
<a name="tutorials-github"></a>

이 튜토리얼에서는 CodeDeploy를 사용하여 GitHub에서 Amazon Linux를 실행하는 단일 Amazon EC2 인스턴스, 단일 Red Hat Enterprise Linux(RHEL) 인스턴스 또는 단일 Windows Server 인스턴스로 샘플 애플리케이션 수정 버전을 배포합니다. CodeDeploy와 GitHub 통합에 대한 자세한 내용은 [GitHub와 CodeDeploy 통합](integrations-partners-github.md) 단원을 참조하세요.

**참고**  
또한 CodeDeploy를 사용하여 GitHub에서 Ubuntu Server 인스턴스로 애플리케이션 수정을 배포할 수도 있습니다. [튜토리얼: CodeDeploy를 사용하여 온프레미스 인스턴스에 애플리케이션 배포(Windows Server, Ubuntu Server 또는 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)의 [2단계: 샘플 애플리케이션 수정 버전 만들기](tutorials-on-premises-instance-2-create-sample-revision.md)에서 설명된 샘플 수정을 사용하거나 Ubuntu Server 인스턴스 및 CodeDeploy와 호환되는 수정을 생성할 수 있습니다. 수정을 직접 만들려면 [CodeDeploy의 개정 계획](application-revisions-plan.md) 및 [CodeDeploy에 대한 개정에 애플리케이션 사양 파일 추가](application-revisions-appspec-file.md) 단원을 참조하세요.

**Topics**
+ [사전 조건](tutorials-github-prerequisites.md)
+ [1단계: GitHub 계정 설정](tutorials-github-create-github-account.md)
+ [2단계: GitHub 리포지토리 만들기](tutorials-github-create-github-repository.md)
+ [3단계: GitHub 리포지토리로 샘플 애플리케이션 업로드](tutorials-github-upload-sample-revision.md)
+ [4단계: 인스턴스 프로비저닝](tutorials-github-provision-instance.md)
+ [5단계: 애플리케이션 및 배포 그룹 만들기](tutorials-github-create-application.md)
+ [6단계: 인스턴스에 애플리케이션 배포](tutorials-github-deploy-application.md)
+ [7단계: 배포 모니터링 및 확인](tutorials-github-verify.md)
+ [8단계: 정리](tutorials-github-clean-up.md)

# 사전 조건
<a name="tutorials-github-prerequisites"></a>

이 자습서를 시작하기 전에 다음 작업을 수행해야 합니다.
+ 로컬 시스템에 Git를 설치합니다. Git를 설치하려면 [Git 다운로드](http://git-scm.com/downloads)를 참조하세요.
+  AWS CLI설치 및 구성을 비롯하여 [CodeDeploy 시작하기](getting-started-codedeploy.md)의 단계를 완료합니다. 이는를 사용하여 GitHub에서 인스턴스 AWS CLI 로 개정을 배포하려는 경우에 특히 중요합니다.

# 1단계: GitHub 계정 설정
<a name="tutorials-github-create-github-account"></a>

수정을 저장할 GitHub 리포지토리를 만들려면 GitHub 계정이 필요합니다. 이미 GitHub 계정이 있으면 [2단계: GitHub 리포지토리 만들기](tutorials-github-create-github-repository.md) 단계로 건너뜁니다.

1. [https://github.com/join](https://github.com)으로 이동합니다.

1. 사용자 이름, 이메일 주소 및 암호를 입력합니다.

1. [**Sign up for GitHub**]를 선택한 후 지침을 따릅니다.

# 2단계: GitHub 리포지토리 만들기
<a name="tutorials-github-create-github-repository"></a>

수정을 저장할 GitHub 리포지토리가 필요합니다.

GitHub 리포지토리가 이미 있는 경우 이 자습서 전체에서 기존 리포지토리의 이름으로 **CodeDeployGitHubDemo**를 대체한 다음 [3단계: GitHub 리포지토리로 샘플 애플리케이션 업로드](tutorials-github-upload-sample-revision.md) 단계로 건너뜁니다.

1. [GitHub 홈 페이지](https://github.com/dashboard)에서 다음 중 하나를 수행합니다.
   + [**Your repositories**]에서 [**New repository**]를 선택합니다.
   + 탐색 모음에서 [**Create new**]([**\$1**])를 선택한 후 [**New repository**]를 선택합니다.

1. [**Create a new repository**] 페이지에서 다음을 수행합니다.
   + **리포지토리 이름** 상자에 **CodeDeployGitHubDemo**를 입력합니다.
   + [**Public**]을 선택합니다.
**참고**  
기본 [**Public**] 옵션을 선택하면 모든 사람이 이 리포지토리를 볼 수 있습니다. **Private(프라이빗)** 옵션을 선택하여 리포지토리를 보고 커밋할 수 있는 사람을 제한할 수 있습니다.
   + [**Initialize this repository with a README**] 확인란의 선택을 취소합니다. 대신에 다음 단계에서 `README.md` 파일을 수동으로 만듭니다.
   + **리포지토리 생성**을 선택합니다.

1. 로컬 머신 유형의 지침에 따라 명령줄을 사용하여 리포지토리를 만듭니다.
**참고**  
GitHub에서 이중 인증을 활성화한 경우, 암호를 물으면 GitHub 로그인 암호 대신에 개인 액세스 토큰을 입력해야 합니다. 자세한 내용은 [2FA 인증 코드 제공](https://help.github.com/articles/providing-your-2fa-authentication-code/) 단원을 참조하세요.

**로컬 Linux, macOS 또는 Unix 머신의 경우**

1. 터미널에서 다음 명령을 한 번에 하나씩 실행합니다. 여기에서 *user-name*은 GitHub 사용자 이름입니다.

   ```
   mkdir /tmp/CodeDeployGitHubDemo
   ```

   ```
   cd /tmp/CodeDeployGitHubDemo
   ```

   ```
   touch README.md
   ```

   ```
   git init
   ```

   ```
   git add README.md
   ```

   ```
   git commit -m "My first commit"
   ```

   ```
   git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git
   ```

   ```
   git push -u origin master
   ```

1. `/tmp/CodeDeployGitHubDemo` 위치에서 터미널을 열린 상태로 둡니다.

**로컬 Windows 머신의 경우**

1. 관리자로 실행되는 명령 프롬프트에서 다음 명령을 한 번에 하나씩 실행합니다.

   ```
   mkdir c:\temp\CodeDeployGitHubDemo
   ```

   ```
   cd c:\temp\CodeDeployGitHubDemo
   ```

   ```
   notepad README.md
   ```

1. 메모장에 `README.md` 파일을 저장합니다. 메모장을 닫습니다. 다음 명령을 한 번에 하나씩 실행합니다. 여기에서 *user-name*은 GitHub 사용자 이름입니다.

   ```
   git init
   ```

   ```
   git add README.md
   ```

   ```
   git commit -m "My first commit"
   ```

   ```
   git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git
   ```

   ```
   git push -u origin master
   ```

1. `c:\temp\CodeDeployGitHubDemo` 위치에서 명령 프롬프트를 열린 상태로 둡니다.

# 3단계: GitHub 리포지토리로 샘플 애플리케이션 업로드
<a name="tutorials-github-upload-sample-revision"></a>

이 단계에서는 퍼블릭 Amazon S3 버킷에서 GitHub 리포지토리로 샘플 계정을 복사합니다. (간결한 설명을 위해 이 튜토리얼에서 제공되는 샘플 수정은 단일 웹 페이지입니다.)

**참고**  
샘플 수정 대신 자체 수정 중 하나를 사용하려는 경우 수정은 다음과 같아야 합니다.  
[CodeDeploy의 개정 계획](application-revisions-plan.md) 및 [CodeDeploy에 대한 개정에 애플리케이션 사양 파일 추가](application-revisions-appspec-file.md)의 지침을 따라야 합니다.
해당 인스턴스 유형에서 사용할 수 있어야 합니다.
GitHub 대시보드에서 액세스할 수 있어야 합니다.
자체 수정이 이러한 요구 사항을 충족하는 경우 [5단계: 애플리케이션 및 배포 그룹 만들기](tutorials-github-create-application.md) 단계로 건너뜁니다.  
Ubuntu Server 인스턴스에 배포하는 경우, Ubuntu Server인스턴스 및 CodeDeploy와 호환되는 수정을 GitHub 리포지토리로 업로드해야 합니다. 자세한 내용은 [CodeDeploy의 개정 계획](application-revisions-plan.md) 및 [CodeDeploy에 대한 개정에 애플리케이션 사양 파일 추가](application-revisions-appspec-file.md) 단원을 참조하세요.

**Topics**
+ [로컬 Linux, macOS 또는 Unix 시스템에서 샘플 수정 버전 푸시](#tutorials-github-upload-sample-revision-unixes)
+ [로컬 Windows 시스템에서 샘플 수정 푸시](#tutorials-github-upload-sample-revision-windows)

## 로컬 Linux, macOS 또는 Unix 시스템에서 샘플 수정 버전 푸시
<a name="tutorials-github-upload-sample-revision-unixes"></a>

예를 들어 `/tmp/CodeDeployGitHubDemo` 위치에서 아직 열려 있는 터미널을 사용하여 다음 명령을 한 번에 하나씩 실행합니다.

**참고**  
Windows Server 인스턴스에 배포하려는 경우 명령에서 `SampleApp_Linux.zip`을(를) `SampleApp_Windows.zip`(으)로 대체합니다.

```
(Amazon S3 copy command)
```

```
unzip SampleApp_Linux.zip
```

```
rm SampleApp_Linux.zip
```

 

```
git add .
```

```
git commit -m "Added sample app"
```

```
git push
```

여기서 *(Amazon S3 복사 명령)*은 다음 중 하나입니다.
+ 미국 동부(오하이오) 리전에 `aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Linux.zip . --region us-east-2`
+ 미국 동부(버지니아 북부) 리전에 `aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip . --region us-east-1`
+ 미국 서부(캘리포니아 북부) 리전에 `aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Linux.zip . --region us-west-1`
+ 미국 서부(오레곤) 리전에 `aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Linux.zip . --region us-west-2`
+ 캐나다(중부) 리전에 `aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Linux.zip . --region ca-central-1`
+ 유럽(아일랜드) 리전에 `aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Linux.zip . --region eu-west-1` 
+ 유럽(런던) 리전에 `aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Linux.zip . --region eu-west-2` 
+ 유럽(파리) 리전에 `aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Linux.zip . --region eu-west-3` 
+ 유럽(프랑크푸르트) 리전 `aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Linux.zip . --region eu-central-1`
+ 이스라엘(텔아비브) 리전용 `aws s3 cp s3://aws-codedeploy-il-central-1/samples/latest/SampleApp_Linux.zip . --region il-central-1`
+ 아시아 태평양(홍콩) 리전에 `aws s3 cp s3://aws-codedeploy-ap-east-1/samples/latest/SampleApp_Linux.zip . --region ap-east-1`
+ 아시아 태평양(도쿄) 리전에 `aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Linux.zip . --region ap-northeast-1`
+ 아시아 태평양(서울) 리전에 `aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Linux.zip . --region ap-northeast-2`
+ 아시아 태평양(싱가포르) 리전에 `aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Linux.zip . --region ap-southeast-1`
+ 아시아 태평양(시드니) 리전에 `aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Linux.zip . --region ap-southeast-2`
+ 아시아 태평양(멜버른) 리전의 경우 `aws s3 cp s3://aws-codedeploy-ap-southeast-4/samples/latest/SampleApp_Linux.zip . --region ap-southeast-4`
+ 아시아 태평양(뭄바이) 리전에 `aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Linux.zip . --region ap-south-1`
+ 남아메리카(상파울루) 리전에 `aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Linux.zip . --region sa-east-1`

## 로컬 Windows 시스템에서 샘플 수정 푸시
<a name="tutorials-github-upload-sample-revision-windows"></a>

 예를 들어 `c:\temp\CodeDeployGitHubDemo` 위치에서 아직 열려 있는 명령 프롬프트를 사용하여 다음 명령을 한 번에 하나씩 실행합니다.

**참고**  
Amazon Linux 또는 RHEL 인스턴스에 배포하려는 경우 명령에서 `SampleApp_Windows.zip`을(를) `SampleApp_Linux.zip`(으)로 대체합니다.

```
(Amazon S3 copy command)
```

새 하위 디렉터리가 아니라 로컬 디렉터리(예: `c:\temp\CodeDeployGitHubDemo`)에 직접 `the` ZIP 파일의 내용을 풉니다.

```
git add .
```

```
git commit -m "Added sample app"
```

```
git push
```

여기서 *(Amazon S3 복사 명령)*은 다음 중 하나입니다.
+ 미국 동부(오하이오) 리전에 `aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Windows.zip . --region us-east-2`
+ 미국 동부(버지니아 북부) 리전에 `aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Windows.zip . --region us-east-1`
+ 미국 서부(캘리포니아 북부) 리전에 `aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Windows.zip . --region us-west-1`
+ 미국 서부(오레곤) 리전에 `aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Windows.zip . --region us-west-2`
+ 캐나다(중부) 리전에 `aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Windows.zip . --region ca-central-1`
+ 유럽(아일랜드) 리전에 `aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Windows.zip . --region eu-west-1`
+ 유럽(런던) 리전에 `aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Windows.zip . --region eu-west-2`
+ 유럽(파리) 리전에 `aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Windows.zip . --region eu-west-3`
+ 유럽(프랑크푸르트) 리전 `aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Windows.zip . --region eu-central-1`
+ 이스라엘(텔아비브) 리전용 `aws s3 cp s3://aws-codedeploy-il-central-1/samples/latest/SampleApp_Windows.zip . --region il-central-1`
+ 아시아 태평양(홍콩) 리전에 `aws s3 cp s3://aws-codedeploy-ap-east-1/samples/latest/SampleApp_Windows.zip . --region ap-east-1`
+ 아시아 태평양(도쿄) 리전에 `aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Windows.zip . --region ap-northeast-1`
+ 아시아 태평양(서울) 리전에 `aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Windows.zip . --region ap-northeast-2`
+ 아시아 태평양(싱가포르) 리전에 `aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Windows.zip . --region ap-southeast-1`
+ 아시아 태평양(시드니) 리전에 `aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Windows.zip . --region ap-southeast-2`
+ 아시아 태평양(멜버른) 리전의 경우 `aws s3 cp s3://aws-codedeploy-ap-southeast-4/samples/latest/SampleApp_Windows.zip . --region ap-southeast-4`
+ 아시아 태평양(뭄바이) 리전에 `aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Windows.zip . --region ap-south-1`
+ 남아메리카(상파울루) 리전에 `aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Windows.zip . --region sa-east-1`

Ubuntu Server 인스턴스로 자체 수정을 푸시하려면 로컬 repo로 계정을 복사하고 다음 명령을 호출합니다.

```
git add .
git commit -m "Added Ubuntu app"
git push
```

# 4단계: 인스턴스 프로비저닝
<a name="tutorials-github-provision-instance"></a>

이 단계에는 샘플 애플리케이션을 배포할 인스턴스를 만들거나 구성합니다. CodeDeploy에서 지원하는 운영 체제 중 하나를 실행하는 Amazon EC2 인스턴스 또는 온프레미스 인스턴스에 배포할 수 있습니다. 자세한 내용은 [CodeDeploy 에이전트에서 지원하는 운영 체제](codedeploy-agent.md#codedeploy-agent-supported-operating-systems) 단원을 참조하세요. CodeDeploy 배포에서 사용하기 위해 구성한 인스턴스가 이미 있는 경우에는 다음 단계로 건너뜁니다.

**인스턴스를 프로비저닝하려면**

1. [Amazon EC2 인스턴스 시작(콘솔)](instances-ec2-create.md#instances-ec2-create-console)의 지침에 따라 인스턴스를 프로비저닝할 수 있습니다.

1. 인스턴스를 시작할 때, **태그 추가**에서 태그를 지정하는 것을 잊지 마십시오. 태그를 지정하는 방법에 대한 자세한 내용은 [Amazon EC2 인스턴스 시작(콘솔)](instances-ec2-create.md#instances-ec2-create-console) 단원을 참조하세요.

**인스턴스에서 CodeDeploy 에이전트가 실행 중인지 확인하려면**
+ 에이전트가 실행 중인지 확인하려면 [CodeDeploy 에이전트가 실행 중인지 확인](codedeploy-agent-operations-verify.md)의 지침을 따릅니다.

인스턴스를 성공적으로 프로비저닝했으면 CodeDeploy 에이전트가 실행 중인지 확인한 후 다음 단계로 진행합니다.

# 5단계: 애플리케이션 및 배포 그룹 만들기
<a name="tutorials-github-create-application"></a>

이 단계에서는 CodeDeploy 콘솔 또는 AWS CLI 를 사용하여 GitHub 리포지토리에서 샘플 개정을 배포하는 데 사용할 애플리케이션 및 배포 그룹을 생성합니다.



## 애플리케이션 및 배포 그룹 만들기(콘솔)
<a name="tutorials-github-create-application-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. 탐색 창에서 **배포**를 확장하고 **애플리케이션**을 선택합니다.

   

1. **애플리케이션 생성**을 선택한 후 **사용자 지정 애플리케이션**을 선택합니다.

1. **애플리케이션 이름**에 **CodeDeployGitHubDemo-App**을 입력합니다.

1. **Compute Platform(컴퓨팅 플랫폼)**에서 **EC2/On-premises(EC2/온프레미스)**를 선택합니다.

1. **애플리케이션 생성**을 선택합니다.

1. **배포 그룹** 탭에서 **Create deployment group(배포 그룹 생성)**을 선택합니다.

1. **Deployment group name(배포 그룹 이름)**에 **CodeDeployGitHubDemo-DepGrp**을 입력합니다.

1. **서비스 역할**에서 [CodeDeploy 에 대한 서비스 역할 생성](getting-started-create-service-role.md)에서 생성한 CodeDeploy 서비스 역할의 이름을 선택합니다.

1. **배포 유형**에서 **In-place(현재 위치)**를 선택합니다.

1. **환경 구성**에서 사용 중인 인스턴스 유형에 따라 **Amazon EC2 인스턴스** 또는 **온프레미스 인스턴스**를 선택합니다. **키** 및 **값**에 [4단계: 인스턴스 프로비저닝](tutorials-github-provision-instance.md)의 일부로 인스턴스에 적용된 인스턴스 태그 키와 값을 입력합니다.

1. **Deployment configuration(배포 구성)**에서 **CodeDeployDefault.AllatOnce**를 선택합니다.

1. **로드 밸런서**에서 **Enable load balancing(로드 밸런싱 활성화)**을 선택 해제합니다.

1. **고급**을 확장합니다.

1. **경보**에서 **Ignore alarm configuration(경보 구성 무시)**을 선택합니다.

1. **배포 그룹 생성**을 선택하고 다음 단계로 계속 진행합니다.

## 애플리케이션 및 배포 그룹 만들기(CLI)
<a name="tutorials-github-create-application-cli"></a>

1. **create-application** 명령을 호출하여 CodeDeploy에 `CodeDeployGitHubDemo-App`(이)라는 애플리케이션을 생성합니다.

   ```
   aws deploy create-application --application-name CodeDeployGitHubDemo-App
   ```

1. **create-deployment-group** 명령을 호출하여 `CodeDeployGitHubDemo-DepGrp`라는 배포 그룹을 생성합니다.
   + Amazon EC2 인스턴스에 배포하는 경우 *ec2-tag-key*는 [4단계: 인스턴스 프로비저닝](tutorials-github-provision-instance.md)의 일부로 Amazon EC2 인스턴스에 적용된 Amazon EC2 인스턴스 태그 키입니다.
   + Amazon EC2 인스턴스에 배포하는 경우 *ec2-tag-value*는 [4단계: 인스턴스 프로비저닝](tutorials-github-provision-instance.md)의 일부로 Amazon EC2 인스턴스에 적용된 Amazon EC2 인스턴스 태그 값입니다.
   + 온프레미스 인스턴스에 배포하는 경우, *on-premises-tag-key*는 [4단계: 인스턴스 프로비저닝](tutorials-github-provision-instance.md)의 일부로 온프레미스 인스턴스에 적용된 온프레미스 인스턴스 태그 키입니다.
   + 온프레미스 인스턴스에 배포하는 경우, *on-premises-tag-value*는 [4단계: 인스턴스 프로비저닝](tutorials-github-provision-instance.md)의 일부로 온프레미스 인스턴스에 적용된 온프레미스 인스턴스 태그 값입니다.
   + *service-role-arn*은 [CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md)에서 생성한 서비스 역할의 서비스 역할 ARN 입니다. (서비스 역할 ARN을 찾으려면 [서비스 역할 ARN 확인(CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli)의 지침을 따르십시오.)

   ```
   aws deploy create-deployment-group --application-name CodeDeployGitHubDemo-App --ec2-tag-filters Key=ec2-tag-key,Type=KEY_AND_VALUE,Value=ec2-tag-value --on-premises-tag-filters Key=on-premises-tag-key,Type=KEY_AND_VALUE,Value=on-premises-tag-value --deployment-group-name CodeDeployGitHubDemo-DepGrp --service-role-arn service-role-arn
   ```
**참고**  
[create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 명령은 배포 및 인스턴스의 지정된 이벤트에 대해 주제의 구독자에게 Amazon SNS 알림을 전송하게 하는 트리거를 생성합니다. 또한 해당 명령은 Amazon CloudWatch 경보 모니터링 임계값에 도달한 경우 자동으로 배포를 롤백하고 배포를 중지하도록 경보를 설정하는 옵션을 지원합니다. 이 작업에 대한 명령은 이 자습서에 포함되지 않습니다.

# 6단계: 인스턴스에 애플리케이션 배포
<a name="tutorials-github-deploy-application"></a>

이 단계에서는 CodeDeploy 콘솔 또는 AWS CLI 를 사용하여 GitHub 리포지토리에서 인스턴스로 샘플 개정을 배포합니다.



## 수정을 배포하려면(콘솔)
<a name="tutorials-github-deploy-application-console"></a>

1. **배포 그룹 세부 정보** 페이지에서 **배포 생성**을 선택합니다.

1. **배포 그룹**에서 **`CodeDeployGitHubDemo-DepGrp`**을(를) 선택합니다.

1. **Revision type(수정 유형)**에서 **GitHub**를 선택합니다.

1. [**Connect to GitHub**]에서 다음 중 하나를 수행합니다.
   + GitHub 계정에 대한 CodeDeploy 애플리케이션의 연결을 만들려면 별도의 웹 브라우저 탭에서 GitHub에서 로그아웃합니다. **GitHub 계정**에서 이 연결을 식별하는 이름을 입력한 후 **GitHub에 연결**을 선택합니다. 웹 페이지에 `CodeDeployGitHubDemo-App`(이)라는 애플리케이션에 대해 GitHub와 상호 작용할 권한을 CodeDeploy에 부여하라는 메시지가 표시됩니다. 계속해서 5단계를 진행합니다.
   + 이미 만든 연결을 사용하려면 [**GitHub account**]에서 이름을 선택한 후 [**Connect to GitHub**]를 선택합니다. 계속해서 7단계를 진행합니다.
   + 다른 GitHub 계정에 대한 연결을 만들려면 별도의 웹 브라우저 탭에서 GitHub에서 로그아웃합니다. [**Connect to a different GitHub account**]를 선택한 후 [**Connect to GitHub**]를 선택합니다. 계속해서 5단계를 진행합니다.

1. [**Sign in**] 페이지의 지침에 따라 GitHub 계정에 로그인합니다.

1. [**Authorize application**] 페이지에서 [**Authorize application**]을 선택합니다.

1. CodeDeploy **배포 생성** 페이지에서 **리포지토리 이름**에 로그인하는 데 사용한 GitHub 사용자 이름과 그 뒤에 슬래시(`/`) 및 애플리케이션 수정 버전(예: ***my-github-user-name*/CodeDeployGitHubDemo**)을 푸시한 리포지토리 이름을 입력합니다.

   입력할 값을 잘 모르거나 다른 리포지토리를 지정하려면 다음과 같이 합니다.

   1. 별도의 웹 브라우저 탭에서 [GitHub 대시보드](https://github.com/dashboard)로 이동합니다.

   1. [**Your repositories**]에서 마우스 포인터를 대상 리포지토리 이름 위에 올려놓습니다. 도구 설명에 GitHub 사용자 또는 조직 이름과 그 뒤에 슬래시(`/`) 및 리포지토리 이름이 표시됩니다. 이 값을 **리포지토리 이름**에 입력합니다.
**참고**  
대상 리포지토리 이름이 **Your repositories(리포지토리)**에 표시되지 않는 경우, **Search GitHub(GitHub 검색)** 상자를 사용하여 대상 리포지토리와 GitHub 사용자 또는 조직 이름을 찾습니다.

1. **커밋 ID** 상자에 애플리케이션 수정을 GitHub에 푸시한 것과 연결된 커밋 ID를 입력합니다.

   입력할 값을 잘 모를 경우 다음과 같이 합니다.

   1. 별도의 웹 브라우저 탭에서 [GitHub 대시보드](https://github.com/dashboard)로 이동합니다.

   1. **리포지토리**에서 **CodeDeployGitHubDemo**를 선택합니다.

   1. 커밋 목록에서 애플리케이션 수정을 GitHub에 푸시한 것과 연결된 커밋 ID를 찾아 복사합니다. 이 ID는 일반적으로 40자이고 문자와 숫자로 구성됩니다. (일반적으로 더 긴 버전의 첫 10자인 더 짧은 커밋 ID 버전을 사용하지 마십시오.)

   1. 커밋 ID를 [**Commit ID**] 상자에 붙여 넣습니다.

1. [**Deploy**]를 선택하고 다음 단계로 계속 진행합니다.

## 수정을 배포하려면(CLI)
<a name="tutorials-github-deploy-application-cli"></a>

GitHub와 상호 작용하는 AWS CLI 명령(예: 다음에 호출할 **create-deployment** 명령)을 호출하려면 먼저 CodeDeploy에 GitHub 사용자 계정을 사용하여 `CodeDeployGitHubDemo-App` 애플리케이션의 GitHub와 상호 작용할 수 있는 권한을 부여해야 합니다. 현재는 CodeDeploy 콘솔을 사용하여 이를 수행해야 합니다.

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

1. 탐색 창에서 **배포**를 확장하고 **애플리케이션**을 선택합니다.

   

1. **CodeDeployGitHubDemo-App**를 선택합니다.

1. **배포 탭**에서 **배포 만들기**를 선택합니다.
**참고**  
새 배포를 만들지 않습니다. 이는 현재 GitHub 사용자 계정을 대신하여 CodeDeploy에 GitHub와 상호 작용할 권한을 부여하는 유일한 방법입니다.

1. **배포 그룹**에서 **CodeDeployGitHubDemo-DepGrp**를 선택합니다.

1. **Revision type(수정 유형)**에서 **GitHub**를 선택합니다.

1. [**Connect to GitHub**]에서 다음 중 하나를 수행합니다.
   + GitHub 계정에 대한 CodeDeploy 애플리케이션의 연결을 만들려면 별도의 웹 브라우저 탭에서 GitHub에서 로그아웃합니다. [**GitHub account**]에 이 연결을 식별하는 이름을 입력한 후 [**Connect to GitHub**]를 선택합니다. 웹 페이지에 `CodeDeployGitHubDemo-App`(이)라는 애플리케이션에 대해 GitHub와 상호 작용할 권한을 CodeDeploy에 부여하라는 메시지가 표시됩니다. 계속해서 8단계를 진행합니다.
   + 이미 만든 연결을 사용하려면 [**GitHub account**]에서 이름을 선택한 후 [**Connect to GitHub**]를 선택합니다. 계속해서 10단계를 진행합니다.
   + 다른 GitHub 계정에 대한 연결을 만들려면 별도의 웹 브라우저 탭에서 GitHub에서 로그아웃합니다. [**Connect to a different GitHub account**]를 선택한 후 [**Connect to GitHub**]를 선택합니다. 계속해서 8단계를 진행합니다.

1. [**Sign in**] 페이지의 지침에 따라 GitHub 사용자 이름 또는 이메일 및 암호로 로그인합니다.

1. [**Authorize application**] 페이지에서 [**Authorize application**]을 선택합니다.

1. CodeDeploy **배포 생성** 페이지에서 **취소**를 선택합니다.

1. **create-deployment** 명령을 호출하여 GitHub 리포지토리에서 인스턴스로 수정을 배포합니다. 여기에서,
   + *repository*는 GitHub 계정 이름에 슬래시(`/`)와 리포지토리 이름(`CodeDeployGitHubDemo`)이 추가된 형태입니다(예: `MyGitHubUserName/CodeDeployGitHubDemo`).

     사용할 값을 잘 모르거나 다른 리포지토리를 지정하려면:

     1. 별도의 웹 브라우저 탭에서 [GitHub 대시보드](https://github.com/dashboard)로 이동합니다.

     1. [**Your repositories**]에서 마우스 포인터를 대상 리포지토리 이름 위에 올려놓습니다. 도구 설명에 GitHub 사용자 또는 조직 이름과 그 뒤에 슬래시(`/`) 및 리포지토리 이름이 표시됩니다. 이것이 사용할 값입니다.
**참고**  
[**Your repositories**]에 대상 리포지토리 이름이 표시되지 않는 경우, [**Search GitHub**] 상자를 사용하여 대상 리포지토리와 해당 GitHub 사용자 또는 조직 이름을 찾습니다.
   + *commit-id*는 리포지토리에 푸시한 애플리케이션 수정과 연결된 커밋입니다(예: `f835159a...528eb76f`).

     사용할 값을 잘 모를 경우:

     1. 별도의 웹 브라우저 탭에서 [GitHub 대시보드](https://github.com/dashboard)로 이동합니다.

     1. **리포지토리**에서 **CodeDeployGitHubDemo**를 선택합니다.

     1. 커밋 목록에서 애플리케이션 수정을 GitHub에 푸시한 것과 연결된 커밋 ID를 찾습니다. 이 ID는 일반적으로 40자이고 문자와 숫자로 구성됩니다. (일반적으로 더 긴 버전의 첫 10자인 더 짧은 커밋 ID 버전을 사용하지 마십시오.) 이 값을 사용합니다.

   로컬 Linux, macOS 또는 Unix 머신에서 작업하는 경우:

   ```
   aws deploy create-deployment \
     --application-name CodeDeployGitHubDemo-App \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name CodeDeployGitHubDemo-DepGrp \
     --description "My GitHub deployment demo" \
     --github-location repository=repository,commitId=commit-id
   ```

   로컬 Windows 머신에서 작업하는 경우:

   ```
   aws deploy create-deployment --application-name CodeDeployGitHubDemo-App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name CodeDeployGitHubDemo-DepGrp --description "My GitHub deployment demo" --github-location repository=repository,commitId=commit-id
   ```

# 7단계: 배포 모니터링 및 확인
<a name="tutorials-github-verify"></a>

이 단계에서는 CodeDeploy 콘솔 또는 AWS CLI 를 사용하여 배포의 성공을 확인합니다. 직접 만들거나 구성한 인스턴스에 배포된 웹 페이지를 웹 브라우저에서 확인합니다.

**참고**  
Ubuntu Server 인스턴스에 배포하는 경우, 배포된 수정이 해당 인스턴스에서 정상 작동하는지 자체 테스트 전략에 따라 확인한 후 다음 단계로 진행합니다.

**배포를 모니터링하고 확인하려면(콘솔)**

1. 탐색 창에서 **배포**를 확장하고 **배포**을 선택합니다.

   

1. 배포 목록에서 **애플리케이션** 값이 **CodeDeployGitHubDemo-App**이고 **배포 그룹** 값이 **CodeDeployGitHubDemo-DepGrp**인 행을 찾습니다. **상태** 열에 **성공** 또는 **실패**가 표시되지 않은 경우 **새로 고침** 버튼을 몇 차례 누릅니다.

1. **상태** 열에 **실패**가 나타난 경우 [인스턴스 정보 보기(콘솔)](instances-view-details.md#instances-view-details-console)의 지침을 따라 배포 문제를 해결합니다.

1. **상태**열에 **성공**이 나타난 경우 웹 브라우저를 통해 배포를 확인할 수 있습니다. 이 샘플 수정에서는 인스턴스에 단일 웹 페이지를 배포합니다. Amazon EC2 인스턴스에 배포하는 경우 웹 브라우저에서 해당 인스턴스의 `http://public-dns`(으)로 이동합니다(예: `http://ec2-01-234-567-890.compute-1.amazonaws.com`).

1. 웹 페이지가 보이면 성공한 것입니다. 이제 AWS CodeDeploy 를 사용하여 GitHub에서 수정을 배포했으므로 [8단계: 정리](tutorials-github-clean-up.md) 단원으로 건너뛸 수 있습니다.

**배포를 모니터링하고 확인하려면(CLI)**

1. **list-deployments** 명령을 호출하여 `CodeDeployGitHubDemo-App`이라는 애플리케이션의 배포 ID와 `CodeDeployGitHubDemo-DepGrp`라는 배포 그룹을 가져옵니다.

   ```
   aws deploy list-deployments --application-name CodeDeployGitHubDemo-App --deployment-group-name CodeDeployGitHubDemo-DepGrp --query "deployments" --output text
   ```

1. **list-deployments** 명령의 출력에 배포 ID를 입력하여 **get-deployment** 명령을 호출합니다.

   ```
   aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.[status, creator]" --output text
   ```

1. [**Failed**]가 반환되면 [인스턴스 정보 보기(콘솔)](instances-view-details.md#instances-view-details-console)의 지침에 따라 배포 문제를 해결합니다.

1. [**Succeeded**]가 반환되면 이제 웹 브라우저를 통해 배포를 확인해 볼 수 있습니다. 이 샘플 수정은 인스턴스에 배포된 단일 웹 페이지입니다. Amazon EC2 인스턴스에 배포하는 경우 웹 브라우저에서 Amazon EC2 인스턴스의 `http://public-dns`(으)로 이동하여 이 페이지를 볼 수 있습니다(예: `http://ec2-01-234-567-890.compute-1.amazonaws.com`).

1. 웹 페이지가 보이면 성공한 것입니다. AWS CodeDeploy 를 사용하여 GitHub 리포지토리에서 성공적으로 배포했습니다.

# 8단계: 정리
<a name="tutorials-github-clean-up"></a>

이 자습서를 진행하면서 사용한 리소스에 요금이 부과되지 않도록 Amazon EC2 인스턴스와 연결된 리소스를 종료해야 합니다. 원한다면 이 자습서와 연결된 CodeDeploy 배포 구성 요소 레코드를 삭제할 수 있습니다. 이 자습서 진행을 위해서만 GitHub 리포지토리를 사용한 경우에는 지금 그 리포지토리도 삭제할 수 있습니다.

## CloudFormation 스택을 삭제하려면(템 CloudFormation 플릿을 사용하여 Amazon EC2 인스턴스를 생성한 경우)
<a name="tutorials-github-clean-up-cloudformation-template"></a>

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

1. **Stacks(스택)** 열에서 `CodeDeploySampleStack`으로 시작하는 스택을 선택합니다.

1. **삭제**를 선택합니다.

1. 메시지가 나타나면 **스택 삭제**를 선택합니다. Amazon EC2 인스턴스 및 연결된 IAM 인스턴스 프로파일과 서비스 역할이 삭제됩니다.

## 온프레미스 인스턴스를 수동으로 등록 취소 및 정리하려면(온프레미스 인스턴스를 프로비저닝한 경우)
<a name="tutorials-github-clean-up-on-premises-instance"></a>

1.  AWS CLI 를 사용하여 여기에서 *your-instance-name*으로 표시되는 온프레미스 인스턴스와 해당 리전으로 연결된 리전에 대해 [등록 취소](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html) 명령을 호출*합니다.*

   ```
   aws deploy deregister --instance-name your-instance-name --no-delete-iam-user --region your-region
   ```

1. 온프레미스 인스턴스에서 [uninstall](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html) 명령을 호출합니다.

   ```
   aws deploy uninstall
   ```

## Amazon EC2 인스턴스를 수동으로 종료하려면(Amazon EC2 인스턴스를 수동으로 시작한 경우)
<a name="tutorials-github-clean-up-ec2-instance"></a>

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

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

1. 종료할 Amazon EC2 인스턴스 옆의 상자를 선택합니다. [**Actions**] 메뉴에서 [**Instance State**]를 가리킨 다음 [**Terminate**]를 선택합니다.

1. 메시지가 나타나면 [**Yes, Terminate**]를 선택합니다.

## CodeDeploy 배포 구성 요소 레코드를 삭제하려면
<a name="tutorials-github-clean-up-codedeploy-records"></a>

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

1. 탐색 창에서 **배포**를 확장하고 **애플리케이션**을 선택합니다.

   

1. **CodeDeployGitHubDemo-App**를 선택합니다.

1. **애플리케이션 삭제**를 선택합니다.

1. 메시지가 표시되면 **Delete**를 입력한 후 **삭제**를 선택합니다.

## GitHub 리포지토리를 삭제하려면
<a name="tutorials-github-clean-up-github-repository"></a>

[GitHub 도움말](https://help.github.com)의 [리포지토리 삭제](https://help.github.com/articles/deleting-a-repository/)를 참조하세요.