Configuración de las dependencias de la aplicación en Elastic Beanstalk - AWS Elastic Beanstalk

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.

Configuración de las dependencias de la aplicación en Elastic Beanstalk

Es posible que su aplicación dependa de algunos Node.js módulos, como los que se especifican en las require() sentencias. Los módulos se almacenan en un directorio node_modules. Cuando se ejecute la aplicación, Node.js carga los módulos desde este directorio. Para obtener más información, consulte Cargar desde las carpetas node_modules del Node.js .

Puede especificar las dependencias de módulos mediante un archivo package.json. Si Elastic Beanstalk detecta este archivo y no hay un directorio node_modules, ejecuta npm install como el usuario webapp. El comando npm install instala las dependencias en el directorio node_modules, que Elastic Beanstalk crea previamente. El comando npm install accede a los paquetes que figuran en el archivo package.json desde el registro npm público o de otras ubicaciones. Para obtener más información, consulte el sitio web npm Docs.

Si Elastic Beanstalk detecta el directorio node_modules, no ejecuta npm install, incluso si existe un archivo package.json. Elastic Beanstalk asume que los paquetes de dependencias están disponibles en el directorio de node_modules Node.js para acceder y cargar.

En las siguientes secciones se proporciona más información sobre cómo establecer su Node.js dependencias de módulos para su aplicación.

nota

Si sufre algún problema de implementación cuando Elastic Beanstalk está ejecutando npm install, considere un enfoque alternativo. Incluya el directorio node_modules con los módulos de dependencias en el paquete de código fuente de la aplicación. De esta manera se pueden evitar problemas relacionados con la instalación de dependencias del registro npm público mientras se investiga el problema. Como los módulos de dependencia provienen de un directorio local, hacer esto también podría ayudar a reducir el tiempo de implementación. Para obtener más información, consulte Incluyendo Node.js dependencias en un directorio node_modules

Especificando Node.js dependencias 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 y no hay un directorio node_modules en la raíz de la fuente del proyecto, Elastic Beanstalk ejecuta npm install como el usuario webapp para instalar las dependencias del registro npm público. Elastic Beanstalk también utiliza el comando start para iniciar la aplicación. Para obtener más información sobre el archivo package.json, consulte Especificación de dependencias en un archivo package.json en el sitio web npm Docs.

Utilice la palabra clave scripts para proporcionar un comando de inicio. En la actualidad, la palabra clave scripts se utiliza 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" } }
Modo de producción y dependencias de desarrollo

Para especificar tus dependencias en el package.json archivo, usa las dependencias y los atributos. devDependencies El atributo dependencias designa los paquetes que necesita la aplicación en producción. El devDependenciesatributo designa los paquetes que solo son necesarios para el desarrollo y las pruebas locales.

Elastic Beanstalk ejecuta npm install como usuario webapp con los siguientes comandos. Las opciones de comando varían según la versión de npm incluida en la ramificación de la plataforma en la que se ejecute la aplicación.

  • npm v6: de forma predeterminada, Elastic Beanstalk instala dependencias en modo de producción. Usa el comando npm install --production.

  • npm v7 o superior: Elastic Beanstalk omite el. devDependencies Usa el comando npm install --omit=dev.

Los dos comandos enumerados anteriormente no instalan los paquetes que sí lo están. devDependencies

Si necesita instalar los devDependenciespaquetes, establezca la propiedad de PRODUCTION entorno NPM USE _ _ enfalse. Con esta configuración, no utilizaremos las opciones anteriores cuando ejecutemos la instalación de npm. Esto provocará la instalación de devDependencieslos paquetes.

SSHy HTTPS

A partir de la versión de la plataforma Amazon Linux 2 del 7 de marzo de 2023, también puede utilizar los HTTPS protocolos SSH y para recuperar paquetes de un repositorio de Git. Ramificación de la plataforma Node.js 16 es compatible con los HTTPS protocolos SSH y. Node.js 14 solo admite el HTTPS protocolo.

ejemplo package.json — Node.js 16 es compatible con y 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" }

Versiones y rangos de las versiones

importante

La función para especificar los rangos de versiones no está disponible para las sucursales de la plataforma Node.js que se ejecutan en la versión AL2 023. Solo admitimos una versión de Node.js en una rama Node.js específica en AL2 023. Si el archivo package.json especifica un rango de versiones, lo ignoraremos y utilizaremos de forma predeterminada la versión de la ramificación de la plataforma de Node.js.

Utilice la engines palabra clave del package.json archivo para especificar la Node.js versión 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ántico con npm en el Node.js sitio web. La engines palabra clave del Node.js package.jsonel archivo reemplaza a la NodeVersion opción antigua del espacio de aws:elasticbeanstalk:container:nodejs nombres.

ejemplo package.json— Único Node.js versión
{ ... "engines": { "node" : "14.16.0" } }
ejemplo package.json – Node.js gama de versiones
{ ... "engines": { "node" : ">=10 <11" } }

Cuando se indica un rango de versiones, Elastic Beanstalk instala la última Node.js versión que la plataforma tiene disponible dentro de la gama. 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 versión más reciente Node.js versión 10.x.y, que está disponible en la plataforma compatible.

Tenga en cuenta que solo puede especificar un Node.js versión que corresponda a la rama de su plataforma. Por ejemplo, si está utilizando la Node.js La rama de 16 plataformas, solo puede especificar una 16.x.y Node.js versión. Puede utilizar las opciones del rango de versiones admitidas por npm para aumentar la flexibilidad. Para válido Node.js versiones para cada rama de plataforma, consulte Node.js en la AWS Elastic Beanstalk Guía de plataformas.

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 Node.js dependencias 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 llamado node_modules en la raíz del origen del proyecto. Para obtener más información, consulte Downloading and installing packages locally (Descarga e instalación de paquetes a nivel local) en el sitio web npm Docs.

Al implementar un directorio en un 023/ node_modules AL2 AL2 Node.js versión de plataforma, Elastic Beanstalk asume que está proporcionando sus propios paquetes de dependencias y evita instalar las dependencias especificadas en un archivo package.json. Node.js busca las dependencias en el directorio. node_modules Para obtener más información, consulte Cargar desde carpetas node_modules en el Node.js .

nota

Si sufre algún problema de implementación cuando Elastic Beanstalk ejecuta npm install, considere la posibilidad de utilizar el enfoque descrito en este tema como solución alternativa mientras investiga el problema.