

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 scripts de plataforma para entornos de Elastic Beanstalk
<a name="custom-platforms-scripts"></a>

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

## get-config
<a name="custom-platforms-scripts.get-config"></a>

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

### comandos get-config
<a name="custom-platforms-scripts.get-config.commands"></a>

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 realizar pruebas `get-config` mediante SSH para conectarse a una EC2 instancia de 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.

#### optionsettings: opciones de configuración
<a name="custom-platforms-scripts.get-config.commands.optionsettings"></a>

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
```

#### environment: propiedades del entorno
<a name="custom-platforms-scripts.get-config.commands.environment"></a>

El comando `get-config environment` devuelve un objeto que contiene una lista de propiedades de entorno, tanto configuradas por el usuario como proporcionadas por Elastic Beanstalk. Las propiedades configuradas por el usuario se definen en la [consola](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) como *texto sin formato* o con el espacio de nombres de la opción de configuración [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment).

```
$ /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
```

**nota**  
La herramienta `get-config` no puede recuperar [variables de entorno que almacenan secretos](AWSHowTo.secrets.env-vars.md). Para obtener más información sobre cómo recuperar mediante programación valores de secretos o de almacenes de parámetros, consulte [Uso de Secrets Manager](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.Secrets-Manager) o [Utilización del Parameter Store de Systems Manager](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.SSM-parmameter-store).

#### container: valores de configuración en instancia
<a name="custom-platforms-scripts.get-config.commands.container"></a>

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
```

#### addons: valores de configuración de complementos
<a name="custom-platforms-scripts.get-config.commands.addons"></a>

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
```

#### platformconfig: valores de configuración constante
<a name="custom-platforms-scripts.get-config.commands.platformconfig"></a>

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
<a name="custom-platforms-scripts.get-config.global"></a>

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
<a name="custom-platforms-scripts.pkg-repo"></a>

**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 023. AL2 Para obtener más información, consulte [Administración de paquetes y actualizaciones del sistema operativo](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) en la *Guía del usuario de Amazon Linux 2023*

En algunas circunstancias urgentes, es posible que tengas que actualizar tus EC2 instancias de Amazon con un parche de seguridad para Amazon Linux 2 que aún no se haya publicado con las versiones de la plataforma Elastic Beanstalk requeridas. 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 `pkg-repo` herramienta está disponible en el `/opt/elasticbeanstalk/bin/pkg-repo` directorio de todas las EC2 instancias de sus entornos de Elastic Beanstalk.

Los cambios que se realizan con la `pkg-repo` herramienta se realizan únicamente en el EC2 caso en el que se utiliza la 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. Para facilitar las prácticas recomendadas, puede utilizar la consola de Elastic Beanstalk y la CLI de EB para clonar un entorno e intercambiarlo. URLs Para obtener más información sobre cómo usar estas operaciones, consulte [Implementaciones azul/verde](using-features.CNAMESwap.md) 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 sobre el [repositorio de paquetes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#package-repository) en la *Guía del EC2 usuario de Amazon*.

### comandos pkg-repo
<a name="custom-platforms-scripts.pkg-repo.commands"></a>

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**](eb3-ssh.md) 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
<a name="custom-platforms-scripts.pkg-repo.examples"></a>

La sección anterior proporciona ejemplos de línea de comandos para realizar pruebas en una EC2 instancia 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](platforms-linux-extend.hooks.md) o un archivo de configuración [`.ebextensions`](ebextensions.md) 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`](ebextensions.md). 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](platforms-linux-extend.hooks.md). 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)
<a name="custom-platforms-scripts.download"></a>

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.