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

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.

Transferencia de variables de entorno a un contenedor

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.

Las variables de entorno especificadas en la definición de tarea son aptas para que las lean todos los usuarios y roles a los que se les permite la acción DescribeTaskDefinition para la definición de tareas.

Los archivos de variables de entorno son objetos de Amazon S3 y se aplican todas las consideraciones de seguridad de Amazon S3. Consulte la siguiente sección Permisos de IAM necesarios.

Puede transferir variables de entorno a sus contenedores de las siguientes maneras:

  • Individualmente con el parámetro de definición de contenedor environment. Se mapea con la opción --env para docker run.

  • En bloque, mediante el parámetro de definición de contenedor de environmentFiles para enumerar uno o más archivos que contienen las variables de entorno. El archivo debe estar alojado en Amazon S3. Se mapea con la opción --env-file para docker run.

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. Los archivos deben utilizar una extensión de archivo .env y hay un límite de diez archivos para una definición de tareas.

No aplicamos 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 disco. Cada tarea que utiliza un archivo de variables de entorno hace que se descargue una copia del archivo en el disco. Eliminamos el archivo como parte de la limpieza de tareas.

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

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

{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environment": [ { "name": "variable", "value": "value" } ], ... } ], ... }

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:::s3_bucket_name/envfile_object_name.env", "type": "s3" } ], ... } ], ... }

Consideraciones para especificar archivos de variables de 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 AWS Fargate.

    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.

  • 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. 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 Declarar variables de entorno predeterminadas en el archivo.

    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.

Permisos de IAM necesarios

Se requiere el rol de ejecución de tareas de Amazon ECS para utilizar esta característica. 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.

Para proporcionar acceso a los objetos de Amazon S3 que cree, agregue manualmente los siguientes permisos como una política insertada al rol de ejecución de tareas. Utilice el parámetro Resource para asignar el permiso a los buckets de Amazon S3 que contienen los archivos de variables de entorno. Para obtener más información, consulte Adición y eliminación de políticas de IAM.

  • s3:GetObject

  • s3:GetBucketLocation

En el ejemplo a continuación, se agregan los permisos a la política insertada.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/env_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }