Cómo obtener secretos y parámetros de las variables de entorno 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.

Cómo obtener secretos y parámetros de las variables de entorno de Elastic Beanstalk

Elastic Beanstalk puede recuperar AWS Secrets Manager valores AWS Systems Manager del almacén de parámetros durante el arranque de la instancia y asignarlos a variables de entorno para que los utilice la aplicación.

Los siguientes puntos resumen la configuración, la sincronización y el acceso para utilizar las variables de entorno como secretos:

  • Configure las variables de entorno para almacenar los secretos especificando los nombres de los recursos de Amazon (ARNs) para los secretos y los parámetros que almacenarán.

  • Cuando los valores secretos se actualizan o rotan en Secrets Manager o el Almacén de parámetros de Systems Manager, debe actualizar manualmente las variables de entorno.

  • Las variables de entorno de secretos están disponibles para los comandos de contenedor de ebextension y los enlaces de plataforma.

Versiones de la plataforma compatibles

Las versiones de plataforma que se publicaron el 26 de marzo de 2025 o después admiten AWS Secrets Manager secretos y AWS Systems Manager parámetros del almacén de parámetros configurados como variables de entorno.

nota

Con la excepción de las plataformas Docker basadas en Docker y ECS, las versiones de la plataforma Amazon Linux 2 no admiten valores de variables multilínea. Para obtener más información acerca de la compatibilidad con variables multilínea, consulte Valores multilínea.

Precios

Se aplican cargos estándar por el uso de Secrets Manager y del Almacén de parámetros de Systems Manager. Para obtener más información sobre los precios, consulte los siguientes sitios web:

Elastic Beanstalk no cobra por que su aplicación haga referencia a secretos del entorno mediante variables de entorno. Sin embargo, se aplican cargos estándar a las solicitudes que Elastic Beanstalk realiza a estos servicios en su nombre.

Cómo configurar los secretos como variables de entorno de Elastic Beanstalk

Puede usar la consola de Elastic Beanstalk, los archivos .ebextensions de configuración, AWS la CLI AWS y el SDK para configurar secretos y parámetros como variables de entorno.

Requisitos previos

Antes de configurar las variables de entorno para que hagan referencia a los secretos, primero tendrá que completar los siguientes pasos.

Procedimiento general previo a la configuración de las variables de entorno
  1. Cree los secretos de Secrets Manager o los parámetros del Almacén de parámetros para almacenar su información confidencial. Para obtener más información, consulte uno o ambos de los siguientes temas:

  2. Configure los permisos de IAM necesarios para las instancias de EC2 de su entorno a fin de obtener los secretos y los parámetros. Para obtener más información, consulte Permisos de IAM necesarios.

Uso de la consola

Puede usar la consola de Elastic Beanstalk para configurar secretos como variables de entorno.

Cómo configurar secretos como variables de entorno en la consola de Elastic Beanstalk
  1. Abra la consola de Elastic Beanstalk y, en la lista 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.

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

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

  5. Desplácese hacia abajo hasta Variables de entorno de tiempo de ejecución.

  6. Seleccione Añadir variables de entorno.

  7. En Fuente, seleccione Secrets Manager o Almacén de parámetros de SSM.

    nota

    Para obtener más información sobre la opción de texto sin formato del menú desplegable, consulte Configuración de las propiedades del entorno (variables de entorno).

  8. En el campo Nombre de la variable de entorno, introduzca el nombre de la variable de entorno que debe contener el valor del parámetro o secreto.

  9. En el campo Valor de la variable de entorno, indique el ARN del parámetro del Almacén de parámetros de Systems Manager o el secreto de Secrets Manager. Durante el arranque de la instancia, Elastic Beanstalk iniciará el valor de la variable que ingresó en el Paso 8 con el valor almacenado en este recurso de ARN.

    La consola valida si el valor introducido es un formato de ARN válido para el almacén que seleccionó en el Paso 7. Sin embargo, no valida la existencia del recurso especificado por el ARN ni si tiene los permisos de IAM necesarios para acceder a él.

  10. Si necesita añadir más variables, repita desde el Paso 6 hasta el Paso 9.

  11. Para guardar los cambios, elija Aplicar en la parte inferior de la página.

Configuración mediante archivos en formato .ebextensions

Puede usar los archivos de configuración de Elastic Beanstalk para configurar secretos como variables de entorno. Utilice el espacio de aws:elasticbeanstalk:application:environmentsecrets nombres para definir las propiedades del entorno.

nota

Secrets Manager añade automáticamente 6 caracteres aleatorios a los nombres secretos en el formato ARN para garantizar su exclusividad.

ejemplo.ebextensions/options.config para los secretos del entorno (sintaxis abreviada)
option_settings: aws:elasticbeanstalk:application:environmentsecrets: MY_SECRET: arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12 MY_PARAMETER: arn:aws:ssm:us-east-1:111122223333:parameter/myparam
ejemplo.ebextensions/options.config para los secretos del entorno (sintaxis estándar)
option_settings: - namespace: aws:elasticbeanstalk:application:environmentsecrets option_name: MY_SECRET value: arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12 - namespace: aws:elasticbeanstalk:application:environmentsecrets option_name: MY_PARAMETER value: arn:aws:ssm:us-east-1:111122223333:parameter/myparam

Configuración mediante el AWS CLI

Puede utilizar la interfaz de línea de AWS comandos (AWS CLI) para configurar los secretos como variables de entorno de Elastic Beanstalk. En esta sección se proporcionan ejemplos de los comandos create-environment y update-environment con el espacio de nombres de aws:elasticbeanstalk:application:environmentsecrets. Cuando Elastic Beanstalk arranca las instancias de EC2 para los entornos a los que hacen referencia estos comandos, inicializa las variables de entorno con el secreto obtenido y los valores de los parámetros. Obtiene estos valores del almacén de parámetros ARNs de Secrets Manager y Systems Manager, respectivamente.

Los dos ejemplos siguientes utilizan el comando create-environment para añadir un secreto y un parámetro, configurados como variables de entorno denominadas MY_SECRET y MY_PARAMETER.

ejemplo de create-environment con los secretos configurados como variables de entorno (opciones de espacio de nombres en línea)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --platform-arn "arn:aws:elasticbeanstalk:::platform/Node.js 24 running on 64bit Amazon Linux 2023" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_SECRET,Value=arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12 \ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_PARAMETER,Value=arn:aws:ssm:us-east-1:111122223333:parameter/myparam

Como alternativa, utilice un archivo options.json para especificar las opciones del espacio de nombres en lugar de incluirlas en línea.

ejemplo de create-environment con los secretos configurados como variables de entorno (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --platform-arn "arn:aws:elasticbeanstalk:::platform/Node.js 24 running on 64bit Amazon Linux 2023" \ --option-settings file://options.json
ejemplo
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:elasticbeanstalk:application:environmentsecrets", "OptionName": "MY_SECRET", "Value": "arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12" }, { "Namespace": "aws:elasticbeanstalk:application:environmentsecrets", "OptionName": "MY_PARAMETER", "Value": "arn:aws:ssm:us-east-1:111122223333:parameter/myparam" } ]

El siguiente ejemplo configura las variables de entorno, denominadas MY_SECRET y MY_PARAMETER, para almacenar un secreto y un parámetro para un entorno existente. El comando update-environment transfiere opciones con la misma sintaxis que el comando create-environment, ya sea en línea o con un archivo options.json. En el siguiente ejemplo, se muestra el comando utilizando el mismo archivo options.json que también se usó en el ejemplo anterior.

ejemplo de update-environment con los secretos configurados como variables de entorno (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --platform-arn "arn:aws:elasticbeanstalk:::platform/Node.js 24 running on 64bit Amazon Linux 2023" \ --option-settings file://options.json

Configuración mediante el SDK AWS

Puede configurar los secretos y los parámetros como variables de entorno mediante AWS SDKs. De forma similar a los create-environment AWS CLI comandos update-environment y mencionados en la sección anterior, puede utilizar las acciones CreateEnvironmenty de la UpdateEnvironmentAPI. Use el parámetro de solicitud OptionSettings para especificar las opciones del espacio de nombres aws:elasticbeanstalk:application:environmentsecrets.

Extraer claves JSON de los secretos de Secrets Manager

Las versiones de plataforma que se publicaron el 13 de enero de 2026 o después admiten la extracción de campos específicos de los secretos de Secrets Manager con formato JSON añadiendo dos puntos y el nombre de la clave JSON al ARN secreto. Esto te permite hacer referencia a pares clave-valor individuales dentro de un secreto en lugar de a todo el secreto.

Sintaxis

Para extraer una clave JSON específica de un secreto, :json-key-name añádala al ARN secreto:

arn:aws:secretsmanager:region:account:secret:secret-name-XXXXXX:json-key-name

La extracción de claves JSON se puede configurar mediante los mismos métodos que los secretos del entorno normal: consola, archivos de configuración en.ebextensions, AWS CLI o AWS SDKs.

Limitaciones

  • La extracción de claves JSON solo se admite para los secretos de Secrets Manager, no para los parámetros del almacén de parámetros de Systems Manager.

  • Solo se admiten las claves JSON de nivel superior. No se admiten el acceso a claves anidadas (por ejemploconfig.database.host) ni la indexación de matrices (por ejemplo,servers[0]). Si necesita acceder a valores anidados, extraiga el objeto principal y analícelo en el código de la aplicación. Los objetos anidados y las matrices a las que se accede mediante la clave de nivel superior se serializan de nuevo en formato JSON.

  • Los nombres de las claves JSON no pueden contener dos puntos (). : Los dos puntos se reservan como delimitadores en la sintaxis del ARN. Si el nombre de una clave JSON contiene dos puntos, solo se utiliza como nombre de clave la parte anterior a los dos puntos y se omiten los caracteres posteriores a los dos puntos.

  • La plataforma Docker gestionada por ECS utiliza la sintaxis ECS nativa para hacer referencia a los secretos. Para obtener más información, consulte Pasar los secretos de Secrets Manager a través de las variables de entorno de Amazon ECS en la Guía para desarrolladores de Amazon Elastic Container Service.

Ejemplo

En el siguiente ejemplo, se muestra cómo se extraen los distintos tipos de valores de un secreto JSON. Dado este secreto:

{ "stringKey": "value1", "numberKey": 42, "objectKey": { "nested": "data" }, "arrayKey": ["item1", "item2"] }

Puede configurar la extracción en.ebextensions:

ejemplo Ejemplo de .ebextensions con extracción de claves JSON
option_settings: aws:elasticbeanstalk:application:environmentsecrets: STRING_VAR: arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12:stringKey NUMBER_VAR: arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12:numberKey OBJECT_VAR: arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12:objectKey ARRAY_VAR: arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret-AbCd12:arrayKey

Esto da como resultado las siguientes variables de entorno:

  • STRING_VAR=value1

  • NUMBER_VAR=42

  • OBJECT_VAR={"nested":"data"}

  • ARRAY_VAR=["item1","item2"]

Mejores prácticas para la sincronización de secretos con variables de entorno de Elastic Beanstalk

En este tema se recomiendan las mejores prácticas para que la aplicación utilice los secretos del entorno con Secrets Manager o el Almacén de parámetros de Systems Manager. La aplicación de Elastic Beanstalk no recibirá automáticamente los valores actualizados si los datos del almacén de secretos se actualizan o rotan. Elastic Beanstalk extrae solamente los secretos de las variables de entorno en el momento del arranque de la instancia.

Actualización de las variables de su entorno

Para activar el entorno de Elastic Beanstalk para que recupere los valores más recientes de los secretos de sus almacenes de secretos, le recomendamos que ejecute la operación UpdateEnvironment o RestartAppServer. Puede ejecutar estas operaciones mediante la consola de Elastic Beanstalk, la AWS CLI o la API de Elastic Beanstalk. Para obtener más información, consulte los ejemplos de la AWS CLI de Elastic Beanstalk o AWS Elastic Beanstalk API Reference.

Administración de los efectos de escalado automático en la sincronización de secretos

Si se produce un evento de escalado horizontal o una sustitución de una instancia después de la actualización del almacén de secretos, la nueva instancia que aparezca tendrá los valores de los secretos más recientes de Secrets Manager o del Almacén de parámetros de Systems Manager. Este evento puede producirse incluso si no se han actualizado todas las demás instancias del entorno para recuperar los nuevos secretos.

importante

Debe asegurarse de que la aplicación pueda utilizar dos valores de secreto diferentes para la misma variable de entorno. Esto se adapta a los eventos en los que se produce una actualización de secretos en Secrets Manager o en el Almacén de parámetros de Systems Manager, seguida de un escalado horizontal o una sustitución de instancias en su entorno, mientras que las demás instancias están pendientes de actualizar las variables de entorno. Durante el período de espera para la actualización, no todas las instancias del entorno tendrán los mismos valores para las variables de entorno del almacén de secretos.

Un ejemplo de este caso de uso es la rotación de credenciales de bases de datos. Cuando un evento de escalado horizontal sigue a la rotación de credenciales, los secretos del entorno a los que hacen referencia las instancias recién arrancadas contienen las credenciales de base de datos actualizadas. Sin embargo, los secretos de entorno a los que hacen referencia las instancias existentes retienen el valor anterior hasta que se actualizan mediante las operaciones UpdateEnvironment o RestartAppServer.

Valores multilínea en las variables de entorno de Amazon Linux 2

Los valores multilínea se componen de más de una línea e incluyen un carácter de nueva línea. Con la excepción de las plataformas Docker basadas en Docker y ECS, las plataformas que se ejecutan en Amazon Linux 2 no admiten valores multilínea para las variables de entorno.

nota

Elastic Beanstalk no podrá implementar los entornos afectados si detecta un valor multilínea.

Las siguientes opciones pueden servir como soluciones al problema de multilíneas:

  • Actualice el entorno de Amazon Linux 2 a Amazon Linux 2023. Para obtener más información, consulte Migración de Amazon Linux 2 a Amazon Linux 2023.

  • Elimine los caracteres de nueva línea de los valores de los secretos. Un ejemplo de enfoque es codificar en Base64 sus valores antes de almacenarlos en el almacén de secretos. Luego, su aplicación tendría que volver a decodificar el valor en el formato original cuando haga referencia a él desde la variable de secretos del entorno.

  • Diseñe el código de la aplicación para recuperar los datos directamente de Secrets Manager o del Almacén de parámetros de Systems Manager. Para obtener más información, consulte Recuperar secretos en Uso de Secrets Manager o Recuperar parámetros Utilización del Parameter Store de Systems Manager.