메뉴
AWS 시작
웹 애플리케이션 배포

3단계: Elastic Beanstalk를 이용한 앱 배포

Elastic Beanstalk를 이용해 가입 앱을 쉽게 배포할 수 있습니다. 앱 버전(예: .zip 파일)을 Elastic Beanstalk에 업로드한 다음, 앱에 대한 일부 정보를 제공합니다. Elastic Beanstalk가 환경을 실행하고 코드(예: Amazon EC2 인스턴스) 실행에 필요한 AWS 리소스를 프로비저닝합니다. 환경 실행 후에는 환경을 직접 관리하고 새로운 앱 버전을 배포할 수 있습니다.

원본 번들 준비

Elastic Beanstalk는 앱을 한 개의 .zip 또는 .war 파일로 번들링하도록 요구합니다. 하나의 번들에는 최상위 폴더가 포함될 수 없으므로, 개별 앱 파일을 담고 있는 디렉터리가 아닌 개별 앱 파일을 압축해야 합니다.

원본 번들을 준비하려면

  1. Windows 탐색기 또는 Mac OS X Finder와 같은 도구에서 앱 폴더(eb-node-express-signup-master)를 엽니다.

  2. 하위 폴더를 포함해 폴더 내 모든 항목들을 선택합니다. 최상위 폴더는 선택하지 마십시오.

  3. 선택한 항목들을 마우스 오른쪽 버튼으로 클릭하여 [Send to > Compressed (zipped) Folder](Windows) 또는 [Compress Items](Finder)와 같은 압축 옵션을 선택합니다.

다양한 도구를 이용한 파일 압축 방법에 대한 자세한 정보는 AWS Elastic Beanstalk 개발자 안내서애플리케이션 원본 번들 생성을 참조하십시오.

앱 생성

Elastic Beanstalk 앱을 생성하여 새로운 환경에 맞는 앱 버전을 배포하십시오.

앱을 생성하려면

  1. Elastic Beanstalk 콘솔을 엽니다.

  2. [Create New Application]을 클릭합니다.

  3. [Application Information] 페이지에서 앱 이름을 입력합니다. 앱에 대한 설명을 추가로 입력할 수 있습니다. 본 자습서에서는 앱 이름을 my-startup-app이라고 짓겠습니다. 완료되면 [Next ]를 클릭합니다.

  4. [New Environment] 페이지에서 환경 티어를 위해 [Create web server]를 클릭한 다음, [Next]를 클릭합니다.

  5. [Permissions] 창에서, IAM 역할 생성에서 생성한 IAM 역할을 선택합니다. 이 역할은 새 환경에서 Amazon EC2 인스턴스를 시작하는 데 사용됩니다. [Next]를 클릭합니다.

  6. [Environment Type] 페이지에서 사전 정의된 구성을 위해 [Node.js]를 선택한 다음, [Next]를 클릭합니다.

  7. [Application Version] 페이지에서 [Upload your own]을 선택하고 [Browse]를 클릭한 다음, 생성한 압축 파일을 선택합니다. [Next]를 클릭합니다.

  8. [Environment Information] 페이지에서 사용한 적이 없는 환경 이름과 환경 URL을 입력합니다. [Check availability]를 클릭하여 입력한 URL이 사용 가능한지 확인합니다. 사용 가능하다면 녹색으로 표시되고, 그렇지 않으면 오류 메시지가 나타납니다. 아무도 사용하지 않는 URL이라면 [Next]를 클릭합니다.

  9. [Additional Resources] 페이지에서 확인란 두 곳이 비어 있는지 확인한 다음, [Next]를 클릭합니다.

  10. [Configuration Details] 페이지에서 [Next]를 클릭하여 모든 설정에 대한 기본값을 사용합니다.

  11. [Environment Tags] 페이지에서 [Next]를 클릭합니다.

  12. [Review] 페이지에서 설정을 검토한 다음, [Launch를 클릭합니다. Elastic Beanstalk가 환경을 생성하고 앱을 배포하는 것을 AWS Elastic Beanstalk 대시보드에서 실시간으로 볼 수 있습니다. 그 과정은 몇 분밖에 걸리지 않습니다.

앱 테스트

배포가 끝나고 환경 건전성이 '녹색'으로 표시되면, 앱의 URL을 클릭하십시오.

양식을 채우고 알림 수신을 확인하면 가입 앱을 테스트할 수 있습니다.

배포 관련 문제 해결

모든 단계를 이행하고 URL을 클릭했는데 앱이 생성되지 않는다면, 배포에 문제가 있는 것입니다. nginx 서버에서 가동되는 샘플 앱의 경우, "502 Bad Gateway" 메시지로 배포 문제가 나타날 가능성이 있습니다. "502" 메시지는 그다지 많은 정보를 주지 않습니다. 배포 문제를 해결하려면, Elastic Beanstalk에서 제공하는 로그를 이용해야 할 수도 있습니다.

예를 들어, app_config.json를 업데이트하는 과정에서 실수로 인용 부호를 누락했습니다. 이 경우 배포를 마치고 나면 502 오류가 뜹니다. 문제가 무엇이고 또 어떻게 해결하시겠습니까?

물론 개발 과정에서 그러한 오류를 잡아내려고 애를 쓸 것입니다. 그러나 오류가 생성 단계까지 계속되는 경우 또는 단지 앱 업데이트만을 원하는 경우라면, Elastic Beanstalk는 재배포를 빠르고 쉽게 만듭니다.

배포 관련 문제를 해결하려면

  1. Elastic Beanstalk 콘솔에서 환경 탐색 창의 [Logs]를 클릭합니다.

  2. [Logs] 페이지에서 [Snapshot Logs]를 클릭합니다. 환경이 업데이트될 때까지 기다렸다가 [View log file]을 클릭합니다. 로그 파일을 보면 배포 및 런타임 중에 서버 측에서 무슨 일이 발생했는지 알 수 있습니다. 자세히 살펴볼 내용들이 많으므로 본 자습서에서는 로그의 다양한 영역들을 다루지 않겠습니다. 그러나 config 파일에서 인용 부호를 누락한 다음 로그를 스크롤하여 /var/log/nodejs/nodejs.log까지 자세히 살펴보면 이와 비슷한 오류를 찾을 수 있습니다.

    SyntaxError: Unexpected token u at Object.parse (native) at Object.<anonymous> (/var/app/current/server.js:23:15) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:245:9) undefined:2 "AWS_REGION": us-west-2",^

    이 경우에는 분석기가 문자열 us-west-2"에서 "u" 대신에 인용 부호를 기대했기 때문에 "Unexpected token u" 메시지가 나타납니다. 이제 문제를 찾았으므로 해결할 수 있습니다.

  3. 이 문제를 실제로 해결하고자 한다면 로컬 환경의 앱 코드로 돌아가 인용 부호 누락을 수정해야 합니다. 그런 다음 새로운 .zip 파일을 생성해 업로드합니다.

  4. 앱을 재배포하기 위해서는 Elastic Beanstalk 대시보드로 가서 [Upload and Deploy]를 클릭한 다음, 업데이트된 .zip 파일을 선택합니다.

  5. 새로운 버전 레이블로 변경합니다. 예를 들어, 최초 배포에 "Archive"라는 레이블이 붙었다면, 두 번째 배포에는 "Archive-2"라는 레이블을 붙일 수 있습니다.

  6. [Deploy]를 클릭합니다. Elastic Beanstalk가 환경을 업데이트합니다.

  7. 환경이 업데이트되어 '녹색'으로 표시되면, 앱 URL을 이용해 앱을 테스트하십시오.