Transferência de variáveis ​​de ambiente para um contêiner do Amazon ECS - Amazon Elastic Container Service

Transferência de variáveis ​​de ambiente para um contêiner do Amazon ECS

Importante

Recomendamos armazenar seus dados sigilosos em segredos do AWS Secrets Manager ou parâmetros do AWS Systems Manager Parameter Store. Para ter mais informações, consulte Transferência de dados confidenciais para um contêiner do Amazon ECS.

Arquivos de variáveis de ambiente são objetos no Amazon S3 e todas as considerações de segurança do Amazon S3 se aplicam.

Não é possível usar o parâmetro environmentFiles em contêineres do Windows e em contêineres do Windows no Fargate.

Você pode criar um arquivo de variável de ambiente e armazená-lo no Amazon S3 para passar variáveis de ambiente ao contêiner.

Ao especificar variáveis de ambiente em um arquivo, é possível injetar variáveis de ambiente em massa. Na definição do contêiner, especifique o objeto environmentFiles com uma lista de buckets do Amazon S3 que contêm seus arquivos de variáveis de ambiente.

O Amazon ECS não impõe um limite de tamanho às variáveis de ambiente, mas um arquivo de variáveis de ambiente grande pode ocupar o espaço em disco. Cada tarefa que usa um arquivo de variáveis de ambiente faz com que uma cópia do arquivo seja baixada no disco. O Amazon ECS remove o arquivo como parte da limpeza da tarefa.

Para obter informações sobre as variáveis de ambiente com suporte, consulte Parâmetros avançados de definição de contêiner - Ambiente.

Considere o seguinte ao especificar um arquivo de variáveis de ambiente em uma definição de contêiner.

  • Para tarefas do Amazon ECS no Amazon EC2, suas instâncias de contêiner exigem que o agente seja da versão 1.39.0 ou posterior para usar esse recurso. Para obter informações sobre como verificar a versão do agente e atualizar para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS.

  • Para tarefas do Amazon ECS no AWS Fargate, as tarefas devem usar a versão 1.4.0 ou posterior (Linux) da plataforma para usar este recurso. Para ter mais informações, consulte Versões da plataforma do Fargate para o Amazon ECS.

    Verifique se há suporte para a variável para a plataforma do sistema operacional. Para ter mais informações, consulte Definições de contêiner e Outros parâmetros de definição de tarefa.

  • O arquivo deve usar a extensão .env e a codificação UTF-8.

  • O perfil de execução da tarefa é necessário para usar esse recurso com as permissões adicionais para o Amazon S3. Isso permite que o agente de contêiner extraia o arquivo de variáveis de ambiente do Amazon S3. Para ter mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.

  • Há um limite de dez arquivos por definição de tarefa.

  • Cada linha em um arquivo de ambiente deve conter uma variável de ambiente no formato VARIABLE=VALUE. Espaços ou aspas são incluídos como parte dos valores para arquivos do Amazon ECS. As linhas que começam com # são tratadas como comentários e são ignoradas. Para obter mais informações sobre a sintaxe de arquivos de variáveis de ambiente, consulte Definir variáveis de ambiente (-e, --env, --env-file) na documentação do Docker.

    Confira a sintaxe apropriada a seguir.

    #This is a comment and will be ignored VARIABLE=VALUE ENVIRONMENT=PRODUCTION
  • Se houver variáveis de ambiente especificadas usando o parâmetro environment em uma definição de contêiner, elas terão precedência sobre as variáveis contidas em um arquivo de ambiente.

  • Se forem especificados vários arquivos de ambiente que contenham a mesma variável, elas serão processadas na ordem de entrada. Isso significa que o primeiro valor da variável é usado e os valores subsequentes de variáveis duplicadas são ignorados. Recomendamos usar nomes de variáveis exclusivos.

  • Se um arquivo de ambiente for especificado como substituição de contêiner, ele será utilizado. Além disso, quaisquer outros arquivos de ambiente especificados na definição de contêiner são ignorados.

  • As regras a seguir se aplicam ao tipo de inicialização do Fargate:

    • O arquivo é tratado de forma semelhante a um arquivo env nativo do Docker.

    • As definições de contêiner que fazem referência a variáveis de ambiente que estão em branco e armazenadas no Amazon S3 não aparecem no contêiner.

    • Não há suporte para o tratamento de escape de shell.

    • O ponto de entrada do contêiner interpreta os valores VARIABLE.

Exemplo

Veja a seguir um trecho de uma definição de tarefa que mostra como especificar um arquivo de variável de ambiente.

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