기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Node.js 플랫폼 사용
AWS App Runner Node.js 플랫폼은 관리형 런타임을 제공합니다. 각 런타임을 통해 Node.js 버전을 기반으로 하는 웹 애플리케이션으로 컨테이너를 쉽게 빌드하고 실행할 수 있습니다. Node.js 런타임을 사용하는 경우 App Runner는 관리되는 Node.js 런타임 이미지로 시작합니다. 이 이미지는 Amazon Linux Docker 이미지를
App Runner 콘솔 또는 API 작업을 사용하여 서비스를 만들 때 App Runner 서비스의 런타임을 지정합니다. CreateService 런타임을 소스 코드의 일부로 지정할 수도 있습니다. 코드 리포지토리에 포함하는 App Runner 구성 파일에서 runtime 키워드를 사용하십시오. 관리형 런타임의 명명 규칙은 다음과 같습니다. <language-name><major-version>
유효한 Node.js 런타임 이름 및 버전은 을 참조하십시오Node.js 런타임 릴리스 정보.
App Runner는 모든 배포 또는 서비스 업데이트에서 서비스의 런타임을 최신 버전으로 업데이트합니다. 애플리케이션에 특정 버전의 관리형 런타임이 필요한 경우 App Runner 구성 파일의 runtime-version
키워드를 사용하여 지정할 수 있습니다. 메이저 또는 마이너 버전을 포함하여 모든 수준의 버전으로 잠글 수 있습니다. App Runner는 서비스 런타임을 하위 수준으로만 업데이트합니다.
Node.js 런타임의 버전 구문: major
[.minor
[.patch
]]
예: 12.21.0
다음 예제는 버전 잠금을 보여줍니다.
-
12.21
— 메이저 버전과 마이너 버전을 잠급니다. App Runner는 패치 버전만 업데이트합니다. -
12.21.0
— 특정 패치 버전으로 잠급니다. App Runner는 런타임 버전을 업데이트하지 않습니다.
Node.js 런타임 구성
관리형 런타임을 선택할 때는 최소한 명령을 빌드하고 실행하도록 구성해야 합니다. App Runner 서비스를 만들거나 업데이트할 때 구성합니다. 다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
-
App Runner 콘솔 사용 — 생성 프로세스 또는 구성 탭의 빌드 구성 섹션에서 명령을 지정합니다.
-
앱 러너 API 사용 — CreateService또는 UpdateServiceAPI 작업을 호출합니다. CodeConfigurationValues데이터 유형의
BuildCommand
및StartCommand
멤버를 사용하여 명령을 지정합니다. -
구성 파일 사용 - 최대 3번의 빌드 단계에서 하나 이상의 빌드 명령과 애플리케이션을 시작하는 데 사용되는 단일 실행 명령을 지정합니다. 추가 선택적 구성 설정이 있습니다.
구성 파일 제공은 선택 사항입니다. 콘솔 또는 API를 사용하여 App Runner 서비스를 만들 때는 App Runner가 구성 설정을 만들 때 직접 가져오는지 아니면 구성 파일에서 가져오는지 지정합니다.
특히 Node.js 런타임을 사용하면 소스 리포지토리의 루트에 이름이 지정된 package.json
JSON 파일을 사용하여 빌드와 런타임을 구성할 수도 있습니다. 이 파일을 사용하여 Node.js 엔진 버전, 종속성 패키지 및 다양한 명령 (명령줄 응용 프로그램) 을 구성할 수 있습니다. npm 또는 yarn과 같은 패키지 관리자는 이 파일을 명령의 입력으로 해석합니다.
예:
-
npm install
dependencies
및devDependencies
노드로 정의된 패키지를 설치합니다.package.json
-
npm start또는 의
scripts/start
노드에서package.json
정의한 명령을 npm run start 실행합니다.
다음은 예 package.json
파일입니다.
{ "name": "node-js-getting-started", "version": "0.3.0", "description": "A sample Node.js app using Express 4", "engines": { "node": "12.21.0" }, "scripts": { "start": "node index.js", "test": "node test.js" }, "dependencies": { "cool-ascii-faces": "^1.3.4", "ejs": "^2.5.6", "express": "^4.15.2" }, "devDependencies": { "got": "^11.3.0", "tape": "^4.7.0" } }
에 대한 자세한 내용은 npm package.json
Docs 웹 사이트에서 package.json 파일 만들기를
팁
-
package.json
파일에 start 명령이 정의되어 있는 경우 다음 예와 같이 App Runner 구성 파일에서 run 명령으로 사용할 수 있습니다.package.json
{ "scripts": { "start": "node index.js" } }
aprunner.yaml
run: command: npm start
-
개발 npm install 환경에서 실행하면 npm이 파일을 생성합니다.
package-lock.json
이 파일에는 npm이 방금 설치한 패키지 버전의 스냅샷이 들어 있습니다. 이후 npm은 종속 항목을 설치할 때 이와 동일한 버전을 사용합니다. yarn을 설치하면 파일이 생성됩니다.yarn.lock
이러한 파일을 소스 코드 리포지토리에 커밋하여 애플리케이션이 개발 및 테스트에 사용한 종속성 버전과 함께 설치되었는지 확인하세요. -
또한 App Runner 구성 파일을 사용하여 Node.js 버전과 시작 명령을 구성할 수 있습니다. 이렇게 하면 이러한 정의가 에 있는 정의보다 우선합니다.
package.json
의node
package.json
버전과 App Runner 구성 파일의runtime-version
값이 충돌하면 App Runner 빌드 단계가 실패합니다.
특정 런타임 버전에 대한 콜아웃
Node.js 18 (개정된 앱 러너 빌드)
이제 App Runner는 Python 3.11 및 Node.js 18의 런타임 버전을 기반으로 애플리케이션의 업데이트된 빌드 프로세스를 실행합니다. 애플리케이션이 이러한 런타임 버전 중 하나에서 실행되는 경우 수정된 빌드 관리형 런타임 버전 및 앱 러너 빌드 프로세스에 대한 자세한 내용은 을 참조하십시오. 다른 모든 런타임 버전을 사용하는 애플리케이션은 영향을 받지 않으며 원래 빌드 프로세스를 계속 사용합니다.
Node.js 런타임 예제
다음 예제는 Node.js 서비스를 빌드하고 실행하기 위한 App Runner 구성 파일을 보여줍니다.
참고
이 예제에서 사용되는 런타임 버전은
사용하려는 버전으로 바꿀 수 있습니다. 지원되는 최신 Node.js 런타임 버전은 을 참조하십시오Node.js 런타임 릴리스 정보.12.21.0과 18.19.0입니다
.
이 예제는 Node.js 관리 런타임과 함께 사용할 수 있는 최소 구성 파일을 보여줍니다. App Runner가 최소 구성 파일을 사용하여 가정하는 내용은 을 참조하십시오. 구성 파일 예제
예 apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: build: - npm install --production run: command: node app.js
이 예제에서는 Node.js 관리 런타임에서 모든 구성 키를 사용하는 방법을 보여줍니다.
참고
이 예제에 사용된 런타임 버전은 12.21.0입니다
. 사용하려는 버전으로 교체할 수 있습니다. 지원되는 최신 Node.js 런타임 버전은 을 참조하십시오Node.js 런타임 릴리스 정보.
예 apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: pre-build: - npm install --only=dev - node test.js build: - npm install --production post-build: - node node_modules/ejs/postinstall.js env: - name: MY_VAR_EXAMPLE value: "example" run: runtime-version:
12.21.0
command: node app.js network: port: 8000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"
이 예제에서는 Node.js 관리 런타임과 함께 모든 구성 키를 에서 사용하는 방법을 보여줍니다apprunner.yaml
. 이 Node.js 버전에서는 수정된 App Runner 빌드를 사용하므로 이 예제에는 pre-run
섹션이 포함되어 있습니다.
이 pre-run
파라미터는 수정된 App Runner 빌드에서만 지원됩니다. 애플리케이션이 원본 App Runner 빌드에서 지원하는 런타임 버전을 사용하는 경우 구성 파일에 이 매개변수를 삽입하지 마세요. 자세한 정보는 관리형 런타임 버전 및 앱 러너 빌드을 참조하세요.
참고
이 예제에 사용된 런타임 버전은 18.19.0입니다
. 사용하려는 버전으로 바꿀 수 있습니다. 지원되는 최신 Node.js 런타임 버전은 을 참조하십시오Node.js 런타임 릴리스 정보.
예 apprunner.yaml
version: 1.0 runtime: nodejs18 build: commands: pre-build: - npm install --only=dev - node test.js build: - npm install --production post-build: - node node_modules/ejs/postinstall.js env: - name: MY_VAR_EXAMPLE value: "example" run: runtime-version:
18.19.0
pre-run: - node copy-global-files.js command: node app.js network: port: 8000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"
이 예제에서는 Grunt로 개발한 Node.js 애플리케이션을 구성하는 방법을 보여줍니다. Grunt는Gruntfile.js
파일을 포함시켜 Grunt를 구성합니다.
예 package.json
{ "scripts": { "build": "grunt uglify", "start": "node app.js" }, "devDependencies": { "grunt": "~0.4.5", "grunt-contrib-jshint": "~0.10.0", "grunt-contrib-nodeunit": "~0.4.1", "grunt-contrib-uglify": "~0.5.0" }, "dependencies": { "express": "^4.15.2" }, }
예 Gruntfile.js
module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), uglify: { options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, build: { src: 'src/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' } } }); // Load the plugin that provides the "uglify" task. grunt.loadNpmTasks('grunt-contrib-uglify'); // Default task(s). grunt.registerTask('default', ['uglify']); };
예 aprunner.yaml
참고
이 예제에서 사용되는 런타임 버전은 12.21.0입니다.
사용하려는 버전으로 교체할 수 있습니다. 지원되는 최신 Node.js 런타임 버전은 을 참조하십시오Node.js 런타임 릴리스 정보.
version: 1.0 runtime: nodejs12 build: commands: pre-build: - npm install grunt grunt-cli - npm install --only=dev - npm run build build: - npm install --production run: runtime-version:
12.21.0
command: node app.js network: port: 8000 env: APP_PORT