

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

# CodeDeploy AppSpec 파일 참조
<a name="reference-appspec-file"></a>

이 단원은 참조용입니다. AppSpec 파일에 대한 개념적 개요는 [CodeDeploy 애플리케이션 사양(AppSpec) 파일](application-specification-files.md) 단원을 참조하세요.

애플리케이션 사양 파일(AppSpec file)은 CodeDeploy에서 배포를 관리하는 데 사용하는 [YAML](http://www.yaml.org) 형식 또는 JSON 형식의 파일입니다.

**참고**  
로컬 배포를 수행하지 않는 한 EC2/온프레미스 배포에 대한 AppSpec 파일의 이름은 `appspec.yml`입니다. 자세한 내용은 [로컬 배포 생성](deployments-local.md#deployments-local-deploy) 단원을 참조하십시오.

**Topics**
+ [Amazon ECS 컴퓨팅 플랫폼에 대한 AppSpec 파일](#appspec-reference-ecs)
+ [AWS Lambda 컴퓨팅 플랫폼의 AppSpec 파일](#appspec-reference-lambda)
+ [EC2/온프레미스 컴퓨팅 플랫폼에 대한 AppSpec 파일](#appspec-reference-server)
+ [AppSpec 파일 구조](reference-appspec-file-structure.md)
+ [AppSpec 파일 예](reference-appspec-file-example.md)
+ [AppSpec 파일 간격](#reference-appspec-file-spacing)
+ [AppSpec 파일 및 파일 위치 확인](reference-appspec-file-validate.md)

## Amazon ECS 컴퓨팅 플랫폼에 대한 AppSpec 파일
<a name="appspec-reference-ecs"></a>

Amazon ECS 컴퓨팅 플랫폼 애플리케이션의 경우 CodeDeploy에서 AppSpec 파일을 사용하여 다음을 결정합니다.
+  Amazon ECS 작업 정의 파일 AppSpec 파일에서 `TaskDefinition` 지침의 ARN으로 지정됩니다.
+  배포 중에 Application Load Balancer 또는 Network Load Balancer가 트래픽을 다시 라우팅하는 대체 작업 세트의 컨테이너 및 포트. AppSpec 파일의 `LoadBalancerInfo` 지침으로 지정됩니다.
+  Amazon ECS 서비스에 대한 선택적 정보(예: 실행되는 플랫폼 버전, 서브넷, 보안 그룹).
+  Amazon ECS 배포 중에 수명 주기 이벤트에 해당하는 후크 중에 실행할 Lambda 함수(선택 사항). 자세한 내용은 [Amazon ECS 배포를 위한 AppSpec 'hooks' 섹션](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs) 단원을 참조하십시오.

## AWS Lambda 컴퓨팅 플랫폼의 AppSpec 파일
<a name="appspec-reference-lambda"></a>

 AWS Lambda 컴퓨팅 플랫폼 애플리케이션의 경우 CodeDeploy에서 AppSpec 파일을 사용하여 다음을 결정합니다.
+ 배포할 Lambda 함수 버전
+ 확인 테스트로 사용할 Lambda 함수

AppSpec 파일은 YAML 형식 또는 JSON 형식일 수 있습니다. 배포를 생성할 때 AppSpec 파일의 내용을 CodeDeploy 콘솔에 직접 입력할 수도 있습니다.

## EC2/온프레미스 컴퓨팅 플랫폼에 대한 AppSpec 파일
<a name="appspec-reference-server"></a>

 애플리케이션이 EC2/온프레미스 컴퓨팅 플랫폼을 사용하는 경우 AppSpec 파일은 `appspec.yml`이라는 YAML 형식의 파일이며 애플리케이션의 소스 코드 디렉터리 구조의 루트에 배치해야 합니다. 그렇지 않으면 배포에 실패합니다. CodeDeploy에서 사용하여 다음 사항을 확인합니다.
+ Amazon S3 또는 GitHub의 애플리케이션 수정에서 인스턴스에 설치해야 할 항목
+ 배포 수명 주기 이벤트에 대한 응답으로 실행될 수명 주기 이벤트 후크

AppSpec 파일을 완성한 후 배포할 콘텐츠와 함께 아카이브 파일(zip, tar 또는 압축 tar)로 번들링합니다. 자세한 내용은 [CodeDeploy의 애플리케이션 개정 작업](application-revisions.md) 단원을 참조하십시오.

**참고**  
tar 및 압축된 tar 아카이브 파일 형식(.tar 및 .tar.gz)은 Windows Server 인스턴스에서 지원되지 않습니다.

번들링된 아카이브 파일(CodeDeploy에서는 *수정 버전*이라고 함)이 생성되면 Amazon S3 버킷 또는 Git 리포지토리에 업로드합니다. 그런 다음 CodeDeploy를 사용하여 수정을 배포합니다. 지침은 [CodeDeploy에서 배포 만들기](deployments-create.md) 단원을 참조하세요.

EC2/온프레미스 컴퓨팅 플랫폼 배포용 appspec.yml은 수정 버전의 루트 디렉터리에 저장됩니다. 자세한 내용은 [EC2 온프레미스 배포용 AppSpec 파일 추가](application-revisions-appspec-file.md#add-appspec-file-server) 및 [CodeDeploy의 개정 계획](application-revisions-plan.md) 단원을 참조하세요.

## AppSpec 파일 간격
<a name="reference-appspec-file-spacing"></a>

다음은 AppSpec 간격 지정의 올바른 형식입니다. 대괄호로 묶인 숫자는 항목 간에 있어야 하는 공백 수를 나타냅니다. 예: `[4]`은(는) 항목 사이에 네 개의 공백을 삽입하는 것을 의미합니다. AppSpec 파일의 공백 위치 및 개수가 올바르지 않으면 CodeDeploy에는 디버깅하기 어려울 수 있는 오류가 발생합니다.

```
version:[1]{{version-number}}
os:[1]{{operating-system-name}}
files:
[2]-[1]source:[1]{{source-files-location}}
[4]destination:[1]{{destination-files-location}}
permissions:
[2]-[1]object:[1]{{object-specification}}
[4]pattern:[1]{{pattern-specification}}
[4]except:[1]{{exception-specification}}
[4]owner:[1]{{owner-account-name}}
[4]group:[1]{{group-name}}
[4]mode:[1]{{mode-specification}}
[4]acls: 
[6]-[1]{{acls-specification}} 
[4]context:
[6]user:[1]{{user-specification}}
[6]type:[1]{{type-specification}}
[6]range:[1]{{range-specification}}
[4]type:
[6]-[1]{{object-type}}
hooks:
[2]{{deployment-lifecycle-event-name}}:
[4]-[1]location:[1]{{script-location}}
[6]timeout:[1]{{timeout-in-seconds}}
[6]runas:[1]{{user-name}}
```

다음은 간격이 올바르게 지정된 AppSpec 파일의 예입니다.

```
version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html/WordPress
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/change_permissions.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
    - location: scripts/create_test_db.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
```

간격 지정에 대한 자세한 내용은 [YAML](http://www.yaml.org) 사양을 참조하세요.