Uso de la plataforma Node.js de 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.

Uso de la plataforma Node.js de Elastic Beanstalk

La plataforma Node.js de AWS Elastic Beanstalk es un conjunto de versiones de la plataforma de aplicaciones web Node.js que se ejecutan en un servidor proxy NGINX.

Elastic Beanstalk proporciona opciones de configuración que se pueden utilizar para personalizar el software que se ejecuta en las instancias de EC2 del entorno de Elastic Beanstalk. Puede configurar las variables de entorno que necesita la aplicación, habilitar la rotación de registros en Amazon S3 y asignar carpetas del código fuente de la aplicación que contengan archivos estáticos a rutas proporcionadas por el servidor proxy.

En la consola de Elastic Beanstalk hay opciones de configuración disponibles para modificar la configuración de un entorno en ejecución. Para evitar perder la configuración del entorno cuando lo termina, puede usar las configuraciones guardadas para guardar la configuración y aplicarla posteriormente a otro entorno.

Para guardar la configuración en el código fuente, puede incluir archivos de configuración. Los valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.

Puede incluir un archivo Package.json en el paquete de código fuente para instalar paquetes durante la implementación, para proporcionar un comando de inicio y para especificar la versión de Node.js que quiere que la aplicación utilice. Puede incluir un archivo npm-shrinkwrap.json para bloquear las versiones de dependencia.

La plataforma Node.js incluye un servidor proxy para distribuir recursos estáticos, reenviar el tráfico a la aplicación y comprimir las respuestas. Puede ampliar o invalidar la configuración del proxy predeterminada para escenarios avanzados.

Hay varias opciones para iniciar su aplicación. Puede agregar un Procfile a su paquete de código fuente para especificar el comando que inicia la aplicación. Si no proporciona un Procfile, pero proporciona un archivo package.json, Elastic Beanstalk ejecuta npm start. Si no proporciona ninguno, Elastic Beanstalk busca los archivos app.js o server.js, en este orden, y ejecuta el script.

La configuración aplicada en la consola de Elastic Beanstalk anula la misma configuración en los archivos de configuración, si existe. Esto le permite tener la configuración predeterminada en los archivos de configuración y anularla con la configuración específica del entorno en la consola. Para obtener más información acerca de la prioridad y otros métodos para cambiar valores de configuración, consulte Opciones de configuración.

Para obtener más información sobre las diversas formas en las que puede ampliar una plataforma Elastic Beanstalk basada en Linux, consulte Ampliación de las plataformas Linux de Elastic Beanstalk.

Configuración de su entorno de Node.js

Puede utilizar la configuración de la plataforma Node.js para ajustar el comportamiento de las instancias de Amazon EC2. Puede editar la configuración de la instancia de Amazon EC2 para el entorno de Elastic Beanstalk mediante la consola de Elastic Beanstalk.

Utilice la consola de Elastic Beanstalk para habilitar la rotación de registros en Amazon S3 y configurar variables que la aplicación pueda leer desde el entorno.

Para configurar su entorno Node.js en la consola de Elastic Beanstalk
  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su Región de AWS.

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En el panel de navegación, elija Configuration (Configuración).

  4. En la categoría de configuración Actualizaciones, supervisión y registro, seleccione Editar.

Opciones de contenedor

Puede especificar estas opciones específicas de la plataforma:

  • Proxy server (Servidor proxy): el servidor proxy que utilizar en las instancias del entorno. Se utiliza NGNIX de forma predeterminada.

Log Options (Opciones de registro)

La sección Log Options (Opciones de registro) tiene dos valores:

  • Perfil de instancia: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de Amazon S3 asociado a la aplicación.

  • Enable log file rotation to Amazon S3 (Habilitar la rotación de archivos de registro para Amazon S3): especifica si los archivos de registro de las instancias de Amazon EC2 de la aplicación se copian en el bucket de Amazon S3 asociado a la aplicación.

Archivos estáticos

Para mejorar el rendimiento, puede utilizar la sección Static files (Archivos estáticos) para configurar el servidor proxy para entregar archivos estáticos de servidor (por ejemplo, HTML o imágenes) desde un conjunto de directorios dentro de su aplicación web. Para cada directorio, se establece la ruta virtual para la asignación de directorios. Cuando el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente el archivo en lugar de direccionar la solicitud la aplicación.

Para obtener más información sobre la configuración de archivos estáticos mediante archivos de configuración o la consola de Elastic Beanstalk, consulte Distribución de archivos estáticos.

Propiedades del entorno

Utilice la sección Environment Properties (Propiedades de entorno) para especificar opciones de configuración del entorno en las instancias Amazon EC2 que ejecutan la aplicación. Estos ajustes se pasan como pares clave-valor a la aplicación.

Dentro del entorno Node.js que se ejecuta en AWS Elastic Beanstalk, puede acceder a las variables del entorno mediante process.env.ENV_VARIABLE.

var endpoint = process.env.API_ENDPOINT

La plataforma Node.js establece la variable de entorno PORT en el puerto al que el servidor proxy pasa el tráfico. Para obtener más información, consulte Configuración del servidor proxy.

Para obtener más información, consulte Propiedades del entorno y otras opciones del software.

Las siguientes categorías de configuración del software de la consola solo se admite en un entorno Node.js de Elastic Beanstalk que utiliza una versión de la plataforma de la AMI de Amazon Linux (anterior a Amazon Linux 2).

Notas
  • La información de este tema solo se aplica a ramificaciones de plataforma basadas en la AMI de Amazon Linux (AL1). Las ramificaciones de la plataforma AL2023/AL2 son incompatibles con las versiones anteriores de la plataforma de la AMI de Amazon Linux (AL1) y requieren ajustes de configuración diferentes.

  • El 18 de julio de 2022, Elastic Beanstalk estableció el estado de todas las ramificaciones de la plataforma basadas en la AMI de Amazon Linux (AL1) como retirado. Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2.

En la página de configuración, especifique lo siguiente:

  • Proxy Server (Servidor proxy): especifica el servidor web que se utiliza para enviar las conexiones a Node.js. Se utiliza NGINX de forma predeterminada. Si selecciona none (ninguno), las asignaciones de archivos estáticos no se aplican y se desactiva la compresión GZIP.

  • Versión de Node.js: especifica la versión de Node.js. Para obtener una lista de las versiones de Node.js compatibles, consulte Node.js en la guía Plataformas de AWS Elastic Beanstalk.

  • Compresión GZIP: especifica si la compresión GZIP está habilitada. La compresión GZIP está habilitada de forma predeterminada.

  • Node command (Comando de Node): permite escribir el comando que se utiliza para iniciar la aplicación de Node.js. Una cadena vacía (la predeterminada) significa que Elastic Beanstalk usa app.js, server.js y, luego, npm start.

Espacio de nombres de configuración de Node.js

Puede usar un archivo de configuración para definir opciones de configuración y realizar otras tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración se pueden definir a través del servicio de Elastic Beanstalk o la plataforma que utilice y están organizadas por espacios de nombres.

Puede elegir el proxy que se utilizará en las instancias para el entorno mediante el uso del espacio de nombres aws:elasticbeanstalk:environment:proxy. En el siguiente ejemplo se configura el entorno para utilizar el servidor proxy Apache HTTPD.

ejemplo .ebextensions/nodejs-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

Puede configurar el proxy para que sirva archivos estáticos mediante el espacio de nombres aws:elasticbeanstalk:environment:proxy:staticfiles. Para obtener más información y un ejemplo, consulte Distribución de archivos estáticos.

Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además de los archivos de configuración, también puede definir opciones en la consola, configuraciones guardadas, la CLI de EB o la AWS CLI. Para obtener más información, consulte Opciones de configuración.

Si el entorno Node.js de Elastic Beanstalk utiliza una versión de la plataforma de la AMI de Amazon Linux (anterior a Amazon Linux 2), tenga en cuenta las configuraciones y las recomendaciones específicas de esta sección.

Notas
  • La información de este tema solo se aplica a ramificaciones de plataforma basadas en la AMI de Amazon Linux (AL1). Las ramificaciones de la plataforma AL2023/AL2 son incompatibles con las versiones anteriores de la plataforma de la AMI de Amazon Linux (AL1) y requieren ajustes de configuración diferentes.

  • El 18 de julio de 2022, Elastic Beanstalk estableció el estado de todas las ramificaciones de la plataforma basadas en la AMI de Amazon Linux (AL1) como retirado. Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2.

Elastic Beanstalk admite algunas opciones de configuración específicas de la plataforma para las versiones de la plataforma Node.js de la AMI de Amazon Linux. Puede elegir qué servidor proxy se ejecuta delante de su aplicación, la versión específica de Node.js que se debe ejecutar y el comando utilizado para ejecutar la aplicación.

Para el servidor proxy, puede utilizar un servidor proxy NGINX o Apache. Puede establecer el valor none en la opción ProxyServer. Con esta configuración, Elastic Beanstalk ejecuta la aplicación de forma independiente, sin que se relacione a ningún servidor proxy. Si el entorno ejecuta una aplicación independiente, actualice el código para escuchar al puerto al que NGINX reenvía tráfico.

var port = process.env.PORT || 8080; app.listen(port, function() { console.log('Server running at http://127.0.0.1:%s', port); });

En términos de la versión de lenguaje compatible, la plataforma Node.js de la AMI de Amazon Linux es diferente de otras plataformas administradas por Elastic Beanstalk. Esto se debe a que cada versión de la plataforma Node.js admite solo unas pocas versiones del lenguaje de Node.js. Para obtener una lista de las versiones de Node.js compatibles, consulte Node.js en la guía Plataformas de AWS Elastic Beanstalk.

Puede utilizar una opción de configuración específica de la plataforma para establecer la versión del lenguaje. Para obtener instrucciones, consulte Configuración de su entorno de Node.js. Como alternativa, utilice la consola de Elastic Beanstalk para actualizar la versión Node.js que utiliza el entorno como parte de la actualización de la versión de la plataforma.

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 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 NodeVersion configurada, se producirá un error. Para evitar la necesidad de crear un nuevo entorno, cambie la opción de configuración NodeVersion por una versión de Node.js compatible con la antigua y la nueva versión de la plataforma, o elimine la opción de configuración y, a continuación, lleve a cabo la actualización de la plataforma.

Para configurar la versión Node.js del entorno en la consola de Elastic Beanstalk
  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su Región de AWS.

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En la página de información general del entorno, en Platform (Plataforma), elija Change (Cambiar).

  4. En el cuadro de diálogo Update platform version (Actualización de versiones de la plataforma), seleccione una versión de Node.js.

    
                  Confirmación de la versión de la plataforma de actualización de Elastic Beanstalk
  5. Seleccione Save.

La plataforma Node.js de la AMI de Amazon Linux define opciones adicionales en los espacios de nombres aws:elasticbeanstalk:container:nodejs:staticfiles y aws:elasticbeanstalk:container:nodejs.

El siguiente archivo de configuración indica a Elastic Beanstalk que utilicenpm start para ejecutar la aplicación. También establece el tipo de proxy en Apache y habilita la compresión. Por último, configura el proxy para que ofrezca archivos estáticos desde dos directorios fuente. Una fuente son los archivos HTML en la ruta html de la raíz del sitio web del directorio fuente statichtml. El otro origen son los archivos de imagen en la ruta images de la raíz del sitio web desde el directorio de origen staticimages.

ejemplo .ebextensions/node-settings.config
option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start" ProxyServer: apache GzipCompression: true aws:elasticbeanstalk:container:nodejs:staticfiles: /html: statichtml /images: staticimages

Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además de los archivos de configuración, también puede definir opciones en la consola, configuraciones guardadas, la CLI de EB o la AWS CLI. Para obtener más información, consulte Opciones de configuración.