Elastic Beanstalk Node.js 플랫폼 사용 - AWS Elastic Beanstalk

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

Elastic Beanstalk Node.js 플랫폼 사용

이 주제에서는 Elastic Beanstalk에서 Node.js 애플리케이션을 구성, 빌드 및 실행하는 방법을 설명합니다.

AWS Elastic Beanstalk에서는 Node.js 프로그래밍 언어의 다양한 버전에 대한 여러 플랫폼 브랜치를 지원합니다. 전제 목록은 AWS Elastic Beanstalk 플랫폼 문서의 Node.js를 참조하세요.

Elastic Beanstalk에서는 Elastic Beanstalk 환경의 EC2 인스턴스에서 실행하는 소프트웨어를 사용자 지정하는 데 사용할 수 있는 구성 옵션을 제공합니다. 애플리케이션에 필요한 환경 변수를 구성하고, Amazon S3에 대한 로그 교체를 활성화하며, 정적 파일이 포함된 애플리케이션 소스의 폴더를 프록시 서버에서 제공하는 경로로 매핑할 수 있습니다.

실행 환경 구성을 수정하기 위해 Elastic Beanstalk 콘솔의 구성 옵션을 사용할 수 있습니다. 저장된 구성을 사용해 설정을 저장하면 환경 종료 시 구성이 훼손되지 않도록 할 수 있으며, 추후 기타 환경에서도 적용할 수 있습니다.

소스 코드에 설정을 저장하려면 구성 파일을 포함시킬 수 있습니다. 구성 파일 설정은 환경을 생성하거나 애플리케이션을 배포할 때마다 적용됩니다. 구성 파일을 사용하여 패키지를 설치하거나, 스크립트를 실행하거나, 배포 중 기타 인스턴스 사용자 지정 작업을 수행할 수 있습니다.

배포 중에 패키지를 설치하고 시작 명령을 제공하고 애플리케이션이 사용할 Node.js 버전을 지정하기 위해 소스 번들에 Package.json 파일을 포함할 수 있습니다. 종속성 버전을 잠그는 npm-shrinkwrap.json 파일을 포함할 수 있습니다.

Node.js 플랫폼은 정적 자산을 제공하고, 애플리케이션에 트래픽을 전달하며, 응답을 압축하는 프록시 서버를 포함합니다. 고급 시나리오를 위한 기본 프록시 구성을 확장하거나 재정의할 수 있습니다.

애플리케이션을 시작하는 데는 몇 가지 옵션이 있습니다. 소스 번들에 Procfile을 추가하여 애플리케이션을 시작하는 명령을 지정할 수 있습니다. Procfile을 제공하지 않고 package.json 파일을 제공할 경우 Elastic Beanstalk가 npm start를 실행합니다. 둘 중 하나를 제공하지 않으면 Elastic Beanstalk에서 app.js 또는 server.js 파일을 이 순서대로 찾아서 스크립트를 실행합니다.

Elastic Beanstalk 콘솔에 적용된 설정이 구성 파일에 적용된 동일한 설정(있는 경우)을 덮어씁니다. 이렇게 함으로써 구성 파일은 기본 설정을 갖는 동시에 콘솔에서 환경 특정 설정으로 설정을 덮어 쓸 수 있습니다. 우선 적용 및 설정을 변경하는 다른 방법에 대한 자세한 내용은 구성 옵션 단원을 참조하십시오.

Elastic Beanstalk Linux 기반 플랫폼을 확장할 수 있는 다양한 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 플랫폼 확장 단원을 참조하세요.

Node.js 환경 구성

Node.js 플랫폼 설정을 사용하여 Amazon EC2 인스턴스의 동작을 미세 조정할 수 있습니다. Elastic Beanstalk 콘솔을 사용하여 Elastic Beanstalk 환경의 Amazon EC2 인스턴스 구성을 편집할 수 있습니다.

Elastic Beanstalk 콘솔을 사용하여 Amazon S3에 대한 로그 교체를 활성화하고, 애플리케이션에서 읽을 수 있도록 환경 변수를 구성합니다.

Elastic Beanstalk 콘솔에서 Node.js 환경을 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경 이름을 선택합니다.

    참고

    여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.

  3. 탐색 창에서 구성을 선택합니다.

  4. 업데이트, 모니터링 및 로깅 구성 범주에서 편집을 선택합니다.

컨테이너 옵션

다음과 같은 플랫폼별 옵션을 지정할 수 있습니다.

  • 프록시 서버 – 환경 인스턴스에서 사용할 프록시 서버입니다. 기본적으로 NGINX가 사용됩니다.

로그 옵션

로그 옵션 섹션에는 다음 두 가지 설정이 있습니다.

  • 인스턴스 프로파일 – 애플리케이션과 연결된 Amazon S3 버킷에 액세스할 권한이 있는 인스턴스 프로파일을 지정합니다.

  • Amazon S3에 대한 로그 파일 교체 활성화(Enable log file rotation to Amazon S3) – 애플리케이션과 연결된 Amazon S3 버킷에 애플리케이션의 Amazon EC2 인스턴스에 대한 로그 파일을 복사하는지 여부를 지정합니다.

정적 파일

성능을 증진하려면 정적 파일(Static files) 섹션에서 프록시 서버를 구성하여 웹 애플리케이션 내부 디렉터리 집합으로 정적 파일(예: HTML 또는 이미지)을 제공할 수 있습니다. 각 디렉터리의 디렉터리 매핑 가상 경로를 설정합니다. 지정된 경로에서 프록시 서버가 파일 요청을 수신받으면 요청을 애플리케이션으로 라우팅하지 않고 파일을 직접 제공합니다.

구성 파일 또는 Elastic Beanstalk 콘솔을 사용하여 정적 파일을 구성하는 방법에 대한 자세한 내용은 정적 파일 제공 단원을 참조하세요.

환경 속성

환경 속성 섹션을 사용하여 애플리케이션을 실행하는 Amazon EC2 인스턴스의 환경 속성 설정을 지정할 수 있습니다. 이 설정은 키 값 페어로 애플리케이션에 전달됩니다.

AWS Elastic Beanstalk에서 실행되는 Node.js 환경 내에서 process.env.ENV_VARIABLE을 실행하여 환경 변수에 액세스할 수 있습니다.

var endpoint = process.env.API_ENDPOINT

Node.js 플랫폼은 PORT 환경 변수를 프록시 서버가 트래픽을 전달할 포트로 설정합니다. 자세한 내용은 프록시 서버 구성 단원을 참조하십시오.

자세한 정보는 환경 속성 및 기타 소프트웨어 설정을 참조하세요.

다음 콘솔 소프트웨어 구성 범주는 Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)을 사용하는 Elastic Beanstalk Node.js 환경에서만 지원됩니다.

참고
  • 이 주제의 정보는 Amazon Linux AMI(AL1) 기반 플랫폼 브랜치에만 적용됩니다. AL2023/AL2 플랫폼 브랜치는 이전 Amazon Linux AMI(AL1) 플랫폼 버전과 호환되지 않으며 다른 구성 설정이 필요합니다.

  • 2022년 7월 18일 Elastic Beanstalk는 Amazon Linux AMI(AL1) 에 기반한 모든 플랫폼 브랜치의 상태를 사용 중지로 설정했습니다. 완전 지원이 가능한 현재 Amazon Linux 2023 플랫폼 브랜치로 마이그레이션하는 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 애플리케이션을 Amazon Linux 2023 또는 Amazon Linux 2로 마이그레이션을(를) 참조하세요.

구성 페이지에서 다음을 지정합니다.

  • 프록시 서버(Proxy server) – Node.js 연결에 프록시하는 데 사용할 웹 서버를 지정합니다. 기본적으로 NGINX가 사용됩니다. 없음(none)을 선택하면 정적 파일 매핑이 적용되지 않으며 GZIP 압축이 비활성화됩니다.

  • Node.js 버전( version) – Node.js의 버전을 지정합니다. 지원되는 Node.js 버전 목록은 AWS Elastic Beanstalk 플랫폼 안내서의 Node.js를 참조하세요.

  • GZIP 압축( compression) – GZIP 압축의 활성화 여부를 지정합니다. GZIP 압축은 기본적으로 활성화되어 있습니다.

  • 노드 명령(Node command) – Node.js 애플리케이션을 시작할 때 사용하는 명령을 입력할 수 있습니다. 빈 문자열(기본값)은 Elastic Beanstalk에서 app.jsserver.js를 사용한 후 npm start를 사용합니다.

Node.js 구성 네임스페이스

구성 파일을 사용하여 구성 옵션을 설정하고 배포 중 다른 인스턴스 구성 작업을 수행할 수 있습니다. 구성 옵션은 플랫폼별로 다르거나 Elastic Beanstalk 서비스의 모든 플랫폼에 전체적으로 적용될 수 있습니다. 구성 옵션은 네임스페이스로 구성됩니다.

aws:elasticbeanstalk:environment:proxy 네임스페이스를 사용하여 환경 인스턴스에서 사용할 프록시를 선택할 수 있습니다. 다음 예제에서는 Apache HTTPD 프록시 서버를 사용하도록 환경을 구성합니다.

예 .ebextensions/nodejs-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

aws:elasticbeanstalk:environment:proxy:staticfiles 네임스페이스를 사용하여 정적 파일을 제공하도록 프록시를 구성할 수 있습니다. 자세한 내용과 예제는 정적 파일 제공 단원을 참조하세요.

Elastic Beanstalk는 사용자가 환경을 맞춤형으로 지정할 수 있는 다양한 구성 옵션을 제공합니다. 구성 파일 외에 콘솔, 저장된 구성, EB CLI 또는 AWS CLI를 통해 구성 옵션을 설정할 수도 있습니다. 자세한 내용은 구성 옵션를 참조하십시오.

Elastic Beanstalk Node.js 환경에서 Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)을 사용하는 경우, 이 섹션의 구체적인 구성 및 권장 사항을 고려하세요.

참고
  • 이 주제의 정보는 Amazon Linux AMI(AL1) 기반 플랫폼 브랜치에만 적용됩니다. AL2023/AL2 플랫폼 브랜치는 이전 Amazon Linux AMI(AL1) 플랫폼 버전과 호환되지 않으며 다른 구성 설정이 필요합니다.

  • 2022년 7월 18일 Elastic Beanstalk는 Amazon Linux AMI(AL1) 에 기반한 모든 플랫폼 브랜치의 상태를 사용 중지로 설정했습니다. 완전 지원이 가능한 현재 Amazon Linux 2023 플랫폼 브랜치로 마이그레이션하는 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 애플리케이션을 Amazon Linux 2023 또는 Amazon Linux 2로 마이그레이션을(를) 참조하세요.

Elastic Beanstalk는 Amazon Linux AMI Node.js 플랫폼 버전에 대한 일부 플랫폼별 구성 옵션을 지원합니다. 애플리케이션보다 먼저 실행되는 프록시 서버, 실행할 Node.js의 특정 버전, 애플리케이션 실행 명령을 선택할 수 있습니다.

프록시 서버의 경우 NGINX 또는 Apache 프록시 서버를 사용할 수 있습니다. none 값을 ProxyServer 옵션으로 설정할 수 있습니다. 이 설정을 사용하면 Elastic Beanstalk는 프록시 서버 뒤가 아닌 독립 실행형으로 애플리케이션을 실행합니다. 사용자 환경에서 독립 실행형 애플리케이션을 실행하는 경우 NGINX가 트래픽을 전달하는 포트를 수신하도록 코드를 업데이트합니다.

var port = process.env.PORT || 8080; app.listen(port, function() { console.log('Server running at http://127.0.0.1:%s', port); });

지원되는 언어 버전의 측면에서 Node.js Amazon Linux AMI 플랫폼은 다른 Elastic Beanstalk 관리형 플랫폼과 다릅니다. 이는 각 Node.js 플랫폼 버전이 일부 Node.js 언어 버전만 지원하기 때문입니다. 지원되는 Node.js 버전 목록은 AWS Elastic Beanstalk 플랫폼 안내서의 Node.js를 참조하세요.

플랫폼별 구성 옵션을 사용하여 언어 버전을 설정할 수 있습니다. 지침은 Node.js 환경 구성 단원을 참조하십시오. 또는 Elastic Beanstalk 콘솔을 사용하여 플랫폼 버전 업데이트의 일부로 환경에서 사용하는 Node.js 버전을 업데이트합니다.

참고

현재 사용 중인 Node.js 버전에 대한 지원이 플랫폼에서 제거되면 플랫폼 업데이트를 수행하기 전에 버전 설정을 변경하거나 제거해야 합니다. 하나 이상의 Node.js 버전에 대해 보안 취약성이 발견된 경우 이러한 상황이 발생할 수 있습니다.

이러한 상황이 발생하면 구성된 NodeVersion을 지원하지 않는 새 플랫폼 버전으로 업데이트할 수 없습니다. 새 환경을 생성할 필요가 없도록 하기 위해 NodeVersion 구성 옵션을 이전 플랫폼 버전과 새 플랫폼 버전에서 모두 지원하는 Node.js 버전으로 변경하거나 옵션 설정을 제거한 후 플랫폼 업데이트를 수행합니다.

Elastic Beanstalk 콘솔에서 환경의 Node.js 버전을 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경 이름을 선택합니다.

    참고

    환경이 많은 경우 검색 창을 사용하여 환경 목록을 필터링합니다.

  3. 환경 개요 페이지의 [플랫폼]에서 [변경]을 선택합니다.

  4. 플랫폼 버전 업데이트(Update platform version) 대화 상자에서 Node.js 버전을 선택합니다.

    Elastic Beanstalk 업데이트 플랫폼 버전 확인
  5. 저장을 선택합니다.

Node.js Amazon Linux AMI 플랫폼은 aws:elasticbeanstalk:container:nodejs:staticfilesaws:elasticbeanstalk:container:nodejs 네임스페이스에서 추가 옵션을 정의합니다.

다음 구성 파일은 Elastic Beanstalk에 애플리케이션을 실행할 때 npm start을(를) 사용하도록 알려줍니다. 또한 프록시 유형을 Apache로 설정하고 압축을 활성화합니다. 마지막으로 두 개의 소스 디렉터리에서 정적 파일을 제공하도록 프록시를 구성합니다. 한 소스는 statichtml 소스 디렉터리의 웹 사이트 루트 아래 html 경로에 있는 HTML 파일입니다. 다른 소스는 staticimages 소스 디렉토리의 웹 사이트 루트 아래 images 경로에 있는 이미지 파일입니다.

예 .ebextensions/node-settings.config
option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start" ProxyServer: apache GzipCompression: true aws:elasticbeanstalk:container:nodejs:staticfiles: /html: statichtml /images: staticimages

Elastic Beanstalk는 사용자가 환경을 맞춤형으로 지정할 수 있는 다양한 구성 옵션을 제공합니다. 구성 파일 외에 콘솔, 저장된 구성, EB CLI 또는 AWS CLI를 통해 구성 옵션을 설정할 수도 있습니다. 자세한 내용은 구성 옵션를 참조하십시오.