

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

# Elastic Beanstalk에서 애플리케이션 종속성 구성
<a name="nodejs-platform-dependencies"></a>

애플리케이션에는 `require()` 문에서 지정하는 모듈과 같이 일부 Node.js 모듈에 종속성이 있을 수 있습니다. 이러한 모듈은 `node_modules` 디렉터리에 저장됩니다. 애플리케이션이 실행될 경우 Node.js가 이 디렉터리에서 모듈을 로드합니다. 자세한 내용은 Node.js 문서의 [Loading from node\_modules folders](https://nodejs.org/api/modules.html#modules_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](https://docs.npmjs.com/about-the-public-npm-registry) 웹 사이트를 참조하세요.

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 종속성 포함](#nodejs-platform-nodemodules) 섹션을 참조하세요.

## package.json 파일로 Node.js 종속성 지정
<a name="nodejs-platform-packagejson"></a>

프로젝트 소스의 루트에 있는 `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](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file)을 참조하세요.

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

**Example 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* 속성은 로컬 개발 및 테스트에만 필요한 패키지를 지정합니다.

*DevDependencies* 패키지를 설치해야 하는 경우 NPM\_USE\_PRODUCTION 환경 속성을 `false`로 설정하십시오. 이 설정을 사용하면 npm install을 실행할 때 위의 옵션을 사용하지 않습니다. 그러면 *DevDependencies* 패키지가 설치됩니다.

## node\_modules 디렉터리에 Node.js 종속성 포함
<a name="nodejs-platform-nodemodules"></a>

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

`node_modules` 디렉터리를 AL2023/AL2 Node.js 플랫폼 버전으로 배포하는 경우 Elastic Beanstalk에서는 사용자가 자체 종속성 패키지를 제공하고 있다고 가정하며 [package.json](#nodejs-platform-packagejson) 파일에 지정된 종속성을 설치하지 않습니다. Node.js는 `node_modules` 디렉터리에서 종속성을 찾습니다. 자세한 내용은 Node.js 문서의 [Loading from node\_modules Folders](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders)를 참조하세요.

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

### Amazon Linux 2의 Node.js 고려 사항
<a name="nodejs-al2-considerations"></a>

*Amazon Linux 2*에서 실행되는 *Node.js* 플랫폼 브랜치를 사용하는 경우이 섹션을 읽어보세요.

#### Amazon Linux 2의 Node.js 고려 사항
<a name="nodejs-al2-considerations-detail"></a>

**참고**  
이 주제의 정보는 Amazon Linux 2에서 실행되는 Node.js 플랫폼 브랜치에 적용됩니다. 여기의 내용은 AL2-specific 기능 및 동작을 설명합니다. AL2023

**명령 변형**  
명령 옵션은 애플리케이션이 실행되는 Amazon Linux 2 플랫폼 브랜치에 포함된 npm 버전에 따라 달라집니다.
+ npm v6 - Elastic Beanstalk는 기본적으로 종속 항목을 프로덕션 모드에서 설치합니다. `npm install --production`명령을 사용합니다.
+ npm v7 이상 — Elastic Beanstalk는 *개발 종속성을* 생략합니다. `npm install --omit=dev`명령을 사용합니다.

위에 나열된 두 명령 모두 *DevDependencies* 패키지를 설치하지 않습니다.

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

**Example 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"
    }
```

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

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

**Example `package.json` – 단일 Node.js 버전**  

```
{
    ...
    "engines": { "node" : "14.16.0" }
  }
```

**Example `package.json` – Node.js 버전 범위**  

```
{
    ...
    "engines": { "node" : ">=10 <11" }
  }
```

버전 범위가 표시되면 Elastic Beanstalk는 해당 범위 내에서 플랫폼을 사용할 수 있는 최신 Node.js 버전을 설치합니다. 이 예에서 범위는 버전이 버전 10보다 크거나 같고 버전 11보다 작아야 함을 나타냅니다. 따라서 Elastic Beanstalk는 [지원되는 플랫폼](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs)에서 사용할 수 있는 최신 Node.js 버전 10.x.y를 설치합니다.

플랫폼 브랜치에 해당하는 Node.js 버전만 지정할 수 있습니다. 예를 들어 Node.js 16 플랫폼 브랜치를 사용하는 경우 16.x.y Node.js 버전만 지정할 수 있습니다. npm에서 지원하는 버전 범위 옵션을 사용하여 유연성을 높일 수 있습니다. 각 플랫폼 브랜치에 유효한 Node.js 버전은 *AWS Elastic Beanstalk 플랫폼* 안내서의 [https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs)를 참조하세요.

**참고**  
현재 사용 중인 Node.js 버전에 대한 지원이 플랫폼에서 제거되면 [플랫폼 업데이트](using-features.platform.upgrade.md)를 수행하기 전에 Node.js 버전 설정을 변경하거나 제거해야 합니다. 하나 이상의 Node.js 버전에 대해 보안 취약성이 발견된 경우 이러한 상황이 발생할 수 있습니다.  
이러한 상황이 발생하면 구성된 Node.js 버전을 지원하지 않는 새 플랫폼 버전으로 업데이트할 수 없습니다. 새 환경을 만들 필요가 없도록 하려면 `package.json`의 Node.js 버전 설정을 이전 플랫폼 버전과 새 버전 모두에서 지원하는 Node.js 버전으로 변경합니다. 이 항목의 앞부분에서 설명한 대로 지원되는 버전을 포함하는 Node.js 버전 범위를 지정할 수 있습니다. 설정을 제거한 후 새 소스 번들을 배포할 수도 있습니다.