Uso de la plataforma Elastic Beanstalk Ruby - AWS Elastic Beanstalk

Uso de la plataforma Elastic Beanstalk Ruby

La plataforma Ruby de AWS Elastic Beanstalk es un conjunto de configuraciones de entorno para las aplicaciones web de Ruby que se pueden ejecutar detrás de un servidor proxy nginx en un servidor de aplicaciones Puma. Cada ramificación de la plataforma corresponde a una versión de Ruby.

Si utiliza RubyGems, puede incluir un archivo Gemfile en el paquete de código fuente para instalar paquetes durante la implementación.

Es posible que su aplicación se ejecute bajo un servidor de aplicaciones diferente, por ejemplo, Passenger. Puede usar un Procfile para iniciar un servidor de aplicaciones diferente y un Gemfile para instalarlo. Para obtener más información, consulte Configuración del proceso de la aplicación con un Procfile.

nota

Si está utilizando una ramificación de la plataforma Ruby AMI de Amazon Linux (anterior a Amazon Linux 2), tenga en cuenta que Elastic Beanstalk proporciona dos sabores de estas ramas: con Puma y con Passenger. Si la aplicación requiere el servidor de aplicaciones de Passenger, puede usar la ramificación de Passenger y no necesita realizar ninguna configuración adicional.

Elastic Beanstalk proporciona opciones de configuración que puede utilizar para personalizar el software que se ejecuta en las instancias de Amazon Elastic Compute Cloud (Amazon EC2) en su entorno de Elastic Beanstalk. Puede configurar las variables de entorno que necesita la aplicación, habilitar la rotación de logs 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. La plataforma también preestablece algunas variables de entorno comunes relacionadas con Rails y Rack para facilitar la detección y el uso.

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.

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 de Ruby

Puede utilizar 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 tener acceso a las opciones de configuración de software del entorno

  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).

Log Options (Opciones de registro)

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

  • Instance profile (Perfil de instancia): especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de Amazon S3 asociado con 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.

De forma predeterminada, el servidor proxy en un entorno Ruby se configura de modo tal que sirva los archivos estáticos como se indica a continuación:

  • Archivos en la carpeta public se sirven desde la ruta /public y la raíz del dominio (ruta /).

  • Archivos en la subcarpeta public/assets se sirven desde la ruta /assets.

En los siguientes ejemplos se ilustra el funcionamiento de la configuración predeterminada:

  • Por ejemplo, si el código fuente de la aplicación contiene un archivo llamado logo.png en una carpeta denominada public, el servidor proxy lo proporciona a los usuarios desde subdomain.elasticbeanstalk.com/public/logo.png y subdomain.elasticbeanstalk.com/logo.png.

  • Si el código fuente de la aplicación contiene un archivo llamado logo.png en una carpeta denominada assets dentro de la carpeta public, el servidor proxy lo proporciona desde subdomain.elasticbeanstalk.com/assets/logo.png.

Puede configurar más asignaciones para los archivos estáticos. Para obtener más información, consulte Espacios de nombres de la configuración de Ruby más adelante en este tema.

nota

En el caso de las versiones de la plataforma anteriores a la versión 3.3.7 de Ruby 2.7 AL2, la configuración predeterminada del servidor proxy nginx de Elastic Beanstalk no es compatible con que se sirvan archivos estáticos desde la raíz del dominio (subdomain.elasticbeanstalk.com/). Esta versión de la plataforma se lanzó el 21 de octubre de 2021. Para obtener más información, consulte Nuevas versiones de la plataforma: Ruby en la Notas de la versión de AWS Elastic Beanstalk.

Propiedades del entorno

La sección Environment Properties (Propiedades de entorno) le permite especificar opciones de configuración del entorno en las instancias de Amazon EC2 que ejecutan la aplicación. Las propiedades del entorno se pasan como pares de clave-valor a la aplicación.

La plataforma Ruby define las siguientes propiedades de configuración del entorno:

  • BUNDLE_WITHOUT: lista de grupos separados por dos puntos que se van a omitir al instalar dependencias desde un archivo Gemfile.

  • BUNDLER_DEPLOYMENT_MODE: establézcalo en true (opción por defecto) para instalar dependencias en el modo de implementación mediante Bundler. Cámbielo a false para ejecutar bundle install en modo de desarrollador.

    nota

    Esta propiedad de entorno no está definida en las ramas de la plataforma Ruby AMI de Amazon Linux (antes de Amazon Linux 2).

  • RAILS_SKIP_ASSET_COMPILATION: establézcalo en true para omitir la ejecución de rake assets:precompile durante la implementación.

  • RAILS_SKIP_MIGRATIONS: establézcalo en true para omitir la ejecución de rake db:migrate durante la implementación.

  • RACK_ENV: especifique la fase del entorno de Rack. Por ejemplo, development, production o test.

Dentro del entorno de Ruby que se ejecuta en Elastic Beanstalk, es posible acceder a las variables de entorno mediante el objeto ENV. Por ejemplo, podría leer una propiedad denominada API_ENDPOINT en una variable con el siguiente código:

endpoint = ENV['API_ENDPOINT']

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

Espacios de nombres de la configuración de Ruby

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 usar el espacio de nombres aws:elasticbeanstalk:environment:proxy:staticfiles para configurar el proxy del entorno para que sirva archivos estáticos. Defina mapeos de rutas virtuales a directorios de aplicaciones.

La plataforma Ruby no define ningún espacio de nombres específico de la plataforma. En su lugar, define propiedades para el entorno para opciones comunes de Rails y Rack.

El siguiente archivo de configuración especifica una opción de archivos estáticos que asigna un directorio denominado staticimages a la ruta /images, establece cada una de las propiedades de entorno definidas por la plataforma y establece una propiedad de entorno adicional llamada LOGGING.

ejemplo .ebextensions/ruby-settings.config

option_settings: aws:elasticbeanstalk:environment:proxy:staticfiles: /images: staticimages aws:elasticbeanstalk:application:environment: BUNDLE_WITHOUT: test BUNDLER_DEPLOYMENT_MODE: true RACK_ENV: development RAILS_SKIP_ASSET_COMPILATION: true RAILS_SKIP_MIGRATIONS: true LOGGING: debug
nota

La propiedad del entorno BUNDLER_DEPLOYMENT_MODE y el espacio de nombres aws:elasticbeanstalk:environment:proxy:staticfiles no están definidos en las ramas de la plataforma Ruby de la AMI de Amazon Linux (anterior a Amazon Linux 2).

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.