AWS Elastic Beanstalk에 웹 앱 배포

시작 안내서

모듈 3: 웹 애플리케이션 배포

이 모듈에서는 애플리케이션을 클라우드로 배포합니다

소개

이 모듈에서는 NodeJS 애플리케이션을 배포할 수 있도록 패키지화하는 방법에 대해 배웁니다. 모듈 2에서 AWS CDK를 사용하여 생성한 AWS Elastic Beanstalk 리소스 전체를 프로비저닝하는 방법에 대해서도 배웁니다.

배우게 될 내용

  • NodeJS 애플리케이션 패키징
  • CDK 애플리케이션 구축 및 배포
  • NodeJS 애플리케이션 배포 업데이트

 소요 시간

10분

 모듈 선행 조건

  • 관리자 수준의 액세스 권한이 있는 AWS 계정**
  • 권장 브라우저: 최신 버전의 Chrome 또는 Firefox

[**]생성된 지 24시간이 지나지 않은 계정의 경우 이 자습서를 완료하는 데 필요한 서비스에 대한 액세스 권한이 아직 없을 수 있습니다.

구현

NodeJS 애플리케이션 패키징

모듈 2에서는 AWS CDK에서 S3 자산 모듈을 사용하여 S3에 zip 파일로 애플리케이션을 업로드할 것임을 배웠습니다.

이를 위해서는 NodeJS 애플리케이션의 zip 파일을 생성하여 AWS CDK 애플리케이션의 루트 디렉터리에 저장해야 합니다.  zip 파일의 이름을 "app.zip"로 지정합니다. 이를 수행하기 위해 다음 명령 을(를) 실행합니다.

zip -r ../app.zip ./*
gsg_build_elb_3

계정에서 CDK 부트스트랩

이 계정, 그리고 이 리전에서 처음으로 AWS CDK를 사용한다면, 부트스트래핑을 해야합니다. AWS CDK 앱을 AWS 계정 및 리전에 배포할 때, CDK는 배포 작업을 수행하기 위해 필요한 리소스를 프로비저닝해야 합니다. 이러한 리소스는 배포 파일을 저장하는 Amazon S3 버킷과 배포 수행에 필요한 권한을 부여하는 IAM 역할을 포함합니다. 이 초기 리소스의 프로비저닝을 부트스트래핑이라고 합니다.

AWS 계정과 리전을 부트스트래핑하기 위해 실행합니다.

cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1

다음과 같이 표시됩니다.

cdk bootstrap aws://123456789012/us-east-1

AWS 관리 콘솔에서 계정 번호를 가져오고, 이 목록에서 리전 이름을 가져올 수 있습니다.

CDK 애플리케이션 구축 및 배포

NodeJS 애플리케이션을 패키징하여 CDK 애플리케이션 디렉터리의 루트에 배치한 다음, AWS 계정 및 리전을 부트스트래핑하면 CDK 애플리케이션을 구축 및 배포할 준비가 됩니다.

CDK 애플리케이션을 구축하기 위한 첫 번째 단계입니다.

node run build

애플리케이션에 오류가 발생하지 않는다면, 성공적으로 수행되는 것이고 이제 클라우드에서 CDK 애플리케이션을 배포할 수 있습니다.

cdk deploy

새 역할을 생성했으므로 우선 사용자에게 계정 보안 수준을 변경할지 확인을 요청할 것입니다.

gsg_build_elb_4

"y"로 응답하면 배포가 시작됩니다. 완료하는 데는 몇 분이 걸립니다. 완료가 되면, 이 배포가 생성되었다는 CloudFormation 스택의 ARN(Amazon 리소스 이름)의 메시지를 받게 됩니다.

CloudFormation 관리 콘솔을 열면 2개의 신규 스택이 있음을 확인할 수 있습니다.

gsg_build_elb_5

CdkEbInfraStack이라는 스택은 이전 모듈에서 생성한 모든 Elastic Beanstalk 리소스(Elastic Beanstalk 애플리케이션, 애플리케이션 버전, 인스턴스 프로파일 및 환경)를 포함합니다.

다른 스택(무작위 스트링 포함)은 Elastic Beanstalk에서 생성되었으며, Elastic Beanstalk 앱을 실행하기 위해 필요한 모든 리소스(Auto Scaling 그룹, 인스턴스, Amazon CloudWatch 경보 및 지표, 로드 밸런서 및 보안 그룹)를 포함합니다.

클라우드 내 애플리케이션 보기

클라우드에 배포한 애플리케이션을 보고 싶다면, 우선 해야 할 작업은 웹 앱의 URL을 찾는 것입니다. AWS 콘솔의 Elastic Beanstalk 서비스로 이동하여 이 URL을 찾고, MyWebAppEnvironment라는 환경을 찾아봅니다.

gsg_build_elb_6

그러면 URL이 표시됩니다. URL을 클릭하면 웹 앱이 시작됩니다.

NodeJS 애플리케이션 배포 업데이트

웹 앱을 변경하고 클라우드에 다시 배포하고 싶다면, 다음 단계를 따를 수 있습니다.

  • 웹 앱에서 변경
  • app.zip 파일로 패키징
  • app.zip 파일을 CDK 애플리케이션의 루트 디렉터리에 저장
  • CDK 프로젝트 구축 - npm run 구축
  • CDK 프로젝트 배포 - cdk 배포

이제 배포한 Elastic Beanstalk 앱의 새로운 버전을 확인할 수 있습니다. 웹 앱 URL을 방문하면 새로운 버전이 배포됩니다. 시간이 조금 소요되므로 콘솔이 언제 완료되는지 계속 주시하십시오.

gsg_build_elb_7

일반적인 실수

애플리케이션 압축

이 오류가 발생했다면 NodeJS 애플리케이션이 Elastic Beanstalk에 업로드된 경우입니다.

Failed to find package.json. Node.js may have issues starting. Verify package.json is valid or place code in a file named server.js or app.js.

한 가지 문제는 애플리케이션을 패키징하는 방법일 수 있습니다. package-lock.json 및 node_modules 디렉터리를 제거하고 이 명령을 웹 앱 디렉터리 내에서 실행합니다.

zip -r app.zip .

그러면 Elastic Beanstalk에 대한 파일이 올바르게 압축됩니다.

앱 패키징 시 노드 모듈

웹 애플리케이션의 zip 파일 내 다운로드한 모든 종속성과 node_modules 디렉터리를 패키징할 수 있습니다.

이 디렉터리가 있으면 Elastic Beanstalk는 다운로드해야 하는 종속 파일이 없다고 가정합니다.

Elastic Beanstalk 패키지 내 NodeJS 종속성 다루기 단원의 지침을 상세히 참고하세요.

결론

이 가이드에서는 NodeJS 웹 애플리케이션을 패키징하고 이를 Elastic Beanstalk에 배포하는 방법과 모든 인프라를 CDK 애플리케이션으로 배포하는 방법에 대해 배웠습니다.

다음 모듈: 리소스 정리

내용이 마음에 드셨는지요.

피드백을 제공해 주셔서 감사합니다.
이 페이지가 도움이 되어 기쁩니다. 지속적인 개선에 도움이 되는 추가 세부 정보를 공유해 주시겠습니까?
닫기
피드백을 제공해 주셔서 감사합니다.
이 페이지가 도움이 되지 못해 죄송합니다. 지속적인 개선에 도움이 되는 추가 세부 정보를 공유해 주시겠습니까?
닫기