Transferencia de variables de entorno a un contenedor de Amazon ECS - Amazon Elastic Container Service

Transferencia de variables de entorno a un contenedor de Amazon ECS

importante

Recomendamos almacenar la información confidencial en cualquiera de los secretos de AWS Secrets Manager o en los parámetros AWS Systems Manager Parameter Store. Para obtener más información, consulte Transferencia de datos confidenciales a un contenedor de Amazon ECS.

Los archivos de variables de entorno son objetos de Amazon S3 y se aplican todas las consideraciones de seguridad de Amazon S3.

No puede utilizar el parámetro environmentFiles en los contenedores de Windows ni en los contenedores de Windows en Fargate.

Puede crear un archivo de variables de entorno y almacenarlo en Amazon S3 para pasar las variables de entorno a su contenedor.

Al especificar variables de entorno en un archivo, puede introducir variables de entorno en bloque. En la definición de contenedor, especifique el objeto environmentFiles con una lista de buckets de Amazon S3 con los archivos de variables de entorno.

Amazon ECS no aplica un límite de tamaño a las variables de entorno, pero un archivo de variables de entorno grande podría llenar el espacio en el disco. Cada tarea que utiliza un archivo de variables de entorno hace que se descargue una copia del archivo en el disco. Amazon ECS elimina el archivo como parte de la limpieza de tareas.

Para obtener información sobre las variables de entorno compatibles, consulte Parámetros de definición avanzada de contenedores: entorno.

Tenga en cuenta lo siguiente al especificar un archivo de variable de entorno en una definición de contenedor.

  • Para las tareas de Amazon ECS en Amazon EC2, las instancias de contenedor requieren la versión 1.39.0 del agente de contenedor o una posterior para utilizar esta característica. Para obtener información acerca de cómo comprobar la versión del agente y actualizar a la versión más reciente, consulte Actualización del agente de contenedor de Amazon ECS.

  • Para realizar tareas de Amazon ECS en AWS Fargate, sus tareas deben utilizar la versión 1.4.0 de la plataforma o una posterior (para Linux) a fin de utilizar esta característica. Para obtener más información, consulte Versiones de la plataforma Fargate para Amazon ECS.

    Compruebe que la variable sea compatible con la plataforma del sistema operativo. Para obtener más información, consulte Definiciones de contenedores y Otros parámetros de definición de tarea.

  • El archivo debe usar la extensión de archivo .env y la codificación UTF-8.

  • Se requiere el rol de ejecución de tareas para utilizar esta característica con los permisos adicionales para Amazon S3. De este modo el agente de contenedor puede extraer el archivo de variables de entorno de Amazon S3. Para obtener más información, consulte Rol de IAM de ejecución de tareas de Amazon ECS.

  • Hay un límite de 10 archivos por definición de tarea.

  • Cada línea de un archivo de entorno debe contener una variable de entorno con el formato VARIABLE=VALUE. Los espacios o las comillas se incluyen como parte de los valores para los archivos de Amazon ECS. Las líneas que comienzan por # se tratan como comentarios y se ignoran. Para obtener más información acerca de la sintaxis del archivo de variables de entorno, consulte Establecimiento de variables de entorno (-e, --env, --env-file) en la documentación de Docker.

    A continuación, se presenta la sintaxis adecuada.

    #This is a comment and will be ignored VARIABLE=VALUE ENVIRONMENT=PRODUCTION
  • Si hay variables de entorno especificadas mediante el parámetro environment en una definición de contenedor, tienen prioridad sobre las variables incluidas en un archivo de entorno.

  • Si se especifican varios archivos de entorno que contienen la misma variable, se procesan en orden de entrada. Esto significa que se utiliza el primer valor de la variable y se ignoran los valores posteriores de las variables duplicadas. Le recomendamos que utilice nombres de variables únicos.

  • Si se especifica un archivo de entorno como anulación de un contenedor, se utiliza. Además, se omite cualquier otro archivo de entorno especificado en la definición de contenedor.

  • Las siguientes reglas se aplican al tipo de lanzamiento de Fargate:

    • El archivo se gestiona como un archivo .env-file nativo de Docker.

    • Las definiciones de contenedor que hacen referencia a variables de entorno que están en blanco y almacenadas en Amazon S3 no aparecen en el contenedor.

    • No se admite la gestión del escape del intérprete de comandos.

    • El punto de entrada del contenedor interpreta los valores VARIABLE.

Ejemplo

A continuación, se presenta un fragmento de una definición de tarea que muestra cómo especificar un archivo de variable de entorno.

{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environmentFiles": [ { "value": "arn:aws:s3:::amzn-s3-demo-bucket/envfile_object_name.env", "type": "s3" } ], ... } ], ... }