Cómo obtener secretos y parámetros de las variables de entorno de Elastic Beanstalk
Elastic Beanstalk puede recuperar valores de AWS Secrets Manager y del Almacén de parámetros de AWS Systems Manager 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 sus variables de entorno para almacenar secretos especificando los nombres de recursos de Amazon (ARN) 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 la plataforma que se publicaron a partir del 26 de marzo de 2025 admiten secretos de AWS Secrets Manager y parámetros del Almacén de parámetros de AWS Systems Manager 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.
Temas
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:
-
AWS Systems Manager precios
(seleccione Almacén de parámetros de la lista de contenido)
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 de configuración de .ebextensions, la CLI de AWS y el SDK de AWS para configurar secretos y parámetros como variables de entorno.
Temas
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
-
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:
-
Cómo crear secretos en Uso de Secrets Manager para crear y recuperar secretos
-
Cómo crear parámetros en Uso del Almacén de parámetros de Systems Manager para crear y recuperar parámetros
-
-
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
Abra la consola de Elastic Beanstalk
y, en la lista Regions (Regiones), seleccione su Región de AWS. -
En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.
En el panel de navegación, elija Configuración.
-
En la categoría de configuración Actualizaciones, supervisión y registro, seleccione Edición de.
-
Desplácese hacia abajo hasta Variables de entorno de tiempo de ejecución.
-
Seleccione Añadir variables de entorno.
-
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).
-
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.
-
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.
-
Si necesita añadir más variables, repita desde el Paso 6 hasta el Paso 9.
-
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 aws:elasticbeanstalk:application:environmentsecrets espacio de nombres para definir las propiedades del entorno.
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:mysecretMY_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:environmentsecretsoption_name:MY_SECRETvalue:arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret- namespace:aws:elasticbeanstalk:application:environmentsecretsoption_name:MY_PARAMETERvalue:arn:aws:ssm:us-east-1:111122223333:parameter/myparam
Configuración mediante la AWS CLI
Puede utilizar la interfaz de la línea de comandos de AWS (AWS CLI) para configurar 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 de los ARN respectivos de Secrets Manager y del Almacén de parámetros de Systems Manager.
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 \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 20"\ --option-settings \ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_SECRET,Value=arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret\ 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 \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 20"\ --option-settingsfile://options.json
### example options.json ### [ { "Namespace": "aws:elasticbeanstalk:application:environmentsecrets", "OptionName": "MY_SECRET", "Value": "arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret" }, { "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 \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 20"\ --option-settingsfile://options.json
Configuración mediante el SDK de AWS
Puede configurar los secretos y parámetros como variables de entorno mediante los SDK de AWS. De forma similar a los comandos update-environment y create-environment de la AWS CLI mencionados en la sección anterior, puede utilizar las acciones de las API CreateEnvironment y UpdateEnvironment. Use el parámetro de solicitud OptionSettings para especificar las opciones del espacio de nombres aws:elasticbeanstalk:application:environmentsecrets.
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 Utilización de Secrets Manager o Recuperar parámetros Utilización del Parameter Store de Systems Manager.