Elastic Beanstalk에서 애플리케이션의 종속성 설정하기 - AWS Elastic Beanstalk

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

Elastic Beanstalk에서 애플리케이션의 종속성 설정하기

애플리케이션에는 require() 문에서 지정하는 모듈과 같이 일부 Node.js 모듈에 종속성이 있을 수 있습니다. 이러한 모듈은 node_modules 디렉터리에 저장됩니다. 애플리케이션이 실행될 경우 Node.js가 이 디렉터리에서 모듈을 로드합니다. 자세한 내용은 Node.js 문서의 Loading from node_modules folders를 참조하세요.

package.json 파일을 사용하여 이러한 모듈 종속성을 지정할 수 있습니다. Elastic Beanstalk가 이 파일을 감지하고 node_modules 디렉터리가 존재하지 않을 경우에 Elastic Beanstalk은 npm install웹 앱유저로 실행합니다. 이 npm install 명령은 Elastic Beanstalk가 미리 만드는 node_modules 디렉터리에 종속성을 설치합니다. 이 npm install 명령은 퍼블릭 npm 레지스트리 또는 기타 위지 package.json 파일에 나열되어 있는 패키지에 액세스합니다. 자세한 내용은 npm Docs 웹 사이트를 참조하세요.

Elastic Beanstalk가 node_modules 디렉터리를 감지할 경우, Elastic Beanstalk는 package.json 파일이 존재하더라도 npm install을 실행하지 않습니다. Elastic Beanstalk는 Node.js가 액세스하고 로드할 수 있도록 node_modules 디렉터리에서 종속성 패키지를 사용할 수 있다고 가정합니다.

다음 섹션에서는 해당 애플리케이션에 대한 Node.js 모듈 종속성을 설정하는 방법에 대한 추가 정보를 제공합니다.

참고

.Elastic Beanstalk가 npm install을 실행 중일 때 배포 문제가 발생할 경우 다른 접근 방식을 고려하세요. 애플리케이션 소스 번들에 종속성 모듈과 함께 node_modules 디렉터리를 포함하세요. 이 작업을 수행할 경우 문제를 조사하는 동안 퍼블릭 npm 레지스트리에서 종속성을 설치하는 문제를 방지할 수 있습니다. 종속성 모듈은 로컬 디렉터리에서 제공되기 때문에 이 작업을 수행하면 배포 시간 단축에도 도움이 될 수도 있습니다. 자세한 내용은 node_modules 디렉터리에 Node.js 종속성 포함 단원을 참조하세요.

package.json 파일로 Node.js 종속성 지정

프로젝트 소스의 루트에 있는 package.json 파일을 포함하여 종속성 패키지를 지정하고 start 명령을 제공합니다. package.json 파일이 존재하고 프로젝트 소스의 루트에 node_modules 디렉터리가 없는 경우에는 Elastic Beanstalk가 npm install웹 앱 사용자로 실행하여 퍼블릭 npm 레지스트리의 종속성을 설치합니다. 또한 Elastic Beanstalk는 start 명령을 사용하여 애플리케이션을 시작합니다. package.json 파일에 대한 자세한 내용은 npm Docs 웹 사이트의 Specifying dependencies in a package.json file을 참조하세요.

scripts 키워드를 사용하여 start 명령을 제공합니다. 현재 aws:elasticbeanstalk:container:nodejs 네임스페이스의 레거시 NodeCommand 옵션 대신 scripts 키워드가 사용됩니다.

예 package.json – Express
{ "name": "my-app", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest" }, "scripts": { "start": "node app.js" } }
프로덕션 모드 및 개발 종속성

package.json파일에서 종속성을 지정하려면 종속성과 속성을 사용하십시오. devDependencies dependencies 속성은 프로덕션 환경에서 애플리케이션에 필요한 패키지를 지정합니다. devDependencies속성은 로컬 개발 및 테스트에만 필요한 패키지를 지정합니다.

Elastic Beanstalk는 다음 명령을 사용하여 웹 앱npm install 사용자로 실행됩니다. 명령 옵션은 애플리케이션이 실행되는 플랫폼 브랜치에 포함된 npm 버전에 따라 달라집니다.

  • npm v6 - Elastic Beanstalk는 기본적으로 종속 항목을 프로덕션 모드에서 설치합니다. npm install --production명령을 사용합니다.

  • npm v7 이상 — Elastic Beanstalk에서는 생략됩니다. devDependencies npm install --omit=dev명령을 사용합니다.

위에 나열된 두 명령 모두 기존 패키지를 설치하지는 않습니다. devDependencies

devDependencies패키지를 설치해야 하는 경우 NPM _ USE _ PRODUCTION environment 속성을 로 설정하십시오false. 이 설정을 사용하면 npm install을 실행할 때 위의 옵션을 사용하지 않습니다. 그러면 devDependencies패키지가 설치됩니다.

SSH그리고 HTTPS

2023년 3월 7일 Amazon Linux 2 플랫폼 릴리스부터 SSH 및 HTTPS 프로토콜을 사용하여 Git 리포지토리에서 패키지를 검색할 수도 있습니다. 플랫폼 브랜치 Node.js 16은 SSH 및 HTTPS 프로토콜을 모두 지원합니다. Node.js14는 HTTPS 프로토콜만 지원합니다.

예 package.json — Node.js 16은 다음 두 가지를 모두 지원합니다. HTTPS SSH
... "dependencies": { "aws-sdk": "https://github.com/aws/aws-sdk-js.git", "aws-chime": "git+ssh://git@github.com:aws/amazon-chime-sdk-js.git" }

버전 및 버전 범위

중요

버전 범위를 지정하는 기능은 023에서 실행되는 Node.js 플랫폼 브랜치에는 사용할 수 없습니다. AL2 AL2023의 특정 Node.js 브랜치 내에서 Node.js 버전 하나만 지원합니다. package.json 파일이 버전 범위를 지정하는 경우 이는 무시되고 기본적으로 Node.js의 플랫폼 브랜치 버전이 사용됩니다.

package.json 파일에서 engines 키워드를 사용하여 애플리케이션에서 사용할 Node.js 버전을 지정합니다. npm 표기법을 사용하여 버전 범위를 지정할 수도 있습니다. 버전 범위 구문에 대한 자세한 내용은 Node.js 웹 사이트에서 Semantic Versioning using npm를 참조하세요. Node.js package.json 파일의 engines 키워드는 aws:elasticbeanstalk:container:nodejs 네임스페이스의 레거시 NodeVersion 옵션을 대체합니다.

package.json – 단일 Node.js 버전
{ ... "engines": { "node" : "14.16.0" } }
package.json – Node.js 버전 범위
{ ... "engines": { "node" : ">=10 <11" } }

버전 범위가 표시되면 Elastic Beanstalk는 해당 범위 내에서 플랫폼을 사용할 수 있는 최신 Node.js 버전을 설치합니다. 이 예에서 범위는 버전이 버전 10보다 크거나 같고 버전 11보다 작아야 함을 나타냅니다. 따라서 Elastic Beanstalk는 지원되는 플랫폼에서 사용할 수 있는 최신 Node.js 버전 10.x.y를 설치합니다.

플랫폼 브랜치에 해당하는 Node.js 버전만 지정할 수 있습니다. 예를 들어 Node.js 16 플랫폼 브랜치를 사용하는 경우 16.x.y Node.js 버전만 지정할 수 있습니다. npm에서 지원하는 버전 범위 옵션을 사용하여 유연성을 높일 수 있습니다. 각 플랫폼 브랜치에 유효한 Node.js 버전은 AWS Elastic Beanstalk 플랫폼 안내서의 Node.js를 참조하세요.

참고

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

이러한 상황이 발생하면 구성된 Node.js 버전을 지원하지 않는 새 플랫폼 버전으로 업데이트할 수 없습니다. 새 환경을 만들 필요가 없도록 하려면 package.json의 Node.js 버전 설정을 이전 플랫폼 버전과 새 버전 모두에서 지원하는 Node.js 버전으로 변경합니다. 이 항목의 앞부분에서 설명한 대로 지원되는 버전을 포함하는 Node.js 버전 범위를 지정할 수 있습니다. 설정을 제거한 후 새 소스 번들을 배포할 수도 있습니다.

node_modules 디렉터리에 Node.js 종속성 포함

애플리케이션 코드와 함께 환경 인스턴스에 종속성 패키지를 배포하려면 프로젝트 소스의 루트에 있는 node_modules이라는 디렉터리에 종속성 패키지를 포함시킵니다. 자세한 내용은 npm Docs 웹 사이트의 Downloading and installing packages locally를 참조하세요.

node_modules디렉터리를 AL2 023/ AL2 Node.js 플랫폼 버전에 배포할 때 Elastic Beanstalk는 사용자가 자체 종속성 패키지를 제공한다고 가정하고 package.json 파일에 지정된 종속성을 설치하지 않습니다. Node.js디렉터리에서 node_modules 종속성을 찾습니다. 자세한 내용은 Node.js 문서의 Loading from node_modules Folders를 참조하세요.

참고

Elastic Beanstalk에서 npm install을 실행 중일 때 배포 문제가 발생하면 해당 문제를 조사하는 동안 이 주제에서 해결 방법으로 설명된 접근 방식을 사용하는 것이 좋습니다.