Quero solucionar minha tarefa do Amazon Elastic Container Service (Amazon ECS) que não inicia. A tarefa não inicia devido a problemas com o nome DNS do meu sistema de arquivos Amazon Elastic File System (Amazon EFS).
Breve descrição
Quando você faz referência ao sistema de arquivos do EFS e ao ponto de montagem de contêiner na sua definição de tarefas do ECS, o ECS monta o sistema de arquivos no seu contêiner. Quando você usa a definição de tarefa do ECS com uma montagem de volume do EFS para executar uma tarefa do ECS, a tarefa falha com o seguinte erro:
"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve "fs-<id>.efs.<region>.amazonaws.com" - check that your file system ID is correct, and ensure that the VPC has an EFS mount target for this file system ID. See https://docs.aws.amazon.com/console/efs/mount-dns-name for more detail. Attempting to lookup mount target ip address using botocore. Failed to import necessary dependency botocore, please install botocore first."
O erro ocorre pelos seguintes motivos:
- Você usa um nome de domínio e servidores personalizados em sua nuvem privada virtual (VPC) em vez do AmazonProvidedDNS.
- Seus nomes de host DNS da VPC estão desativados.
- Seu EFS não tem destinos de montagem ou os destinos não estão na mesma zona de disponibilidade que suas tarefas do ECS.
Quando o nome DNS não resolve um sistema de arquivos do EFS, o ECS usa as ferramentas efs-util para instalar o botocore e recuperar o endereço IP de destino da montagem. Como o botocore não está instalado em AMIs otimizadas para ECS por padrão, a tarefa falha.
Resolução
Você tem um nome de domínio e servidores personalizados em sua VPC
Para tarefas executadas no Amazon EC2
Observação: Essas etapas se aplicam somente às instâncias do Amazon EC2.
- Use SSH para se conectar à instância de contêiner. Para instalar o botocore, execute o seguinte comando:
sudo pip3 install botocore --upgrade
Instale o botocore durante a execução da instância como parte do UserData que você configura em seu grupo do Auto Scaling para instâncias de contêiner.
- Adicione as seguintes permissões ao perfil do AWS Identity and Access Management (AWS IAM) para a instância do contêiner:
elasticfilesystem:DescribeMountTargets
ec2:DescribeAvailabilityZones
Para tarefas executadas no Fargate
Para permitir que seus servidores de nomes de domínio personalizados resolvam recursos da AWS, configure o encaminhamento de DNS condicional.
Observação: Para instâncias do AWS Fargate, não é possível acessar a instância para instalar o botocore e deve usar a resolução do nome DNS.
Seus nomes de host DNS da VPC estão desativados
Para revisar os atributos de DNS, conclua as etapas em Atributos de DNS. Se os nomes de host DNS estiverem desativados, ative-os e verifique se as tarefas do ECS estão em execução.
Seu EFS não tem destinos de montagem ou os destinos não estão na mesma zona de disponibilidade que suas tarefas do ECS
Seu sistema de arquivos do EFS deve ter destinos de montagem e os destinos devem estar na mesma zona de disponibilidade das tarefas do ECS. Para obter mais informações, consulte Como criar e gerenciar destinos de montagem e grupos de segurança.
Informações relacionadas:
Using botocore to retrieve the mount target IP address when the DNS name cannot be resolved (Usar o botocore para recuperar o endereço IP de destino de montagem quando o nome DNS não pode ser resolvido) no site do GitHub