

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

# CodeDeploy 에이전트를 사용하여 로컬 시스템에서 배포 패키지의 유효성을 검사합니다.
<a name="deployments-local"></a>

CodeDeploy 에이전트를 사용하여 로그인한 인스턴스에 콘텐츠를 배포할 수 있습니다. 이를 통해 배포에 사용하려는 애플리케이션 사양 파일(AppSpec 파일)의 무결성 및 배포하려는 콘텐츠를 테스트할 수 있습니다.

애플리케이션 및 배포 그룹을 만들 필요가 없습니다. 로컬 인스턴스에 저장된 콘텐츠를 배포하려는 경우 AWS 계정이 필요하지 않습니다. 가장 간단한 테스트를 위해 AppSpec 파일과 배포할 콘텐츠가 포함된 디렉터리에서 옵션을 지정하지 않고 **codedeploy-local** 명령을 실행할 수 있습니다. 도구에는 다른 테스트 사례에 대한 옵션이 있습니다.

로컬 컴퓨터에서 배포 패키지의 유효성을 검사하여 다음을 수행할 수 있습니다.
+ 애플리케이션 개정 버전의 무결성 테스트.
+ AppSpec 파일의 내용을 테스트합니다.
+ 처음으로 기존 애플리케이션 코드로 CodeDeploy를 사용해 보세요.
+ 인스턴스에 이미 로그인하지 않았다면 콘텐츠를 빠르게 배포합니다.

로컬 인스턴스 또는 지원되는 원격 리포지토리 유형(Amazon S3 버킷 또는 퍼블릭 GitHub 리포지토리)에 저장된 콘텐츠를 배포할 수 있습니다.

## 사전 조건
<a name="deployments-local-prerequisites"></a>

로컬 배포를 시작하기 전에 다음 단계를 완료해야 합니다.
+ CodeDeploy 에이전트에서 지원하는 인스턴스 유형을 생성하거나 사용합니다. 자세한 내용은 [CodeDeploy 에이전트에서 지원하는 운영 체제](codedeploy-agent.md#codedeploy-agent-supported-operating-systems) 단원을 참조하세요.
+ 버전 1.0.1.1352 이상의 CodeDeploy 에이전트를 설치합니다. 자세한 내용은 [CodeDeploy 에이전트 설치](codedeploy-agent-operations-install.md) 단원을 참조하세요.
+ Amazon S3 버킷 또는 GitHub 리포지토리에서 콘텐츠를 배포하는 경우 CodeDeploy와 함께 사용하도록 사용자를 프로비저닝합니다. 자세한 내용은 [1단계: 설정](getting-started-setting-up.md) 단원을 참조하세요.
+ Amazon S3 버킷에서 애플리케이션 개정 버전을 배포하는 경우 작업 중인 리전에 Amazon S3 버킷을 생성하고 버킷에 Amazon S3 버킷 정책을 적용합니다. 이 정책은 애플리케이션 개정을 다운로드하는 데 필요한 권한을 인스턴스에 부여합니다.

  예를 들어, 다음 Amazon S3 버킷 정책은 ARN `arn:aws:iam::444455556666:role/CodeDeployDemo`이(가) 포함된 IAM 인스턴스 프로필이 연결되어 있는 Amazon EC2 인스턴스가 이름이 `amzn-s3-demo-bucket`인 Amazon S3 버킷에서 위치에 관계없이 다운로드할 수 있도록 허용합니다.

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:role/CodeDeployDemo"
                  ]
              }
          }
      ]
  }
  ```

  다음 Amazon S3 버킷 정책은 ARN `arn:aws:iam::444455556666:user/CodeDeployUser`이(가) 포함된 IAM 사용자가 연결되어 있는 온프레미스 인스턴스가 이름이 `amzn-s3-demo-bucket`인 Amazon S3 버킷에서 위치에 관계없이 다운로드할 수 있도록 허용합니다.

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:user/CodeDeployUser"
                  ]
              }
          }
      ]
  }
  ```

  Amazon S3 버킷 정책 생성 및 연결에 대한 자세한 내용은 [버킷 정책 예제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)를 참조하세요.
+ Amazon S3 버킷 또는 GitHub 리포지토리에서 애플리케이션 개정 버전을 배포하는 경우 IAM 인스턴스 프로파일을 설정하고 인스턴스에 연결합니다. 자세한 내용은 [4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기](getting-started-create-iam-instance-profile.md), [CodeDeploy용 Amazon EC2 인스턴스 생성(AWS CLI 또는 Amazon EC2 콘솔)](instances-ec2-create.md), 및 [CodeDeploy용 Amazon EC2 인스턴스 생성(CloudFormation 템플릿)](instances-ec2-create-cloudformation-template.md)을(를) 참조하세요.
+ GitHub에서 콘텐츠를 배포하는 경우 GitHub 계정과 퍼블릭 리포지토리를 만듭니다. GitHub 계정을 만들려면 [GitHub 조인](https://github.com/join)을 참조하세요. GitHub 리포지토리를 만들려면 [리포지토리 생성](https://help.github.com/articles/create-a-repo/)을 참조하세요.
**참고**  
 프라이빗 리포지토리는 현재 지원되지 않습니다. 콘텐츠가 프라이빗 GitHub 리포지토리에 저장되어 있는 경우 해당 콘텐츠를 인스턴스로 다운로드하고 `--bundle-location` 옵션을 사용하여 로컬 경로를 지정할 수 있습니다.
+ 인스턴스에 배포하려는 콘텐츠(AppSpec 파일 포함)를 준비하고 로컬 인스턴스, Amazon S3 버킷 또는 GitHub 리포지토리에 배치합니다. 자세한 내용은 [CodeDeploy의 애플리케이션 개정 작업](application-revisions.md) 단원을 참조하세요.
+ 다른 구성 옵션의 기본값 이외의 값을 사용하려면 구성 파일을 생성하여 인스턴스(Amazon Linux, RHEL 또는 Ubuntu Server 인스턴스의 경우 `/etc/codedeploy-agent/conf/codedeployagent.yml`, Windows Server 인스턴스의 경우 `C:\ProgramData\Amazon\CodeDeploy\conf.yml`)에 배치합니다. 자세한 내용은 [CodeDeploy 에이전트 구성 참조](reference-agent-configuration.md) 단원을 참조하세요.
**참고**  
Amazon Linux, RHEL 또는 Ubuntu Server 인스턴스에서 구성 파일을 사용하는 경우 다음 중 하나를 수행해야 합니다.  
`:root_dir:`와(과) `:log_dir:` 변수를 사용하여 배포 루트 및 로그 디렉토리 폴더의 기본값 이외의 위치를 지정할 수 있습니다.
`sudo`을(를) 사용하여 CodeDeploy 에이전트 명령을 실행합니다.

## 로컬 배포 생성
<a name="deployments-local-deploy"></a>

로컬 배포를 생성하려는 인스턴스에서 터미널 세션(Amazon Linux, RHEL 또는 Ubuntu Server 인스턴스) 또는 명령 프롬프트(Windows Server)를 열어 도구 명령을 실행합니다.

**참고**  
 **codedeploy-local** 명령이 다음 위치에 설치됩니다.  
 Amazon Linux, RHEL 또는 Ubuntu Server의 경우: `/opt/codedeploy-agent/bin`.
 Windows Server의 경우: `C:\ProgramData\Amazon\CodeDeploy\bin`.

**기본 명령 구문**

```
codedeploy-local [options]
```

**시놉시스**

```
codedeploy-local
[--bundle-location <value>]
[--type <value>]
[--file-exists-behavior <value>]
[--deployment-group <value>]
[--events <comma-separated values>]
[--agent-configuration-file <value>]
[--appspec-filename <value>]
```

**옵션**

**-l**, **--bundle-location**

애플리케이션 개정 버전 번들의 위치. 위치를 지정하지 않으면 도구는 기본적으로 현재 작업 중인 디렉토리를 사용합니다. `--bundle-location`의 값을 지정하면 `--type`에 대한 값도 함께 지정해야 합니다.

번들 위치 형식 예:
+ Local Amazon Linux, RHEL 또는 Ubuntu Server 인스턴스: `/path/to/local/bundle.tgz`
+ 로컬 Windows Server 인스턴스: `C:/path/to/local/bundle`
+ Amazon S3 버킷: `s3://amzn-s3-demo-bucket/bundle.tar`
+ GitHub 리포지토리: `https://github.com/account-name/repository-name/`

**-t**,**—type**

애플리케이션 개정 버전 번들의 형식. 지원되는 형식은 `tgz`, `tar`, `zip`, `directory`입니다. 유형을 지정하지 않을 경우 도구는 기본적으로 `directory`을(를) 사용합니다. `--type`의 값을 지정하면 `--bundle-location`에 대한 값도 함께 지정해야 합니다.

**-b**, **--file-exists-behavior**

배포 대상 위치에 이미 있지만 이전에 성공한 배포의 일부가 아닌 파일이 처리되는 방식을 나타냅니다. 옵션에는 DISALLOW, OVERWRITE, RETAIN가 있습니다. 자세한 내용은 *[AWS CodeDeploy API 참조](https://docs.aws.amazon.com/codedeploy/latest/APIReference/)*의 [fileExistsBehavior](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html#CodeDeploy-CreateDeployment-request-fileExistsBehavior)을 참조하세요.

**-g**, **--deployment-group**

배포할 콘텐츠의 대상 위치인 폴더의 경로. 폴더를 지정하지 않을 경우 도구는 배포 루트 디렉토리 내에서 *default-local-deployment-group*이라는 이름의 폴더를 생성합니다. 생성하는 각 로컬 배포에 대해 이 도구는 이 폴더 내에 *d-98761234-local*과 같은 이름으로 하위 디렉토리를 생성합니다.

**-e**, **--events**

AppSpec 파일에 나열된 이벤트 대신 순서대로 실행하려는 재정의 수명 주기 이벤트 후크 세트. 쉼표로 구분된 여러 후크를 지정할 수 있습니다. 다음 경우에 이 옵션을 사용할 수 있습니다.
+ AppSpec 파일을 업데이트하지 않고 다른 이벤트 집합을 실행하려고 합니다.
+ AppSpec 파일에 있는 항목(예: `ApplicationStop`)에 대한 예외로 단일 이벤트 후크를 실행하려고합니다 

재정의 목록에 **DownloadBundle** 및 **Install** 이벤트를 지정하지 않는 경우 지정한 모든 이벤트 후크 전에 실행됩니다. `--events` 옵션 목록에 **DownloadBundle**과 **Install**이 포함되어 있는 경우 CodeDeploy 배포에서 일반적으로 해당 항목 이전에 실행되는 이벤트만 해당 항목 앞에 와야 합니다. 자세한 내용은 [AppSpec 'hooks' 섹션](reference-appspec-file-structure-hooks.md) 단원을 참조하세요.

**-c**, **--agent-configuration-file**

기본 위치가 아닌 다른 위치에 저장하는 경우 배포에 사용할 구성 파일의 위치. 구성 파일은 배포에 대한 다른 기본값 및 동작에 대한 대안을 지정합니다.

기본적으로 구성 파일은 `/etc/codedeploy-agent/conf/codedeployagent.yml`(Amazon Linux, RHEL 또는 Ubuntu Server 인스턴스) 또는 `C:/ProgramData/Amazon/CodeDeploy/conf.yml`(Windows Server)에 저장됩니다. 자세한 내용은 [CodeDeploy 에이전트 구성 참조](reference-agent-configuration.md) 단원을 참조하십시오.

**-A**, **--appspec-filename**

AppSpec 파일의 이름입니다. 로컬 배포의 경우 허용되는 값은 `appspec.yml` 및 `appspec.yaml`입니다. 기본적으로 AppSpec 파일의 이름은 `appspec.yml`입니다.

**-h**, **--help**

도움말 컨텐츠의 요약을 표시합니다.

**-v**, **--version**

도구의 버전 번호를 표시합니다.

## 예제
<a name="deployments-local-examples"></a>

다음은 유효한 명령 형식의 예입니다.

```
codedeploy-local
```

```
codedeploy-local --bundle-location /path/to/local/bundle/directory
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group my-deployment-group
```

```
codedeploy-local --bundle-location /path/to/local/directory --type directory --deployment-group my-deployment-group
```

Amazon S3에서 번들 배포:

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.tgz --type tgz
```

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.zip?versionId=1234&etag=47e8 --type zip --deployment-group my-deployment-group
```

퍼블릭 GitHub 리포지토리에서 번들 배포:

```
codedeploy-local --bundle-location https://github.com/awslabs/aws-codedeploy-sample-tomcat --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/master --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/HEAD --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/1a2b3c4d --type zip
```

여러 수명 주기 이벤트를 지정하는 번들 배포:

```
codedeploy-local --bundle-location /path/to/local/bundle.tar --type tar --application-folder my-deployment --events DownloadBundle,Install,ApplicationStart,HealthCheck
```

ApplicationStop 수명 주기 이벤트를 사용하여 이전에 배포한 애플리케이션 중지:

```
codedeploy-local --bundle-location /path/to/local/bundle.tgz --type tgz --deployment-group --events ApplicationStop
```

특정 배포 그룹 ID를 사용하여 배포:

```
codedeploy-local --bundle-location C:/path/to/local/bundle/directory --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```