Configurar las dependencias de su aplicación - AWS Elastic Beanstalk

Configurar las dependencias de su aplicación

Su aplicación puede tener dependencias en algunos módulos Node.js, como los que especifica en las declaraciones require(). Puede especificar estas dependencias mediante un archivo package.json. Como alternativa, puede incluir las dependencias de la aplicación en el paquete de código fuente e implementarlas con la aplicación. Estos dos métodos alternativos se detallan en las siguientes secciones.

Especificar las dependencias de Node.js con un archivo package.json

Incluya un archivo package.json en la raíz del proyecto de origen para especificar paquetes de dependencias y proporcionar un comando de inicio. Cuando hay un archivo package.json, Elastic Beanstalk ejecuta npm install para instalar dependencias. También se utiliza el comando start para iniciar la aplicación. Para obtener más información sobre el archivo package.json, consulte la guía package.json en el sitio web de Node.js.

Utilice la palabra clave scripts para proporcionar un comando de inicio. La palabra clave scripts se utiliza ahora en lugar de la opción heredada NodeCommand en el espacio de nombres aws:elasticbeanstalk:container:nodejs.

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

Utilice la palabra clave engines del archivo package.json para especificar la versión de Node.js que desea que utilice la aplicación. También puede especificar un rango de versiones mediante la notación npm. Para obtener más información sobre la sintaxis de los rangos de versiones, consulte Control de versiones semánticas mediante npm en el sitio web de Node.js. La palabra clave engines del archivo package.json Node.js reemplaza la opción heredada NodeVersion del espacio de nombresaws:elasticbeanstalk:container:nodejs.

ejemplo package.json: versión única de Node.js

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

ejemplo package.json: rango de versiones de Node.js

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

Cuando se indica un rango de versiones, Elastic Beanstalk instala la última versión de Node.js que la plataforma tiene disponible dentro del rango. En este ejemplo, el rango indica que la versión debe ser mayor o igual que la versión 10, pero inferior que la versión 11. Como resultado, Elastic Beanstalk instala la última versión 10.x.de Node.js, que está disponible en la plataforma compatible.

Tenga en cuenta que solo puede especificar una versión de Node.js que corresponda con su ramificación de la plataforma. Por ejemplo, si utiliza la ramificación de la plataforma para Node.js 14, solo puede especificar una versión de Node.js 14.x.y. Puede utilizar las opciones del rango de versiones admitidas por npm para aumentar la flexibilidad. A fin de obtener versiones válidas de Node.js para cada una de las ramificaciones de la plataforma, consulte Node.js en la guía Plataformas de AWS Elastic Beanstalk.

De forma predeterminada, Elastic Beanstalk instala dependencias en modo de producción (npm install --production). Si desea instalar instancias dependencias de desarrollo en sus instancias de entorno, establezca la propiedad de entorno NPM_USE_PRODUCTION en false.

nota

Cuando la compatibilidad de la versión de Node.js que utiliza se elimine de la plataforma, deberá cambiar o eliminar la configuración de la versión de Node.js antes de realizar una actualización de la plataforma. Esto puede suceder cuando se identifica una vulnerabilidad de seguridad en una o varias versiones de Node.js

Cuando esto sucede, si se intenta actualizar a una nueva versión de la plataforma no compatible con la versión de Node.js configurada, se producirá un error. Para evitar la necesidad de crear un nuevo entorno, cambie la configuración de la versión Node.jspackage.json a una versión Node.js compatible con las versiones anterior y nueva de la plataforma. Tiene la opción de especificar un rango de versiones de Node.js que incluya una versión compatible, como se describió anteriormente en este tema. También tiene la opción de eliminar la configuración e implementar el nuevo paquete de origen.

Incluyendo dependencias Node.js en un directorio node_modules

Para implementar paquetes de dependencias en instancias del entorno junto con el código de la aplicación, inclúyalos en un directorio que se denomina node_modules en la raíz del proyecto fuente. Node.js busca dependencias en este directorio. Para obtener más información, consulte Cargar desde carpetas node_modules en la documentación de Node.js.

nota

Cuando implementa un directorio node_modules en una versión de la plataforma de Node.js de Amazon Linux 2, Elastic Beanstalk asume que proporciona sus propios paquetes de dependencias y evita instalar dependencias especificadas en un archivo package.json.