AWS Elastic Beanstalk
개발자 가이드

애플리케이션 소스 번들 생성

AWS Elastic Beanstalk 콘솔을 사용하여 새 애플리케이션 또는 애플리케이션 버전을 배포할 경우 소스 번들을 업로드해야 합니다. 소스 번들은 다음 요구 사항을 충족해야 합니다.

  • 단일 ZIP 파일 또는 WAR 파일로 구성됩니다. WAR 파일 내에 여러 ZIP 파일을 포함할 수 있습니다.

  • 512MB를 초과해서는 안 됩니다.

  • 상위 폴더 또는 최상위 디렉터리를 포함해서는 안 됩니다(하위 디렉터리는 상관 없음).

정기 백그라운드 작업을 처리하는 작업자 애플리케이션을 배포하려면 애플리케이션 소스 번들이 cron.yaml 파일도 포함해야 합니다. 자세한 내용은 정기적 작업 단원을 참조하십시오.

Elastic Beanstalk 명령줄 인터페이스(EB CLI), AWS Toolkit for Eclipse 또는 AWS Toolkit for Visual Studio를 사용하여 애플리케이션을 배포할 경우 올바른 ZIP 또는 WAR 파일이 자동으로 구성됩니다. 자세한 내용은 Elastic Beanstalk 명령줄 인터페이스(EB CLI), AWS Elastic Beanstalk에서의 Java 애플리케이션 생성 및 배포AWS Toolkit for Visual Studio 섹션을 참조하십시오.

명령줄에서 소스 번들 생성

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 구성 파일 및 점으로 시작하는 다른 파일과 폴더가 아카이브에 포함됩니다.

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

~/myapp$ jar -cvf myapp.war .

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

Git을 사용하여 소스 번들 생성

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

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

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

Mac OS X Finder 또는 Windows 탐색기에서 파일 압축

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

참고

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

다음 파일과 하위 폴더를 포함하고 레이블이 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 세그먼트를 추가해서는 안 됩니다.

이 주제에서는 이 샘플 파일 구조를 사용하여 파일을 압축하는 방법을 설명합니다.

Mac OS X Finder에서 파일을 압축하려면

  1. 최상위 프로젝트 폴더를 열고 내부에 있는 모든 파일과 하위 폴더를 선택합니다. 최상위 폴더는 선택하지 마십시오.

    
            Mac OS X Finder에서 선택된 파일
  2. 선택한 파일을 마우스 오른쪽 버튼으로 클릭한 다음 Compress X items(X개 항목 압축)를 선택합니다. 여기서 X는 선택한 파일 및 하위 폴더의 수입니다.

    
            Mac OS X Finder에서 파일 압축

Windows 탐색기에서 파일을 압축하려면

  1. 최상위 프로젝트 폴더를 열고 내부에 있는 모든 파일과 하위 폴더를 선택합니다. 최상위 폴더는 선택하지 마십시오.

    
            Windows 탐색기에서 선택된 파일
  2. 선택한 파일을 마우스 오른쪽 버튼으로 클릭하고 Send to(전송 대상)를 선택한 다음 Compressed (zipped) folder(압축된 폴더)를 선택합니다.

    
            Windows 탐색기에서 파일 압축

.NET 애플리케이션에 대한 소스 번들 생성

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

.NET 애플리케이션에 대한 소스 번들을 수동으로 생성해야 하는 경우 프로젝트 디렉터리를 포함하는 ZIP 파일을 생성할 수 없습니다. Elastic Beanstalk에 배포하는 데 적합한 프로젝트에 대한 웹 배포 패키지를 생성해야 합니다. 다음과 같은 다양한 방법으로 배포 패키지를 생성할 수 있습니다.

  • Visual Studio에서 웹 게시 마법사를 사용하여 배포 패키지를 생성합니다. 자세한 정보는 Visual Studio에서 웹 배포 패키지를 생성하는 방법.

    중요

    웹 배포 패키지를 생성할 경우 Site name(사이트 이름)Default Web Site로 시작해야 합니다.

  • .NET 프로젝트가 있는 경우 다음 예에 표시된 대로 msbuild 명령을 사용하여 배포 패키지를 생성할 수 있습니다.

    중요

    DeployIisAppPath 파라미터는 Default Web Site로 시작해야 합니다.

    C:/> msbuild <web_app>.csproj /t:Package /p:DeployIisAppPath="Default Web Site"
  • 웹 사이트 프로젝트가 있는 경우 IIS 웹 배포 도구를 사용하여 배포 패키지를 생성할 수 있습니다. 자세한 내용은 웹 사이트 패키징 및 복원 섹션을 참조하십시오.

    중요

    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

소스 번들 테스트

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

Mac OS X 또는 Linux에서 파일 추출을 테스트하려면

  1. 터미널 창을 열거나(Mac OS X) Linux 서버에 연결합니다. 소스 번들이 들어 있는 디렉터리로 이동합니다.

  2. unzip 또는 tar xf 명령을 사용하여 아카이브의 압축을 풉니다.

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

    참고

    Mac OS X Finder를 사용하여 아카이브의 압축을 풀 경우, 아카이브 자체의 구조와 관계없이 새 최상위 폴더가 생성됩니다. 최상의 결과를 얻으려면 명령줄을 사용합니다.

Windows에서 파일 추출을 테스트하려면

  1. 명령줄을 통해 압축된 파일을 추출할 수 있는 프로그램을 다운로드하거나 설치합니다. 예를 들어, http://stahlforce.com/dev/index.php?tool=zipunzip에서 무료 unzip.exe 프로그램을 다운로드할 수 있습니다.

  2. 필요한 경우 소스 번들이 들어 있는 디렉터리에 실행 파일을 복사합니다. 시스템 차원 도구를 설치한 경우 이 단계를 건너뛸 수 있습니다.

  3. 적절한 명령을 사용하여 아카이브의 압축을 풉니다. 1단계에서 링크를 사용하여 unzip.exe를 다운로드한 경우 명령은 unzip <archive-name>입니다.

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