Uso de la plataforma Node.js de - AWS App Runner

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de la plataforma Node.js de

La plataforma AWS App Runner Node.js proporciona tiempos de ejecución gestionados. Cada tiempo de ejecución facilita la creación y ejecución de contenedores con aplicaciones web basadas en una versión de Node.js. Cuando usas un entorno de ejecución de Node.js, App Runner comienza con una imagen de tiempo de ejecución de Node.js administrada. Esta imagen se basa en la imagen de Docker de Amazon Linux y contiene el paquete de tiempo de ejecución de una versión de Node.js y algunas herramientas. App Runner usa esta imagen de tiempo de ejecución administrada como imagen base y agrega el código de la aplicación para crear una imagen de Docker. A continuación, implementa esta imagen para ejecutar el servicio web en un contenedor.

Usted especifica un tiempo de ejecución para su servicio de App Runner al crear un servicio mediante la consola de App Runner o la operación de la CreateServiceAPI. También puedes especificar un tiempo de ejecución como parte de tu código fuente. Usa la runtime palabra clave en un archivo de configuración de App Runner que incluyas en tu repositorio de código. La convención de nomenclatura de un tiempo de ejecución gestionado es. <language-name><major-version>

Para obtener nombres y versiones de tiempo de ejecución de Node.js válidos, consulteInformación de versión en tiempo de ejecución de Node.js.

App Runner actualiza el tiempo de ejecución del servicio a la versión más reciente en cada implementación o actualización del servicio. Si su aplicación requiere una versión específica de un tiempo de ejecución administrado, puede especificarla mediante la runtime-version palabra clave del archivo de configuración de App Runner. Puedes bloquearla en cualquier nivel de versión, incluida una versión principal o secundaria. App Runner solo realiza actualizaciones de nivel inferior en el tiempo de ejecución de tu servicio.

Sintaxis de versión para los tiempos de ejecución de Node.js: major[.minor[.patch]]

Por ejemplo: 12.21.0

Los siguientes ejemplos muestran el bloqueo de versiones:

  • 12.21— Bloquee las versiones principales y secundarias. App Runner actualiza solo las versiones con parches.

  • 12.21.0— Bloquear una versión de parche específica. App Runner no actualiza tu versión en tiempo de ejecución.

Configuración de tiempo de ejecución de Node.js

Al elegir un tiempo de ejecución administrado, también debe configurar, como mínimo, los comandos de compilación y ejecución. Los configuras al crear o actualizar tu servicio App Runner. Puede hacerlo mediante uno de los siguientes métodos:

  • Mediante la consola de App Runner: especifique los comandos en la sección Configurar compilación del proceso de creación o en la pestaña de configuración.

  • Uso de la API de App Runner: llame a la operación CreateServiceo UpdateServiceAPI. Especifique los comandos mediante los StartCommand miembros BuildCommand y del tipo de CodeConfigurationValuesdatos.

  • Uso de un archivo de configuración: especifique uno o más comandos de compilación en un máximo de tres fases de compilación y un solo comando de ejecución que sirva para iniciar la aplicación. Hay opciones de configuración opcionales adicionales.

Proporcionar un archivo de configuración es opcional. Al crear un servicio de App Runner mediante la consola o la API, debe especificar si App Runner obtiene los ajustes de configuración directamente al crearlos o de un archivo de configuración.

En el caso específico de los tiempos de ejecución de Node.js, también puedes configurar la compilación y el tiempo de ejecución mediante un archivo JSON cuyo nombre aparece package.json en la raíz del repositorio de origen. Con este archivo, puedes configurar la versión del motor Node.js, los paquetes de dependencias y varios comandos (aplicaciones de línea de comandos). Los administradores de paquetes como npm o yarn interpretan este archivo como entrada para sus comandos.

Por ejemplo:

  • npm installinstala los paquetes definidos por el devDependencies nodo dependencies and en. package.json

  • npm starto npm run start ejecuta el comando definido por el scripts/start nodo enpackage.json.

A continuación se muestra un ejemplo de un archivo 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" } }

Para obtener más informaciónpackage.json, consulte Crear un archivo package.json en el sitio web de npm Docs.

Consejos
  • Si tu package.json archivo define un start comando, puedes usarlo como un run comando en el archivo de configuración de App Runner, como se muestra en el siguiente ejemplo.

    package.json

    { "scripts": { "start": "node index.js" } }

    aprunner.yaml

    run: command: npm start
  • Cuando ejecutas npm install en tu entorno de desarrollo, npm crea el archivo. package-lock.json Este archivo contiene una instantánea de las versiones del paquete que npm acaba de instalar. A partir de entonces, cuando npm instala dependencias, usa exactamente estas versiones. Si instalas yarn, se crea un archivo. yarn.lock Guarde estos archivos en su repositorio de código fuente para asegurarse de que su aplicación esté instalada con las versiones de las dependencias que desarrolló y con las que la probó.

  • También puedes usar un archivo de configuración de App Runner para configurar la versión y el comando start de Node.js. Al hacerlo, estas definiciones anulan las que figuran enpackage.json. Un conflicto entre la node versión original package.json y el runtime-version valor del archivo de configuración de App Runner provoca un error en la fase de compilación de App Runner.

Llamadas para versiones de ejecución específicas

Node.js 18 (versión revisada de App Runner)

App Runner ahora ejecuta un proceso de compilación actualizado para aplicaciones basado en las siguientes versiones de tiempo de ejecución: Python 3.11 y Node.js 18. Si tu aplicación se ejecuta en alguna de estas versiones en tiempo de ejecución, consulta Versiones de tiempo de ejecución gestionadas y compilación de App Runner para obtener más información sobre el proceso de compilación revisado. Las aplicaciones que utilizan todas las demás versiones en tiempo de ejecución no se ven afectadas y siguen utilizando el proceso de compilación original.

Ejemplos de tiempo de ejecución de Node.js

Los siguientes ejemplos muestran los archivos de configuración de App Runner para crear y ejecutar un servicio Node.js.

nota

La versión de tiempo de ejecución que se usa en estos ejemplos es 12.21.0 y 18.19.0. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de tiempo de ejecución de Node.js compatible, consulteInformación de versión en tiempo de ejecución de Node.js.

En este ejemplo, se muestra un archivo de configuración mínimo que puede utilizar con un entorno de ejecución gestionado por Node.js. Para ver las suposiciones que App Runner hace con un archivo de configuración mínimo, consulteEjemplos de archivos de configuración.

ejemplo apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: build: - npm install --production run: command: node app.js

En este ejemplo, se muestra el uso de todas las claves de configuración con un entorno de ejecución gestionado por Node.js.

nota

La versión de tiempo de ejecución que se utiliza en estos ejemplos es la 12.21.0. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de tiempo de ejecución de Node.js compatible, consulteInformación de versión en tiempo de ejecución de Node.js.

ejemplo 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"

En este ejemplo se muestra el uso de todas las claves de configuración con un tiempo de ejecución gestionado por Node.js enapprunner.yaml. En este ejemplo se incluye una pre-run sección, ya que esta versión de Node.js usa la versión revisada de App Runner.

El pre-run parámetro solo es compatible con la versión revisada de App Runner. No insertes este parámetro en el archivo de configuración si la aplicación usa versiones en tiempo de ejecución compatibles con la compilación original de App Runner. Para obtener más información, consulte Versiones de tiempo de ejecución gestionadas y compilación de App Runner.

nota

La versión en tiempo de ejecución que se usa en estos ejemplos es la 18.19.0. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de tiempo de ejecución de Node.js compatible, consulteInformación de versión en tiempo de ejecución de Node.js.

ejemplo 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"

En este ejemplo se muestra cómo configurar una aplicación Node.js desarrollada con Grunt. Grunt es un ejecutor de JavaScript tareas de línea de comandos. Ejecuta tareas repetitivas y gestiona la automatización de los procesos para reducir los errores humanos. Los complementos de Grunt y Grunt se instalan y administran mediante npm. Para configurar Grunt, debe incluir el Gruntfile.js archivo en la raíz de su repositorio de código fuente.

ejemplo 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" }, }
ejemplo 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']); };
ejemplo apprunner.yaml
nota

La versión en tiempo de ejecución que se utiliza en estos ejemplos es la 12.21.0. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de tiempo de ejecución de Node.js compatible, consulteInformación de versión en tiempo de ejecución de 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