Herramientas de script de plataforma - 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.

Herramientas de script de plataforma

En este tema se describen las herramientas que AWS Elastic Beanstalk proporciona para los entornos que utilizan plataformas de Amazon Linux. Las herramientas se encuentran en las instancias de Amazon EC2 de los entornos de Elastic Beanstalk.

get-config

Utilice la herramienta get-config para recuperar valores de variables de entorno y otra información de plataformas e instancias. La herramienta está disponible en /opt/elasticbeanstalk/bin/get-config.

comandos get-config

Cada comando de herramienta de get-config devuelve un tipo específico de información. Utilice la siguiente sintaxis para ejecutar los comandos de cualquiera de las herramientas.

$ /opt/elasticbeanstalk/bin/get-config command [ options ]

En el siguiente ejemplo se ejecuta el comando environment.

$ /opt/elasticbeanstalk/bin/get-config environment -k PORT

En función del comando y las opciones que elija, la herramienta devuelve un objeto (JSON o YAML) con pares de valor de clave o un valor único.

Puede probar get-config mediante SSH para conectarse a una instancia de EC2 en su entorno de Elastic Beanstalk.

nota

Cuando se ejecuta get-config para pruebas, algunos comandos pueden requerir privilegios de usuario raíz para acceder a la información subyacente. Si obtiene un error de permiso de acceso, ejecute el comando de nuevo en sudo.

No es necesario agregar sudo cuando utiliza la herramienta en los scripts que implementa en su entorno. Elastic Beanstalk ejecuta todos sus scripts como usuario raíz.

En las siguientes secciones se describen los comandos de las herramientas.

El comando get-config optionsettings devuelve un objeto que enumera las opciones de configuración establecidas en el entorno y utilizadas por la plataforma en instancias de entorno. Se organizan por espacio de nombres.

$ /opt/elasticbeanstalk/bin/get-config optionsettings {"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}

Para devolver un valor de opción de configuración específico, use la opción --namespace (-n) para especificar un espacio de nombres y la opción --option-name (-o) para especificar un nombre de opción.

$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit 256M

El comando get-config environment devuelve un objeto que contiene una lista de propiedades de entorno. Estas incluyen tanto las propiedades configuradas por el usuario como las proporcionadas por Elastic Beanstalk.

$ /opt/elasticbeanstalk/bin/get-config environment {"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}

Por ejemplo, Elastic Beanstalk proporciona propiedades de entorno para conectarse a una instancia de base de datos de Amazon RDS integrada (como RDS_HOSTNAME). Estas propiedades de conexión RDS aparecen en la salida de get-config environment. No obstante, no aparecen en la salida de get-config optionsettings. El motivo es que no se establecieron en las opciones de configuración.

Para devolver una propiedad específica del entorno, utilice la opción --key (-k) para especificar la clave de una propiedad.

$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY testvalue

El comando get-config container devuelve un objeto que enumera los valores de configuración del entorno y de la plataforma para las instancias de entorno.

En el siguiente ejemplo se muestra la salida del comando en un entorno Tomcat de Amazon Linux 2.

$ /opt/elasticbeanstalk/bin/get-config container {"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}

Para devolver el valor de una clave específica, utilice la opción --key (-k) para especificar la clave.

$ /opt/elasticbeanstalk/bin/get-config container -k environment_name myenv-1da84946

El comando get-config addons devuelve un objeto que contiene información de configuración de complementos de entorno. Utilícelo para recuperar la configuración de una base de datos de Amazon RDS asociada al entorno.

$ /opt/elasticbeanstalk/bin/get-config addons {"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}

Puede restringir el resultado de dos maneras. Para recuperar valores de un complemento específico, utilice la opción --add-on (-a) para especificar el nombre del complemento.

$ /opt/elasticbeanstalk/bin/get-config addons -a rds {"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}

Para devolver el valor de una clave específica dentro de un complemento, agregue la opción --key (-k) para especificar la clave.

$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME ebdb

El comando get-config platformconfig devuelve un objeto que contiene información de configuración de plataforma que es constante a la versión de esta última. La salida es la misma en todos los entornos que ejecutan la misma versión de plataforma. El objeto de salida del comando contiene dos objetos incrustados:

  • GeneralConfig: contiene información que es constante en las versiones más recientes de todas las ramificaciones de la plataforma Amazon Linux 2 y Amazon Linux 2023.

  • PlatformSpecificConfig: contiene información que es constante para la versión de la plataforma y que es específica de ella.

En el siguiente ejemplo se muestra la salida del comando en un entorno que utiliza la ramificación de la plataforma Tomcat 8.5 que ejecuta Corretto 11.

$ /opt/elasticbeanstalk/bin/get-config platformconfig {"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}

Para devolver el valor de una clave específica, utilice la opción --key (-k) para especificar la clave. Estas claves son únicas en los dos objetos incrustados. No es necesario especificar el objeto que contiene la clave.

$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir /var/app/staging/

Opciones de salida de get-config

Utilice la opción --output para especificar el formato del objeto de salida. Los valores válidos son JSON (predeterminado) y YAML. Se trata de una opción general. Debe especificarla antes del nombre del comando.

En el siguiente ejemplo se devuelven los valores de las opciones de configuración en formato YAML.

$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings aws:elasticbeanstalk:application:environment: JDBC_CONNECTION_STRING: "" aws:elasticbeanstalk:container:tomcat:jvmoptions: JVM Options: "" Xms: 256m Xmx: 256m aws:elasticbeanstalk:environment:proxy: ProxyServer: nginx StaticFiles: - "" aws:elasticbeanstalk:healthreporting:system: SystemType: enhanced aws:elasticbeanstalk:hostmanager: LogPublicationControl: "false"

pkg-repo

nota

La herramienta pkg-repo no está disponible para entornos basados en las plataformas Amazon Linux 2023. Sin embargo, puede aplicar manualmente las actualizaciones del paquete y del sistema operativo a una instancia de AL2023. Para obtener más información, consulte Administración de paquetes y actualizaciones del sistema operativo en la Guía del usuario de Amazon Linux 2023

En algunos casos urgentes, es posible que tenga que actualizar sus instancias de Amazon EC2 mediante la aplicación de un parche de seguridad de Amazon Linux 2 que aún no se haya lanzado con las versiones necesarias de la plataforma de Elastic Beanstalk. No puede realizar una actualización manual en sus entornos de Elastic Beanstalk de forma predeterminada. Esto se debe a que las versiones de la plataforma se encuentran bloqueadas en una versión específica del repositorio de Amazon Linux 2. Con este bloqueo se garantiza que las instancias ejecuten versiones de software compatibles y coherentes. En casos urgentes, la herramienta pkg-repo permite una solución para actualizar manualmente los paquetes yum en Amazon Linux 2 si necesita instalarlo en un entorno antes de que se lance en una nueva versión de la plataforma de Elastic Beanstalk.

La herramienta pkg-repo en las plataformas de Amazon Linux 2 proporciona la capacidad de desbloquear los repositorios de paquetes yum. A continuación, puede realizar manualmente una yum update para aplicar un parche de seguridad. Por el contrario, puede seguir la actualización mediante el uso de la herramienta correspondiente a fin de bloquear los repositorios de paquetes yum y así evitar nuevas actualizaciones. La herramienta pkg-repo está disponible en el directorio /opt/elasticbeanstalk/bin/pkg-repo de todas las instancias de EC2 en sus entornos de Elastic Beanstalk.

Los cambios que se realizan con la herramienta pkg-repo solo se llevan a cabo en la instancia de EC2 en la que se utiliza dicha herramienta. No afectan a otras instancias ni impiden futuras actualizaciones del entorno. Los ejemplos que se proporcionan más adelante en este tema explican el modo de aplicar los cambios en todas las instancias mediante la llamada a los comandos pkg-repo desde los scripts y los archivos de configuración.

aviso

No se recomienda esta herramienta para la mayoría de los usuarios. Los cambios manuales aplicados a una versión de plataforma desbloqueada se consideran fuera de banda. Esta opción solo es posible para aquellos usuarios en circunstancias excepcionales que puedan asumir los siguientes riesgos:

  • No se puede garantizar que las versiones de los paquetes sean coherentes en todas las instancias en los entornos.

  • No se garantiza que los entornos modificados mediante la herramienta pkg-repo funcionen correctamente. No se han probado ni verificado en las plataformas compatibles con Elastic Beanstalk.

Se recomienda aplicar las prácticas recomendadas, que incluyen pruebas y planes de retroceso. A fin de facilitar las prácticas recomendadas, puede utilizar la consola de Elastic Beanstalk y la CLI de EB para así clonar un entorno e intercambiar las direcciones URL de este. Para obtener más información sobre cómo usar estas operaciones, consulte Implementaciones azul/verde en el capítulo relativo a la Administración de entornos de esta guía.

Si planea editar manualmente los archivos de configuración del repositorio yum, ejecute la herramienta pkg-repo primero. Es posible que la herramienta pkg-repo no funcione como se esperaba en un entorno de Amazon Linux 2 con archivos de configuración de repositorios yum editados manualmente. Esto se debe a que la herramienta podría no reconocer los cambios de configuración.

Para obtener más información sobre el repositorio de paquetes de Amazon Linux, consulte el tema Repositorio de paquetes en la Guía del usuario de Amazon EC2 para instancias de Linux.

comandos pkg-repo

Utilice la siguiente sintaxis para ejecutar los comandos de la herramienta pkg-repo.

$ /opt/elasticbeanstalk/bin/pkg-repo command [options]

Los comandos pkg-repo son los siguientes:

  • lock: bloquea los repositorios de paquetes yum a una versión específica

  • unlock: desbloquea los repositorios de paquetes yum desde una versión específica

  • status: enumera todos los repositorios de paquetes yum y su estado de bloqueo actual

  • help: muestra ayuda general o ayuda para un comando

Las opciones se aplican a los comandos de la siguiente manera:

  • lock, unlock y status – opciones: -h, --help o ninguno (predeterminado).

  • help – opciones: lock, unlock, status o ninguno (predeterminado).

En el siguiente ejemplo se ejecuta el comando unlock.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock Amazon Linux 2 core package repo successfully unlocked Amazon Linux 2 extras package repo successfully unlocked

En el siguiente ejemplo se ejecuta el comando lock.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock Amazon Linux 2 core package repo successfully locked Amazon Linux 2 extras package repo successfully locked

En el siguiente ejemplo se ejecuta el comando status.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo status Amazon Linux 2 core package repo is currently UNLOCKED Amazon Linux 2 extras package repo is currently UNLOCKED

En el siguiente ejemplo se ejecuta el comando help para el comando lock.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock

En el siguiente ejemplo se ejecuta el comando help para la herramienta pkg-repo.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo help

Puede probar pkg-repo mediante SSH para conectarse a una instancia de su entorno de Elastic Beanstalk. Una opción SSH es el comando eb ssh de la CLI de EB.

nota

La herramienta pkg-repo requiere privilegios de usuario raíz para ejecutarse. Si obtiene un error de permiso de acceso, ejecute el comando de nuevo en sudo.

No es necesario agregar sudo cuando utiliza la herramienta en los archivos de configuración o scripts que implementa en su entorno. Elastic Beanstalk ejecuta todos sus scripts como usuario raíz.

ejemplos pkg-repo

En la sección anterior se proporcionan ejemplos de línea de comandos para realizar pruebas en una instancia de EC2 individual de un entorno de Elastic Beanstalk. Este enfoque puede resultar práctico para las pruebas. Sin embargo, actualiza solo una instancia a la vez, por lo que no resulta práctico aplicar cambios en todas las instancias de un entorno.

Un enfoque más pragmático es utilizar scripts de enlaces de plataforma o un archivo de configuración .ebextensions que permita aplicar los cambios en todas las instancias de forma coherente.

En el siguiente ejemplo se llama a pkg-repo desde un archivo de configuración en la carpeta .ebextensions. Elastic Beanstalk ejecuta los comandos en el archivo update_package.config cuando se implementa el paquete de código fuente de la aplicación.

.ebextensions └── update_package.config

Para recibir la última versión del paquete docker, esta configuración especifica el paquete docker en el comando yum update.

### update_package.config ### commands: update_package: command: | /opt/elasticbeanstalk/bin/pkg-repo unlock yum update docker -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

En esta configuración no se especifica ningún paquete en el comando yum update. En consecuencia, se aplican todas las actualizaciones disponibles.

### update_package.config ### commands: update_package: command: | /opt/elasticbeanstalk/bin/pkg-repo unlock yum update -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

En el siguiente ejemplo se llama a pkg-repo desde un script bash como enlace de la plataforma. Elastic Beanstalk ejecuta el archivo de script update_package.sh que se encuentra en el subdirectorio prebuild.

.platform └── hooks └── prebuild └── update_package.sh

Para recibir la última versión del paquete docker, este script especifica el paquete docker en el comando yum update. Si se omite el nombre del paquete, se aplican todas las actualizaciones disponibles. En el ejemplo del archivo de configuración anterior se demuestra esto.

### update_package.sh ### #!/bin/bash /opt/elasticbeanstalk/bin/pkg-repo unlock yum update docker -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

download-source-bundle (solo AMI de Amazon Linux)

En las ramificaciones de la plataforma AMI de Amazon Linux (antes de Amazon Linux 2), Elastic Beanstalk proporciona una herramienta adicional, que es download-source-bundle. Utilice esta herramienta para descargar el código fuente de su aplicación cuando implemente su plataforma. La herramienta está disponible en /opt/elasticbeanstalk/bin/download-source-bundle.

El script de ejemplo 00-unzip.sh se encuentra en la carpeta appdeploy/pre de las instancias de entorno. Se demuestra cómo utilizar download-source-bundle para descargar el código fuente de la aplicación en la carpeta /opt/elasticbeanstalk/deploy/appsource durante la implementación.