

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

# 튜토리얼: CodeDeploy를 사용하여 Auto Scaling 그룹에 애플리케이션 배포
<a name="tutorials-auto-scaling-group"></a>

이 튜토리얼에서는 CodeDeploy를 사용하여 Auto Scaling 그룹에 애플리케이션 수정 버전을 배포합니다. Amazon EC2 Auto Scaling은 미리 정의된 조건을 사용하여 Amazon EC2 인스턴스를 시작한 다음 더 이상 필요하지 않을 때 해당 인스턴스를 종료합니다. Amazon EC2 Auto Scaling은 배포 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 유지하도록 보장함으로써 CodeDeploy를 확장하는 데 도움이 됩니다. CodeDeploy와 Amazon EC2 Auto Scaling 통합에 대한 자세한 내용은 [Amazon EC2 Auto Scaling과 CodeDeploy 통합](integrations-aws-auto-scaling.md) 섹션을 참조하세요.

**Topics**
+ [사전 조건](tutorials-auto-scaling-group-prerequisites.md)
+ [1단계: Auto Scaling 그룹 생성 및 구성](tutorials-auto-scaling-group-create-auto-scaling-group.md)
+ [2단계: Auto Scaling 그룹에 애플리케이션 배포](tutorials-auto-scaling-group-create-deployment.md)
+ [3단계: 결과 확인](tutorials-auto-scaling-group-verify.md)
+ [4단계: Auto Scaling 그룹에서 Amazon EC2 인스턴스의 수 늘리기](tutorials-auto-scaling-group-scale-up.md)
+ [5단계: 결과 다시 확인](tutorials-auto-scaling-group-reverify.md)
+ [6단계: 정리](tutorials-auto-scaling-group-clean-up.md)

# 사전 조건
<a name="tutorials-auto-scaling-group-prerequisites"></a>

이 자습서를 따르려면 다음을 수행하세요.
+ 설정 및 구성[CodeDeploy 시작하기](getting-started-codedeploy.md), IAM 인스턴스 프로파일(**CodeDeployDemo-EC2-Instance-Profile**) 및 서비스 역할() AWS CLI 생성을 포함하여의 모든 단계를 완료합니다**CodeDeployDemo**. *서비스 역할*은 사용자를 대신해 수행할 수 있는 서비스 권한을 부여하는 특별한 유형의 IAM 역할입니다.
+ 시작 템플릿으로 Auto Scaling 그룹을 생성한 경우 다음 권한을 추가해야 합니다.
  +  `ec2:RunInstances` 
  +  `ec2:CreateTags` 
  +  `iam:PassRole` 

  자세한 내용은 [2단계: 서비스 역할 생성](getting-started-create-service-role.md), [Auto Scaling 그룹을 위한 시작 템플릿 만들기](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) 및 *Amazon EC2 Auto Scaling 사용 설명서*.의 [시작 템플릿 지원](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-launch-template-permissions.html)을 참조하세요.
+  Ubuntu Server 인스턴스 및 CodeDeploy와 호환되는 수정 버전을 생성하고 사용합니다. 수정에 대해 다음 중 하나를 수행할 수 있습니다.
  + [2단계: 샘플 애플리케이션 수정 버전 만들기](tutorials-on-premises-instance-2-create-sample-revision.md) 튜토리얼에서 [튜토리얼: CodeDeploy를 사용하여 온프레미스 인스턴스에 애플리케이션 배포(Windows Server, Ubuntu Server 또는 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)의 샘플 수정 버전을 생성하고 사용합니다.
  + 수정을 직접 만들려면 [CodeDeploy의 애플리케이션 개정 작업](application-revisions.md) 단원을 참조하세요.
+ 다음 **인바운드 규칙**을 사용하여 **CodeDeployDemo-AS-SG**라는 보안 그룹을 만듭니다.
  + 유형: HTTP
  + 출처: 모든 소스

  이 작업은 애플리케이션을 보고 배포 성공 여부를 확인하는 데 필요합니다. 보안 그룹을 생성하는 방법에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [보안 그룹 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group)을 참조하세요.

 

# 1단계: Auto Scaling 그룹 생성 및 구성
<a name="tutorials-auto-scaling-group-create-auto-scaling-group"></a>

이 단계에서는 단일 Amazon Linux, RHEL 또는 Windows Server Amazon EC2 인스턴스를 포함하는 Auto Scaling 그룹을 생성합니다. 이후 단계에서는 Amazon EC2 인스턴스를 하나 더 추가하도록 Amazon EC2 Auto Scaling에 지시하고 CodeDeploy에서는 수정 버전을 새로 추가된 인스턴스에 배포합니다.

**Topics**
+ [Auto Scaling 그룹을 생성하고 구성하려면(CLI 사용)](#tutorials-auto-scaling-group-create-auto-scaling-group-cli)
+ [Auto Scaling 그룹을 생성하고 구성하려면(콘솔 사용)](#tutorials-auto-scaling-group-create-auto-scaling-group-console)

## Auto Scaling 그룹을 생성하고 구성하려면(CLI 사용)
<a name="tutorials-auto-scaling-group-create-auto-scaling-group-cli"></a>

1. **create-launch-template** 명령을 호출하여 Amazon EC2 시작 템플릿을 생성합니다.

   이 명령을 호출하기 전에 이 튜토리얼에서 사용할 수 있는 AMI의 ID가 필요합니다(자리 표시자 *image-id*로 표시됨). 또한 Amazon EC2 인스턴스에 액세스할 수 있도록 Amazon EC2 인스턴스 키 페어의 이름도 필요합니다(자리 표시자 *key-name*으로 표시됨).

   이 튜토리얼에서 사용할 수 있는 AMI의 ID를 가져오려면:

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

   1. 탐색 창의 [**Instances**]에서 [**Instances**]를 선택한 후 [**Launch Instance**]를 선택합니다.

   1. **Amazon Machine Image 선택(Choose an Amazon Machine Image)** 페이지의 **빠른 시작(Quick Start)** 탭에서 **Amazon Linux 2 AMI**, **Red Hat Enterprise Linux 7.1**, **Ubuntu Server 14.04 LTS** 또는 **Microsoft Windows Server 2012 R2** 옆에 있는 AMI의 ID를 기록해 둡니다.
**참고**  
CodeDeploy와 호환되는 사용자 지정 AMI 버전이 있는 경우 **빠른 시작** 탭에서 찾는 대신 여기에서 해당 버전을 선택하세요. CodeDeploy 및 Amazon EC2 Auto Scaling에서 사용자 지정 AMI 사용에 대한 자세한 내용은 [CodeDeploy 및 Amazon EC2 Auto Scaling에서 사용자 지정 AMI 사용](integrations-aws-auto-scaling.md#integrations-aws-auto-scaling-custom-ami) 단원을 참조하세요.

   Amazon EC2 인스턴스 키 페어의 경우 Amazon EC2 인스턴스 키 페어의 이름을 사용합니다.

   **create-launch-template** 명령을 호출합니다.

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

   ```
   aws ec2 create-launch-template \
     --launch-template-name CodeDeployDemo-AS-Launch-Template \
     --launch-template-data file://config.json
   ```

   `config.json` 파일 내용은 다음과 같습니다.

   ```
   { 
     "InstanceType":"t1.micro",
     "ImageId":"image-id",
     "IamInstanceProfile":{
       "Name":"CodeDeployDemo-EC2-Instance-Profile"
     },
     "KeyName":"key-name"
   }
   ```

   로컬 Windows 머신의 경우

   ```
   aws ec2 create-launch-template --launch-template-name CodeDeployDemo-AS-Launch-Template --launch-template-data file://config.json
   ```

   `config.json` 파일 내용은 다음과 같습니다.

   ```
   { 
     "InstanceType":"t1.micro",
     "ImageId":"image-id",
     "IamInstanceProfile":{
       "Name":"CodeDeployDemo-EC2-Instance-Profile"
     },
     "KeyName":"key-name"
   }
   ```

   `config.json` 파일과 함께 이러한 명령을 사용하면 다음 단계에서 t1.micro Amazon EC2 인스턴스 유형에 따라 생성되는 Auto Scaling 그룹에 대한 CodeDeployDemo-AS-Launch-Template이라는 Amazon EC2 시작 템플릿이 생성됩니다. `ImageId`, `IamInstanceProfile` 및 `KeyName`에 대한 입력 사항에 따라 시작 템플릿이 AMI ID, 시작 시 인스턴스에 전달할 IAM 역할과 관련된 인스턴스 프로파일의 이름 및 인스턴스에 연결할 때 사용할 Amazon EC2 키 페어도 지정합니다.

1.  **create-auto-scaling-group** 명령을 호출하여 Auto Scaling 그룹을 생성합니다. *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 리전 중 하나에 있는 가용 영역 중 하나의 이름이 필요합니다. 이는 자리 표시자 *availability-zone*으로 표시됩니다.
**참고**  
리전의 가용 영역 목록을 보려면 다음을 호출합니다.  

   ```
   aws ec2 describe-availability-zones --region region-name
   ```
예를 들어, 미국 서부(오레곤) 리전의 가용 영역 목록을 보려면 다음을 호출합니다.  

   ```
   aws ec2 describe-availability-zones --region us-west-2
   ```
리전 이름 식별자 목록은 [리전별 리소스 키트 버킷 이름](resource-kit.md#resource-kit-bucket-names) 단원을 참조하세요.

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

   ```
   aws autoscaling create-auto-scaling-group \
     --auto-scaling-group-name CodeDeployDemo-AS-Group \
     --launch-template CodeDeployDemo-AS-Launch-Template,Version='$Latest' \
     --min-size 1 \
     --max-size 1 \
     --desired-capacity 1 \
     --availability-zones availability-zone \
     --tags Key=Name,Value=CodeDeployDemo,PropagateAtLaunch=true
   ```

   로컬 Windows 머신의 경우

   ```
   aws autoscaling create-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --launch-template LaunchTemplateName=CodeDeployDemo-AS-Launch-Template,Version="$Latest" --min-size 1 --max-size 1 --desired-capacity 1 --availability-zones availability-zone --tags Key=Name,Value=CodeDeployDemo,PropagateAtLaunch=true
   ```

   이 명령은 **CodeDeployDemo-AS-Launch-Template**이라는 Amazon EC2 시작 템플릿을 기반으로 **CodeDeployDemo-AS-Group**이라는 Auto Scaling 그룹을 생성합니다. 이 Auto Scaling 그룹에는 Amazon EC2 인스턴스 하나만 있으며, 이 인스턴스는 지정된 가용 영역에 생성됩니다. 이 Auto Scaling 그룹의 각 인스턴스에는 `Name=CodeDeployDemo` 태그가 있습니다. 이 태그는 나중에 CodeDeploy 에이전트를 설치할 때 사용됩니다.

1. **CodeDeployDemo-AS-Group**에 대해 **describe-auto-scaling-groups** 명령을 호출합니다.

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text
   ```

   반환된 값에 `Healthy` 및 `InService`가 표시될 때까지 진행하지 마십시오.

1.  Auto Scaling 그룹의 인스턴스에 CodeDeploy 배포에 사용할 CodeDeploy 에이전트가 설치되어 있어야 합니다. Auto Scaling 그룹이 생성될 때 추가된 태그를 AWS Systems Manager 사용하여에서 **create-association** 명령을 호출하여 CodeDeploy 에이전트를 설치합니다.

   ```
   aws ssm create-association \
     --name AWS-ConfigureAWSPackage \
     --targets Key=tag:Name,Values=CodeDeployDemo \
      --parameters action=Install, name=AWSCodeDeployAgent \
     --schedule-expression "cron(0 2 ? * SUN *)"
   ```

   이 명령은 Systems Manager 상태 관리자에 연결을 생성하여 Auto Scaling 그룹의 모든 인스턴스에 CodeDeploy 에이전트를 설치하고 매주 일요일 오전 2시에 업데이트를 시도합니다. CodeDeploy 에이전트에 대한 자세한 내용은 [CodeDeploy 에이전트 작업](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html)을 참조하세요. Systems Manager에 대한 자세한 내용은 [AWS Systems Manager란 무엇입니까](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)를 참조하세요.

## Auto Scaling 그룹을 생성하고 구성하려면(콘솔 사용)
<a name="tutorials-auto-scaling-group-create-auto-scaling-group-console"></a>

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

1. 전역 탐색 모음에서 *AWS 일반 참조*의 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)에 나열된 리전 중 하나를 선택합니다. Amazon EC2 Auto Scaling 리소스는 지정한 리전에 연결되며, CodeDeploy는 일부 리전에서만 지원됩니다.

1. 탐색 창의 **인스턴스**에서 **템플릿 시작**을 선택합니다.

1. **Create launch template**(시작 템플릿 생성)을 선택합니다.

1. **시작 템플릿 이름 및 설명**의 **시작 템플릿 이름**에 **CodeDeployDemo-AS-Launch-Template**을(를) 입력합니다. 다른 필드의 경우 기본값을 그대로 유지합니다.

1. **Amazon Machine Image(AMI)** 대화 상자에서 **AMI** 아래 드롭다운을 클릭하여 이 튜토리얼에서 사용할 수 있는 AMI를 선택합니다.

   1. **AMI** 드롭다운의 **빠른 시작(Quick Start)** 탭에서 **Amazon Linux 2 AMI**, **Red Hat Enterprise Linux 7.1**, **Ubuntu Server 14.04 LTS** 또는 **Microsoft Windows Server 2012 R2** 중 하나를 선택합니다.
**참고**  
CodeDeploy와 호환되는 사용자 지정 AMI 버전이 있는 경우 **빠른 시작** 탭에서 찾는 대신 여기에서 해당 버전을 선택하세요. CodeDeploy 및 Amazon EC2 Auto Scaling에서 사용자 지정 AMI 사용에 대한 자세한 내용은 [CodeDeploy 및 Amazon EC2 Auto Scaling에서 사용자 지정 AMI 사용](integrations-aws-auto-scaling.md#integrations-aws-auto-scaling-custom-ami) 단원을 참조하세요.

1. **인스턴스 유형(Instance type)**에서 드롭다운을 선택한 다음 **t1.micro**를 선택합니다. 검색 창을 사용하면 더 빨리 찾을 수 있습니다.

1. **키 페어(로그인)(Key pair(login))** 대화 상자에서 **기존 키 페어 선택(Choose an existing key pair)**을 선택합니다. **키 페어 선택** 드롭다운 목록에서 이전 단계에서 만들었거나 사용한 Amazon EC2 인스턴스 키 페어를 선택합니다.

1. **네트워크 설정(Network settings)** 대화 상자에서 **가상 퍼블릭 클라우드(VPC)(Virtual Public Cloud (VPC))**를 선택합니다.

   **보안 그룹(Security groups)** 드롭다운에서 [튜토리얼의 사전 요구 사항 섹션](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-auto-scaling-group-prerequisites.html)(**CodeDeployDemo-AS-SG**)에서 생성한 보안 그룹을 선택합니다.

1. **고급 세부 정보** 대화 상자를 펼칩니다. **IAM 인스턴스 프로파일(IAM instance profile)** 드롭다운에서 이전에 **IAM 인스턴스 프로파일(IAM instance profile)** 아래에서 생성한 IAM 역할(**CodeDeployDemo-EC2-Instance-Profile**)을 선택합니다.

   나머지 기본값을 그대로 둡니다.

1. **Create launch template**(시작 템플릿 생성)을 선택합니다.

1. **다음 단계(Next steps)** 대화 상자에서 **Auto Scaling 그룹 생성(Create Auto Scaling group)**을 선택합니다.

1. **시작 템플릿 또는 구성 선택** 페이지에서 **Auto Scaling 그룹 이름**에 **CodeDeployDemo-AS-Group**을(를) 입력합니다.

1. **시작 템플릿(Launch template)** 대화 상자에서 시작 템플릿(**CodeDeployDemo-AS-Launch-Template**)을 작성해야 합니다. 작성하지 않고 드롭다운 메뉴에서 선택해도 됩니다. 기본값을 그대로 두고 **다음**을 선택합니다.

1. **인스턴스 시작 옵션 선택(Choose instance launch options)** 페이지의 **네트워크(Network)** 섹션에서 **VPC**에 대해 기본 VPC를 선택합니다. 그런 다음 **가용 영역 및 서브넷(Availability Zones and subnets)**에 대해 기본 서브넷을 선택합니다. 기본값을 선택할 수 없는 경우 VPC를 생성해야 합니다. 자세한 내용은 [Amazon VPC 시작하기](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html)를 참조하세요.

1. **인스턴스 유형 요구 사항(Instance type requirements)** 섹션에서 기본 설정을 사용하여 이 단계를 단순화합니다. (시작 템플릿을 재정의하지 마세요.) 이 자습서에서는 시작 템플릿에 지정된 인스턴스 유형을 사용하여 온디맨드 인스턴스만 시작합니다.

1. **다음(Next)**을 선택하고 **고급 옵션 구성(Configure advanced options)** 페이지로 이동합니다.

1. 기본값을 유지하고 **다음**을 선택합니다.

1. **그룹 크기 및 조정 정책 구성(Configure group size and scaling policies)** 페이지에서 기본 **그룹 크기(Group size)** 값 1을 유지합니다. **다음**을 선택합니다.

1. 알림을 구성하는 단계를 건너뛰고 **다음**을 선택합니다.

1. **태그 추가(Add tags)** 페이지에서 나중에 CodeDeploy 에이전트를 설치할 때 사용할 태그를 추가합니다. **태그 추가**를 선택합니다.

   1. **키**에 **Name**을(를) 입력합니다.

   1. **값**에 **CodeDeployDemo**을(를) 입력합니다.

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

1. **검토(Review)** 페이지에서 Auto Scaling 그룹 정보를 검토한 다음 **Auto Scaling 그룹 생성(Create Auto Scaling group)**을 선택합니다.

1. 탐색 모음에서 **Auto Scaling 그룹**이 선택된 상태에서 **CodeDeployDemo-AS-Group**을(를) 선택한 후 **인스턴스 관리** 탭을 선택합니다. **수명 주기** 열에 값 **InService**가 나타나고, **상태** 열에 값 **정상**이 나타날 때까지 진행하지 마세요.

1. [CodeDeploy 에이전트 설치](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)의 단계에 따르고 `Name=CodeDeployDemo` 인스턴스 태그를 사용하여 CodeDeploy 에이전트를 설치합니다.

# 2단계: Auto Scaling 그룹에 애플리케이션 배포
<a name="tutorials-auto-scaling-group-create-deployment"></a>

이 단계에서는 Auto Scaling 그룹의 단일 Amazon EC2 인스턴스에 수정 버전을 배포합니다.

**Topics**
+ [배포를 만들려면(CLI)](#tutorials-auto-scaling-group-create-deployment-cli)
+ [배포를 만들려면(콘솔)](#tutorials-auto-scaling-group-create-deployment-console)

## 배포를 만들려면(CLI)
<a name="tutorials-auto-scaling-group-create-deployment-cli"></a>

1. **create-application** 명령을 호출하여 **SimpleDemoApp**이라는 애플리케이션을 생성합니다.

   ```
   aws deploy create-application --application-name SimpleDemoApp
   ```

1. [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md)의 지침에 따라 이미 서비스 역할을 만들었을 것입니다. 서비스 역할은 CodeDeploy에 Amazon EC2 인스턴스에 액세스하여 태그를 확장할(읽을) 수 있는 권한을 부여합니다. 서비스 역할 ARN이 필요합니다. 서비스 역할 ARN을 확인하려면 [서비스 역할 ARN 확인(CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli)의 지침을 따르십시오.

1. 이제 서비스 역할 ARN이 있으므로 지정된 서비스 역할 ARN으로 **create-deployment-group** 명령을 호출하고 **CodeDeployDemo-AS-Group**이라는 Auto Scaling 그룹과 **CodeDeployDefault.OneAtATime**이라는 배포 구성을 사용하여 **SimpleDemoDG**라는 배포 그룹을 생성하고 **SimpleDemoApp**이라는 애플리케이션에 연결합니다.
**참고**  
[create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 명령은 배포 및 인스턴스의 지정된 이벤트에 대해 주제의 구독자에게 Amazon SNS 알림을 전송하게 하는 트리거를 생성합니다. 또한 해당 명령은 Amazon CloudWatch 경보 모니터링 임계값에 도달한 경우 자동으로 배포를 롤백하고 배포를 중지하도록 경보를 설정하는 옵션을 지원합니다. 이 작업에 대한 명령은 이 자습서에 포함되지 않습니다.

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

   ```
   aws deploy create-deployment-group \
     --application-name SimpleDemoApp \
     --auto-scaling-groups CodeDeployDemo-AS-Group \
     --deployment-group-name SimpleDemoDG \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --service-role-arn service-role-arn
   ```

   로컬 Windows 머신의 경우

   ```
   aws deploy create-deployment-group --application-name SimpleDemoApp --auto-scaling-groups CodeDeployDemo-AS-Group --deployment-group-name SimpleDemoDG --deployment-config-name CodeDeployDefault.OneAtATime --service-role-arn service-role-arn
   ```

1. **create-deployment** 명령을 호출하고 지정된 위치의 수정을 사용하여 **SimpleDemoApp**이라는 애플리케이션, **CodeDeployDefault.OneAtATime**이라는 배포 구성 및 **SimpleDemoDG**라는 배포 그룹과 연결된 배포를 만듭니다.

   **Amazon Linux 및 RHEL Amazon EC2 인스턴스의 경우 로컬 Linux, macOS 또는 Unix 시스템에서 호출**

    

   ```
   aws deploy create-deployment \
     --application-name SimpleDemoApp \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name SimpleDemoDG \
     --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip
   ```

   *bucket-name*은 해당 리전의 CodeDeploy 리소스 키트 파일이 포함되어 있는 Amazon S3 버킷의 이름입니다. 예를 들어 미국 동부(오하이오) 리전의 경우 *bucket-name*을 `aws-codedeploy-us-east-2`로 바꿉니다. 버킷 이름 목록은 [리전별 리소스 키트 버킷 이름](resource-kit.md#resource-kit-bucket-names) 단원을 참조하세요.

   **Amazon Linux 및 RHEL Amazon EC2 인스턴스의 경우 로컬 Windows 시스템에서 호출**

    

   ```
   aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip
   ```

   *bucket-name*은 해당 리전의 CodeDeploy 리소스 키트 파일이 포함되어 있는 Amazon S3 버킷의 이름입니다. 예를 들어 미국 동부(오하이오) 리전의 경우 *bucket-name*을 `aws-codedeploy-us-east-2`로 바꿉니다. 버킷 이름 목록은 [리전별 리소스 키트 버킷 이름](resource-kit.md#resource-kit-bucket-names) 단원을 참조하세요.

   **Windows Server Amazon EC2 인스턴스의 경우 로컬 Linux, macOS 또는 Unix 시스템에서 호출**

    

   ```
   aws deploy create-deployment \
     --application-name SimpleDemoApp \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name SimpleDemoDG \
     --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip
   ```

   *bucket-name*은 해당 리전의 CodeDeploy 리소스 키트 파일이 포함되어 있는 Amazon S3 버킷의 이름입니다. 예를 들어 미국 동부(오하이오) 리전의 경우 *bucket-name*을 `aws-codedeploy-us-east-2`로 바꿉니다. 버킷 이름 목록은 [리전별 리소스 키트 버킷 이름](resource-kit.md#resource-kit-bucket-names) 단원을 참조하세요.

   **Windows Server Amazon EC2 인스턴스의 경우 로컬 Windows 시스템에서 호출**

   ```
   aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip
   ```

   *bucket-name*은 해당 리전의 CodeDeploy 리소스 키트 파일이 포함되어 있는 Amazon S3 버킷의 이름입니다. 예를 들어 미국 동부(오하이오) 리전의 경우 *bucket-name*을 `aws-codedeploy-us-east-2`로 바꿉니다. 버킷 이름 목록은 [리전별 리소스 키트 버킷 이름](resource-kit.md#resource-kit-bucket-names) 단원을 참조하세요.
**참고**  
현재 CodeDeploy 는 Ubuntu Server Amazon EC2 인스턴스를 배포하기 위한 샘플 수정 버전을 제공하지 않습니다. 수정을 직접 만들려면 [CodeDeploy의 애플리케이션 개정 작업](application-revisions.md) 단원을 참조하세요.

1. **get-deployment** 명령을 호출하여 배포에 성공했는지 확인합니다.

   이 명령을 호출하기 전에 배포 ID가 필요합니다. 이 ID는 **create-deployment** 명령에 대한 호출로 반환되어야 합니다. 배포 ID를 다시 가져와야 할 경우 **list-deployments**이라는 애플리케이션 및 **SimpleDemoApp**라는 배포 그룹에 대해 **SimpleDemoDG** 명령을 호출하세요.

   ```
   aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text
   ```

   이제 배포 ID를 사용하여 **get-deployment** 명령을 호출합니다.

   ```
   aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.status" --output text
   ```

   반환된 값이 `Succeeded`일 때까지 계속하지 마십시오.

## 배포를 만들려면(콘솔)
<a name="tutorials-auto-scaling-group-create-deployment-console"></a>

1. [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md)의 지침에 따라 이미 서비스 역할을 만들었을 것입니다. 서비스 역할은 CodeDeploy에 인스턴스에 액세스하여 태그를 확장할(읽을) 수 있는 권한을 부여합니다. CodeDeploy 콘솔을 사용하여 애플리케이션 수정을 배포하기 전에 서비스 역할 ARN이 필요합니다. 서비스 역할 ARN을 확인하려면 [서비스 역할 ARN 확인(콘솔)](getting-started-create-service-role.md#getting-started-get-service-role-console)의 지침을 따르십시오.

1. 이제 서비스 역할 ARN이 있으므로 CodeDeploy 콘솔을 사용하여 애플리케이션 수정을 배포할 수 있습니다.

   에 로그인 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. **애플리케이션 이름**에 **SimpleDemoApp**을 입력합니다.

1. **컴퓨팅 플랫폼**에서 **EC2/온프레미스**를 선택합니다.

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

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

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

1. **서비스 역할**에서 서비스 역할의 이름을 선택합니다.

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

1. **환경 구성(Environment configuration)**에서 **Auto Scaling 그룹(Auto Scaling groups)**을 선택한 다음 **CodeDeployDemo-AS-Group**을 선택합니다.

1. **배포 구성**에서 **CodeDeployDefault.OneAtATime**을 선택합니다.

1. **로드 밸런싱 활성화**의 선택을 취소합니다.

1. [**Create deployment group**]을 선택합니다.

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

1. **수정 유형**에서 **내 애플리케이션은 Amazon S3에 저장됨**을 선택합니다.

1. **수정 위치**에 운영 체제 및 리전에 적합한 샘플 애플리케이션의 위치를 입력합니다.

   **Amazon Linux 및 RHEL Amazon EC2 인스턴스의 경우**  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/tutorials-auto-scaling-group-create-deployment.html)

   **Windows Server Amazon EC2 인스턴스의 경우**  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/tutorials-auto-scaling-group-create-deployment.html)

    **Ubuntu Server Amazon EC2 인스턴스의 경우**

   Amazon S3에 저장된 사용자 지정 애플리케이션 수정의 위치를 입력합니다.

1. **배포 설명**은 비워 둡니다.

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

1. **배포 만들기**를 선택합니다.
**참고**  
**성공(Succeeded)** 대신 **실패(Failed)**가 나타난 경우 [배포 모니터링 및 문제 해결](tutorials-wordpress-deploy-application.md#tutorials-wordpress-deploy-application-monitor)(애플리케이션 이름 **SimpleDemoApp**, 배포 그룹 이름 **SimpleDemoDG**를 사용하여)에서 몇 가지 기술을 시도할 수 있습니다.

# 3단계: 결과 확인
<a name="tutorials-auto-scaling-group-verify"></a>

이 단계에서는 CodeDeploy가 Auto Scaling 그룹의 단일 Amazon EC2 인스턴스에 **SimpleDemoApp** 수정 버전을 배포했는지 확인합니다.

**Topics**
+ [결과를 확인하려면(CLI)](#tutorials-auto-scaling-group-verify-cli)
+ [결과를 확인하려면(콘솔)](#tutorials-auto-scaling-group-verify-console)

## 결과를 확인하려면(CLI)
<a name="tutorials-auto-scaling-group-verify-cli"></a>

먼저, Amazon EC2 인스턴스의 퍼블릭 DNS가 필요합니다.

를 사용하여 **describe-instances** 명령을 호출 AWS CLI 하여 Auto Scaling 그룹에 있는 Amazon EC2 인스턴스의 퍼블릭 DNS를 가져옵니다.

이 명령을 호출하기 전에 Amazon EC2 인스턴스의 ID가 필요합니다. ID를 가져오려면 이전에 수행한 것과 같이 **CodeDeployDemo-AS-Group**에 대해 **describe-auto-scaling-groups**를 호출합니다.

```
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text
```

이제 **describe-instances** 명령을 호출합니다.

```
aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text
```

반환되는 값은 Amazon EC2 인스턴스의 퍼블릭 DNS입니다.

웹 브라우저에서 다음과 같은 URL을 사용하여 Amazon EC2 인스턴스에 배포된 SimpleDemoApp 수정 버전을 표시합니다.

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

축하 페이지가 표시되면 CodeDeploy를 사용하여 Auto Scaling 그룹의 단일 Amazon EC2 인스턴스에 수정 버전을 성공적으로 배포한 것입니다.

그런 다음 Auto Scaling 그룹에 Amazon EC2 인스턴스를 추가합니다. Amazon EC2 Auto Scaling이 Amazon EC2 인스턴스를 추가하면 CodeDeploy가 새 인스턴스에 수정 버전을 배포합니다.

## 결과를 확인하려면(콘솔)
<a name="tutorials-auto-scaling-group-verify-console"></a>

먼저, Amazon EC2 인스턴스의 퍼블릭 DNS가 필요합니다.

[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

Amazon EC2 탐색 창의 **Auto Scaling**에서 **Auto Scaling 그룹**을 선택한 후 **CodeDeployDemo-AS-Group** 항목을 선택합니다.

**인스턴스** 탭의 목록에서 Amazon EC2 인스턴스 ID를 선택합니다.

**인스턴스** 페이지의 **설명** 탭에서 **퍼블릭 DNS** 값을 확인합니다. **ec2-01-234-567-890.compute-1.amazonaws.com**과 같아야 합니다.

웹 브라우저에서 다음과 같은 URL을 사용하여 Amazon EC2 인스턴스에 배포된 SimpleDemoApp 수정 버전을 표시합니다.

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

축하 페이지가 표시되면 CodeDeploy를 사용하여 Auto Scaling 그룹의 단일 Amazon EC2 인스턴스에 수정 버전을 성공적으로 배포한 것입니다.

그런 다음 Auto Scaling 그룹에 Amazon EC2 인스턴스를 추가합니다. Amazon EC2 Auto Scaling이 Amazon EC2 인스턴스를 추가하면 CodeDeploy가 새 Amazon EC2 인스턴스에 수정 버전을 배포합니다.

# 4단계: Auto Scaling 그룹에서 Amazon EC2 인스턴스의 수 늘리기
<a name="tutorials-auto-scaling-group-scale-up"></a>

이 단계에서는 Auto Scaling 그룹에 추가 Amazon EC2 인스턴스를 생성하도록 지시합니다. Amazon EC2 Auto Scaling에서 인스턴스를 생성하면 CodeDeploy가 해당 인스턴스에 수정 버전을 배포합니다.

**Topics**
+ [Auto Scaling 그룹에서 Amazon EC2 인스턴스의 수를 확장하려면(CLI 사용)](#tutorials-auto-scaling-group-scale-up-cli)
+ [배포 그룹의 Amazon EC2 인스턴스 수를 늘리려면(콘솔)](#tutorials-auto-scaling-group-scale-up-console)

## Auto Scaling 그룹에서 Amazon EC2 인스턴스의 수를 확장하려면(CLI 사용)
<a name="tutorials-auto-scaling-group-scale-up-cli"></a>

1. **update-auto-scaling-group** 명령을 호출하여 **CodeDeployDemo-AS-Group**이라는 Auto Scaling 그룹 내 Amazon EC2 인스턴스를 하나에서 두 개로 늘립니다.

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

   ```
   aws autoscaling update-auto-scaling-group \
     --auto-scaling-group-name CodeDeployDemo-AS-Group \
     --min-size 2 \
     --max-size 2 \
     --desired-capacity 2
   ```

   로컬 Windows 머신의 경우

   ```
   aws autoscaling update-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --min-size 2 --max-size 2 --desired-capacity 2
   ```

1. Auto Scaling 그룹에 Amazon EC2 인스턴스가 두 개 있는지 확인합니다. **CodeDeployDemo-AS-Group**에 대해 **describe-auto-scaling-groups** 명령을 호출합니다.

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text
   ```

   반환된 값에 모두 `Healthy` 및 `InService`가 표시될 때까지 진행하지 마십시오.

## 배포 그룹의 Amazon EC2 인스턴스 수를 늘리려면(콘솔)
<a name="tutorials-auto-scaling-group-scale-up-console"></a>

1. Amazon EC2 탐색 모음의 **Auto Scaling**에서 **Auto Scaling 그룹**을 선택한 후 **CodeDeployDemo-AS-Group**을(를) 선택합니다.

1. **작업**을 선택한 후 **편집**을 선택합니다.

1. **세부 정보** 탭의 **원하는**, **최소** 및 **최대** 상자에 **2**를 입력한 다음** 저장**을 선택합니다.

1. [**Instances**] 탭을 선택합니다. 목록에 새 Amazon EC2 인스턴스가 나타날 것입니다. (인스턴스가 나타나지 않는 경우 [**Refresh**] 버튼을 몇 번 선택해야 할 수 있습니다.) **수명 주기** 열에 값 **InService**가 나타나고, **상태** 열에 값 **정상**이 나타날 때까지 진행하지 마세요.

# 5단계: 결과 다시 확인
<a name="tutorials-auto-scaling-group-reverify"></a>

이 단계에서는 CodeDeploy가 Auto Scaling 그룹의 새 인스턴스에 SimpleDemoApp 수정 버전을 설치했는지 확인합니다.

**Topics**
+ [자동 배포 결과를 확인하려면(CLI)](#tutorials-auto-scaling-group-reverify-cli)
+ [자동 배포 결과를 확인하려면(콘솔)](#tutorials-auto-scaling-group-reverify-console)

## 자동 배포 결과를 확인하려면(CLI)
<a name="tutorials-auto-scaling-group-reverify-cli"></a>

1. **get-deployment** 명령을 호출하기 전에 자동 배포의 ID가 필요합니다. ID를 가져오려면 **list-deployments**이라는 애플리케이션 및 **SimpleDemoApp**라는 배포 그룹에 대해 **SimpleDemoDG** 명령을 호출하세요.

   ```
   aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text
   ```

   배포 ID가 두 개 있을 것입니다. **get-deployment** 명령의 호출에 아직 사용하지 않은 ID를 사용합니다.

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

   배포 상태 외에도 명령 출력에 `autoScaling`이(가) 표시되어야 합니다(`autoScaling`은(는) Amazon EC2 Auto Scaling​이 배포를 생성했음을 의미).

   배포 상태에 `Succeeded`가 표시될 때까지 진행하지 마십시오.

1. **describe-instances** 명령을 호출하기 전에 새 Amazon EC2 인스턴스의 ID가 필요합니다. 이 ID를 가져오려면 **CodeDeployDemo-AS-Group**에 대해 **describe-auto-scaling-groups** 명령을 또 한 번 호출합니다.

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text
   ```

   이제 **describe-instances** 명령을 호출합니다.

   ```
   aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text
   ```

   **describe-instances** 명령의 출력에서 새 Amazon EC2 인스턴스의 퍼블릭 DNS를 기록해 둡니다.

1. 웹 브라우저에서 다음과 같은 URL을 사용하여 Amazon EC2 인스턴스에 배포된 `SimpleDemoApp` 수정 버전을 표시합니다.

   ```
   http://ec2-01-234-567-890.compute-1.amazonaws.com
   ```

   축하 페이지가 표시되면 CodeDeploy를 사용하여 Auto Scaling 그룹의 확장된 Amazon EC2 인스턴스에 수정 버전을 성공적으로 배포한 것입니다.

## 자동 배포 결과를 확인하려면(콘솔)
<a name="tutorials-auto-scaling-group-reverify-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. Amazon EC2 Auto Scaling에서 생성한 배포의 배포 ID를 선택합니다.

   .

1.  **배포** 페이지에는 배포에 대한 정보가 표시됩니다. 일반적으로는 사용자가 직접 배포를 생성하지만 Amazon EC2 Auto Scaling이 사용자를 대신해 배포 하나를 생성하여 수정 버전을 새 Amazon EC2 인스턴스에 배포했습니다.

1. 페이지 상단에 **성공**이 표시되면 인스턴스에서 결과를 확인합니다. 먼저 해당 인스턴스의 퍼블릭 DNS를 가져와야 합니다.

1. Amazon EC2 탐색 창의 **Auto Scaling**에서 **Auto Scaling 그룹**을 선택한 후 **CodeDeployDemo-AS-Group** 항목을 선택합니다.

1. **인스턴스** 탭에서 새 Amazon EC2 인스턴스의 ID를 선택합니다.

1. **인스턴스** 페이지의 **설명** 탭에서 **퍼블릭 DNS** 값을 확인합니다. **ec2-01-234-567-890.compute-1.amazonaws.com**과 같아야 합니다.

다음과 같은 URL을 사용하여 인스턴스에 배포된 `SimpleDemoApp` 수정을 표시합니다.

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

축하 페이지가 표시되면 CodeDeploy를 사용하여 Auto Scaling 그룹의 확장된 Amazon EC2 인스턴스에 수정 버전을 성공적으로 배포한 것입니다.

# 6단계: 정리
<a name="tutorials-auto-scaling-group-clean-up"></a>

이 단계에서는 이 튜토리얼을 진행하면서 사용한 리소스에 대해 요금이 계속 부과되지 않도록 Auto Scaling 그룹을 삭제합니다. 필요에 따라 Auto Scaling 구성 및 CodeDeploy 배포 구성 요소 레코드를 삭제할 수 있습니다.

**Topics**
+ [리소스를 정리하려면(CLI)](#tutorials-auto-scaling-group-clean-up-cli)
+ [리소스를 정리하려면(콘솔)](#tutorials-auto-scaling-group-clean-up-console)

## 리소스를 정리하려면(CLI)
<a name="tutorials-auto-scaling-group-clean-up-cli"></a>

1. **CodeDeployDemo-AS-Group**에 대해 **delete-auto-scaling-group** 명령을 호출해 Auto Scaling 그룹을 삭제합니다. 그러면 Amazon EC2 인스턴스도 종료됩니다.

   ```
   aws autoscaling delete-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --force-delete
   ```

1. 필요에 따라 **CodeDeployDemo-AS-Launch-Template**이라는 시작 구성에 대해 **delete-launch-template** 명령을 호출하여 Auto Scaling 시작 템플릿을 삭제합니다.

   ```
   aws ec2 delete-launch-template --launch-template-name CodeDeployDemo-AS-Launch-Template
   ```

1. 필요에 따라 **SimpleDemoApp**(이)라는 애플리케이션에 대해 **delete-application** 명령을 호출하여 CodeDeploy에서 애플리케이션을 삭제합니다. 그러면 연결된 모든 배포, 배포 그룹 및 수정 레코드도 삭제됩니다.

   ```
   aws deploy delete-application --application-name SimpleDemoApp
   ```

1. Systems Manager 상태 관리자 연결을 삭제하려면 **delete-association** 명령을 호출합니다.

   ```
   aws ssm delete-association --assocation-id association-id
   ```

   **describe-association** 명령을 호출하여 *association-id*를 얻을 수 있습니다.

   ```
   aws ssm describe-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo
   ```

## 리소스를 정리하려면(콘솔)
<a name="tutorials-auto-scaling-group-clean-up-console"></a>

Amazon EC2 인스턴스도 종료하는 Auto Scaling 그룹을 삭제하려면 다음을 수행합니다.

1. 

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

1. Amazon EC2 탐색 창의 **Auto Scaling**에서 **Auto Scaling 그룹**을 선택한 후 **CodeDeployDemo-AS-Group** 항목을 선택합니다.

1. [**Actions**], [**Delete**], [**Yes, Delete**]를 차례로 선택합니다.

(선택 사항) 시작 템플릿을 삭제하려면

1.  탐색 모음의 **Auto Scaling**에서 **시작 구성**을 선택한 다음 **CodeDeployDemo-AS-Launch-Template**을(를) 선택합니다.

1. [**Actions**], [**Delete launch configuration**], [**Yes, Delete**]를 차례로 선택합니다.

1. 필요에 따라 CodeDeploy에서 애플리케이션을 삭제합니다. 그러면 연결된 모든 배포, 배포 그룹 및 수정 레코드도 삭제됩니다. [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy)에서 CodeDeploy 콘솔을 엽니다.

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

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

   

1. 애플리케이션 목록에서 **SimpleDemoApp**을 선택합니다.

1. **애플리케이션 세부 정보** 페이지에서 **애플리케이션 삭제**를 선택합니다.

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

Systems Manager 상태 관리자 연결을 삭제하려면

1. https://console.aws.amazon.com/systems-manager AWS Systems Manager 콘솔을 엽니다.

1. 탐색 창에서 **상태 관리자**를 선택합니다.

1. 생성한 연결을 선택하고 **삭제**를 선택합니다.