Uso de la plataforma Elastic Beanstalk Node.js - AWS Elastic Beanstalk

Uso de la plataforma Elastic Beanstalk Node.js

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 con NGINX.

Elastic Beanstalk proporciona opciones de configuración que se pueden usar para personalizar el software que se ejecuta en las instancias 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 mapear carpetas del código fuente de la aplicación que contengan archivos estáticos a las rutas en las que actúa 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 use. Puede incluir un archivo npm-shrinkwrap.json para bloquear las versiones de dependencia.

La plataforma Node.js incluye un servidor proxy para servir 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 origen para especificar el comando que inicia la aplicación. Cuando no proporciona un Procfile, Elastic Beanstalk ejecuta npm start si proporciona un archivo package.json. Si tampoco proporciona uno, Elastic Beanstalk busca los archivos app.js o server.js, en este orden, y los ejecuta.

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 del entorno 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 el 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 Software, elija Edit (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:

  • Instance profile (Perfil de instancias): especifica el perfil de instancias que tiene permiso para acceder al bucket de Amazon S3 que está 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 deben copiarse en el bucket de Amazon S3 asociado a la aplicación.

Archivos estáticos

Para mejorar el rendimiento, la sección Static files (Archivos estáticos) le permite configurar el servidor proxy para servir archivos estáticos de servidor (por ejemplo, HTML o imágenes) desde un conjunto de directorios incluidos en 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 de 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 tener acceso a las variables de entorno mediante process.env.ENV_VARIABLE, de forma similar a como se muestra en el siguiente ejemplo.

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.

Configuración de una AMI de Amazon Linux (anterior a Amazon Linux 2) entorno Node.js

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

nota

Las versiones de la plataforma Amazon Linux 2 no son compatibles con las versiones anteriores de la plataforma de la AMI de Amazon Linux. Si va a migrar su aplicación de Elastic Beanstalk a Amazon Linux 2, consulte Migración de la aplicación de Linux de Elastic Beanstalk a Amazon Linux 2.

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

  • Proxy Server (Servidor proxy): especifica el servidor web que se usa 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.

  • Node.js version (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.

  • Gzip compression (Compresión Gzip): especifica si la compresión GZIP está habilitada. De forma predeterminada, la compresión GZIP está habilitada.

  • Node Command (Comando de Node): le 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 utiliza app.js, luego server.js y, posteriormente, 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 ejemplo siguiente 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.

La plataforma Node.js AMI de Amazon Linux (anterior a Amazon Linux 2)

nota

Las versiones de la plataforma Amazon Linux 2 no son compatibles con las versiones anteriores de la plataforma de la AMI de Amazon Linux. Si va a migrar su aplicación de Elastic Beanstalk a Amazon Linux 2, consulte Migración de la aplicación de Linux de Elastic Beanstalk a Amazon Linux 2.

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

Elastic Beanstalk admite algunas opciones de configuración específicas de la plataforma para las versiones de la plataforma Node.js 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. Usted 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 AMI de Amazon Linux Node.js 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 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 del entorno 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 de su 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 (Actualizar versión 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 de la AMI de Amazon Linux Node.js 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 utilice npm 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. La otra fuente son los archivos de imagen en la ruta images de la raíz del sitio web del directorio fuente 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.