

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

# Elastic Beanstalk 애플리케이션 소스 번들 생성
<a name="applications-sourcebundle"></a>

이 주제에서는 애플리케이션 소스 파일을 소스 번들의 Elastic Beanstalk에 업로드하는 방법을 설명합니다. 소스 번들의 요구 사항, 구조 및 소스 번들을 생성하는 접근 방식을 설명합니다.

 AWS Elastic Beanstalk 콘솔을 사용하여 새 애플리케이션 또는 애플리케이션 버전을 배포할 때는 애플리케이션의 파일을 *소스 번들*에 업로드해야 합니다. 소스 번들은 다음 요구 사항을 충족해야 합니다.
+ 단일 `ZIP` 파일 또는 `WAR` 파일로 구성됩니다. `WAR` 파일 내에 여러 `ZIP` 파일을 포함할 수 있습니다.
+ 500MB를 초과해서는 안 됩니다.
+ 상위 폴더 또는 최상위 디렉터리를 포함해서는 안 됩니다(하위 디렉터리는 상관 없음).

정기 백그라운드 작업을 처리하는 작업자 애플리케이션을 배포하려면 애플리케이션 소스 번들이 `cron.yaml` 파일도 포함해야 합니다. 자세한 내용은 [정기적 작업](using-features-managing-env-tiers.md#worker-periodictasks) 단원을 참조하십시오.

Elastic Beanstalk 명령줄 인터페이스(EB CLI), AWS Toolkit for Eclipse 또는 AWS Toolkit for Visual Studio를 사용하여 애플리케이션을 배포하는 경우 ZIP 또는 WAR 파일이 자동으로 올바르게 구성됩니다. 자세한 내용은 [Elastic Beanstalk를 관리하기 위한 EB 명령줄 인터페이스(EB CLI) 설정](eb-cli3.md), [Elastic Beanstalk를 사용하여 Java 애플리케이션 배포](create_deploy_Java.md), [는 AWS Toolkit for Visual Studio](dotnet-toolkit.md) 섹션을 참조하세요.

**Topics**
+ [명령줄에서 소스 번들 생성](#using-features.deployment.source.commandline)
+ [Git를 사용하여 소스 번들 생성](#using-features.deployment.source.git)
+ [Mac OS X Finder 또는 Windows 탐색기에서 파일 압축](#using-features.deployment.source.gui)
+ [.NET 애플리케이션에 대한 소스 번들 생성](#using-features.deployment.source.dotnet)
+ [소스 번들 테스트](#using-features.deployment.source.test)

## 명령줄에서 소스 번들 생성
<a name="using-features.deployment.source.commandline"></a>

`zip` 명령을 사용하여 소스 번들을 만듭니다. 숨긴 파일과 폴더를 포함하려면 다음과 같은 패턴을 사용합니다.

```
~/myapp$ zip ../myapp.zip -r * .[^.]*
  adding: app.js (deflated 63%)
  adding: index.js (deflated 44%)
  adding: manual.js (deflated 64%)
  adding: package.json (deflated 40%)
  adding: restify.js (deflated 85%)
  adding: .ebextensions/ (stored 0%)
  adding: .ebextensions/xray.config (stored 0%)
```

이렇게 하면 Elastic Beanstalk [구성 파일](ebextensions.md) 및 점으로 시작하는 다른 파일과 폴더가 아카이브에 포함됩니다.

Tomcat 웹 애플리케이션의 경우 `jar`를 사용하여 웹 아카이브를 만듭니다.

```
~/myapp$ jar -cvf {{myapp}}.war .
```

위 명령은 소스 번들 크기를 불필요하게 늘릴 수 있는 숨겨진 파일을 포함시킵니다. 세부적으로 제어하려면 보다 자세한 파일 패턴을 사용하거나, [Git를 사용하여 소스 번들을 직접 만드십시오](#using-features.deployment.source.git).

## Git를 사용하여 소스 번들 생성
<a name="using-features.deployment.source.git"></a>

Git을 사용하여 애플리케이션 소스 코드를 관리할 경우 `git archive` 명령을 사용하여 소스 번들을 만듭니다.

```
$ git archive -v -o {{myapp}}.zip --format=zip HEAD
```

`git archive`는 git에 저장된 파일만 포함시키며 무시된 파일과 git 파일은 제외시킵니다. 이렇게 하면 소스 번들 크기를 최대한 작게 유지할 수 있습니다. 자세한 내용은 [git-archive 매뉴얼 페이지](http://git-scm.com/docs/git-archive)를 참조하십시오.

## Mac OS X Finder 또는 Windows 탐색기에서 파일 압축
<a name="using-features.deployment.source.gui"></a>

Mac OS X Finder 또는 Windows 탐색기에서 `ZIP` 파일을 생성할 경우 상위 폴더를 압축하는 대신 파일과 하위 폴더를 직접 압축해야 합니다.

**참고**  
Mac OS X 및 Linux 기반 운영 체제의 그래픽 사용자 인터페이스(GUI)에서는 이름이 마침표(.)로 시작하는 파일 및 폴더를 표시하지 않습니다. `ZIP` 파일에 숨김 폴더(예: `.ebextensions`)가 포함되어야 하는 경우 GUI 대신 명령줄을 사용하여 애플리케이션을 압축하십시오. Mac OS X 또는 Linux 기반 운영 체제에서 `ZIP` 파일을 생성하는 명령줄 절차는 [명령줄에서 소스 번들 생성](#using-features.deployment.source.commandline) 단원을 참조하십시오.

**Example**  
다음 파일과 하위 폴더를 포함하고 레이블이 `myapp`인 Python 프로젝트 폴더가 있다고 가정합니다.  

```
myapplication.py
README.md
static/
static/css
static/css/styles.css
static/img
static/img/favicon.ico
static/img/logo.png
templates/
templates/base.html
templates/index.html
```
위 요구 사항 목록에 언급된 대로 상위 폴더를 포함하지 않고 소스 번들을 압축해야 하므로, 압축 해제된 구조에는 추가 최상위 디렉터리가 포함되어 있지 않습니다. 이 예에서는 파일의 압축을 풀 때 `myapp` 폴더가 생성되지 않습니다. 또는 명령줄에서 파일 경로에 `myapp` 세그먼트를 추가해서는 안 됩니다.  
이 주제에서는 이 샘플 파일 구조를 사용하여 파일을 압축하는 방법을 설명합니다.

## .NET 애플리케이션에 대한 소스 번들 생성
<a name="using-features.deployment.source.dotnet"></a>

Visual Studio를 사용하는 경우에 포함된 배포 도구를 사용하여 .NET 애플리케이션을 Elastic Beanstalk에 AWS Toolkit for Visual Studio 배포할 수 있습니다. 자세한 내용은 [배포 도구를 사용하여 .NET에 Elastic Beanstalk 애플리케이션 AWS 배포](deploy_NET_standalone_tool.md) 단원을 참조하십시오.

.NET 애플리케이션에 대한 소스 번들을 수동으로 생성해야 하는 경우 프로젝트 디렉터리를 포함하는 `ZIP` 파일을 생성할 수 없습니다. Elastic Beanstalk에 배포하는 데 적합한 프로젝트에 대한 웹 배포 패키지를 생성해야 합니다. 다음과 같은 다양한 방법으로 배포 패키지를 생성할 수 있습니다.
+ Visual Studio에서 **웹 게시** 마법사를 사용하여 배포 패키지를 생성합니다. 자세한 내용은 [Visual Studio에서 웹 배포 패키지를 생성하는 방법](http://msdn.microsoft.com/en-us/library/dd465323.aspx)을 참조하세요.
**중요**  
웹 배포 패키지를 생성할 경우 **Site name(사이트 이름)**을 `Default Web Site`로 시작해야 합니다.
+ .NET 프로젝트가 있는 경우 다음 예에 표시된 대로 **msbuild** 명령을 사용하여 배포 패키지를 생성할 수 있습니다.
**중요**  
`DeployIisAppPath` 파라미터는 `Default Web Site`로 시작해야 합니다.

  ```
  C:/> msbuild {{<web_app>.csproj}} /t:Package /p:DeployIisAppPath="Default Web Site"
  ```
+ 웹 사이트 프로젝트가 있는 경우 IIS 웹 배포 도구를 사용하여 배포 패키지를 생성할 수 있습니다. 자세한 내용은 [웹 사이트 패키징 및 복원](http://www.iis.net/learn/publish/using-web-deploy/packaging-and-restoring-a-web-site) 섹션을 참조하십시오.
**중요**  
`apphostconfig` 파라미터는 `Default Web Site`로 시작해야 합니다.

여러 애플리케이션 또는 ASP.NET Core 애플리케이션을 배포하려는 경우 소스 번들의 루트에 `.ebextensions` 폴더를 두고, 애플리케이션 번들과 매니페스트 파일을 나란히 둡니다.

```
~/workspace/source-bundle/
|-- .ebextensions
|   |-- environmentvariables.config
|   `-- healthcheckurl.config
|-- AspNetCore101HelloWorld.zip
|-- AspNetCoreHelloWorld.zip
|-- aws-windows-deployment-manifest.json
`-- VS2015AspNetWebApiApp.zip
```

## 소스 번들 테스트
<a name="using-features.deployment.source.test"></a>

소스 번들을 Elastic Beanstalk에 업로드하기 전에 로컬로 테스트할 수 있습니다. Elastic Beanstalk에서는 명령줄을 사용하여 파일을 추출하므로 GUI 도구 대신 명령줄에서 테스트를 수행하는 것이 좋습니다.

압축 해제된 파일이 새 최상위 폴더 또는 디렉터리에 표시되지 않고, 아카이브와 동일한 폴더에 표시되는지 확인합니다.