Por que não consigo montar meus volumes do Amazon EFS em minhas tarefas do Amazon ECS?

13 minuto de leitura
0

Quando monto volumes do Amazon Elastic File System (Amazon EFS) em minhas tarefas do Amazon Elastic Container Service (Amazon ECS), recebo erros.

Breve descrição

Definições incorretas nas configurações a seguir podem causar problemas quando você monta seus volumes do Amazon EFS em suas tarefas do Amazon ECS:

  • O sistema de arquivos do EFS
  • Grupos de segurança e listas de controle de acesso à rede (ACLs de rede)
  • Configurações da Amazon Virtual Private Cloud (Amazon VPC)
  • Cruze as configurações da VPC quando seu volume do Amazon EFS estiver em uma VPC diferente das suas tarefas
  • Políticas e permissões de perfil do AWS Identity and Access Management (AWS IAM)

Resolução

Determine a causa do problema

Use o runbook AWS Support-TroubleshootECSTaskFailedToStart para determinar o problema. Use o runbook na mesma região AWS em que seus recursos de cluster do Amazon ECS estão localizados. Além disso, use o ID da tarefa que falhou mais recentemente. Se a tarefa com falha fizer parte do serviço Amazon ECS, use a tarefa que falhou mais recentemente no serviço. A tarefa com falha deve estar visível em ECS:DescribeTasks durante a execução da automação. Por padrão, as tarefas interrompidas do ECS ficam visíveis por 1 hora após entrarem no estado Interrompido.

Com base na saída da automação, use uma das seguintes etapas manuais de solução de problemas.

Verificar o sistema de arquivos do EFS, o grupo de segurança e a configuração da ACL de rede

Se você configurou incorretamente seu sistema de arquivos do EFS, grupos de segurança ou ACL de rede, receberá um erro semelhante aos exemplos a seguir:

“ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: Connection timed out’ : unsuccessful EFS utils command execution; code: 32”

-or-

“ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: mount.nfs4: Connection reset by peer : unsuccessful EFS utils command execution; code: 32”

Sistema de arquivos do EFS

Verifique se você criou seus destinos de montagem do sistema de arquivos do EFS e se eles estão disponíveis na mesma zona de disponibilidade e sub-rede das suas tarefas.

Para verificar a zona de disponibilidade dos destinos de montagem, conclua as seguintes etapas:

  1. Abra o console do Amazon EFS.
  2. No painel de navegação, escolha Sistemas de arquivos.
  3. Selecione seu sistema de arquivos.
  4. Escolha Rede para exibir a lista de destinos de montagem e as configurações de rede.
  5. Observe as zonas de disponibilidade da sub-rede em que o sistema de arquivos do Amazon EFS montou os volumes.
  6. Abra o console do Amazon ECS.
  7. No painel de navegação, escolha Clusters.
  8. Selecione o cluster.
  9. Escolha a guia Tarefas.
  10. Escolha o ID da tarefa.
  11. Em Configuração, escolha a ID da sub-rede.
    Observação: essa ação abre uma nova guia em seu navegador no console da Amazon VPC.
  12. Verifique a zona de disponibilidade da sub-rede para verificar se ela corresponde à zona de disponibilidade do sistema de arquivos do Amazon EFS. Se a zona de disponibilidade do sistema de arquivos do Amazon EFS não corresponder, crie um destino de montagem na zona de disponibilidade correta.

Grupos de segurança e ACLs de rede

O grupo de segurança de destino de montagem do sistema de arquivos do EFS deve permitir o tráfego NFS das tarefas via TCP na porta 2049.

Para verificar a porta, conclua as etapas a seguir:

  1. Abra o console do Amazon EFS.
  2. No painel de navegação, escolha Sistemas de arquivos.
  3. Selecione o sistema de arquivos que você deseja verificar.
  4. Escolha Rede para exibir a lista de alvos de montagem e os grupos de segurança associados. Verifique as regras de entrada para garantir que elas permitam tráfego TCP a partir de endereços IP de tarefas na porta 2049.
  5. (Opcional) Para modificar os grupos de segurança associados, escolha Gerenciar.

É uma prática recomendada restringir o acesso na porta 2049 com base na origem da conexão. Se todos os clientes estiverem em uma sub-rede específica, use o intervalo de endereços IP da sub-rede. Se todos os clientes estiverem dentro da VPC associada ao Amazon EFS, use o CIDR da VPC. Se os clientes forem de redes remotas, use um intervalo de endereços IP que corresponda a essas redes.

As sub-redes devem permitir o tráfego de rede entre seu sistema de arquivos do Amazon EFS e suas tarefas do Amazon ECS.

Para verificar a configuração do tráfego de rede, conclua as etapas a seguir:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, escolha Suas VPCs.
  3. Selecione sua VPC.
  4. Em Detalhes, em ACL de rede principal, escolha seu ID.
  5. Certifique-se de que as regras de entrada e saída em sua VPC permitam tráfego NFS por TCP a partir de endereços IP de tarefas na porta 2049.

Verificar a configuração da Amazon VPC

Se você não configurou corretamente sua Amazon VPC, receberá um erro semelhante ao exemplo a seguir:

“ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve “fs-abcdefgxyz.efs.us-east-1.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.”

Ativar a resolução de DNS e os nomes de host

Você deve ativar a resolução de DNS e os nomes de host DNS no conjunto de opções do Protocolo de Configuração Dinâmica de Host (DHCP) da VPC.

Observação: os nomes de host DNS são desativados por padrão.

Certifique-se de que seu servidor DNS personalizado possa resolver o nome DNS do seu volume

É uma prática recomendada usar o AmazonProvidedDNS para seus conjuntos de opções de DHCP da VPC. Se você usar um servidor DNS personalizado em vez disso, deverá configurar um encaminhador de DNS condicional no arquivo de configuração do servidor DNS.

Inclua as seguintes configurações:

  • Todas as consultas de DNS aos recursos da AWS (*.amazonaws.com) devem ir para o servidor DNS padrão da VPC.
  • O endereço IP deve ser o intervalo CIDR IPV4 privado principal que é provisionado para sua VPC mais dois (x.y.z.2) ou 169.254.169.253. Por exemplo, para o CIDR 10.0.0.0/16, o endereço IP padrão do servidor DNS da VPC é 10.0.0.2.

Definir as configurações para um volume do Amazon EFS que esteja em uma VPC diferente da instância de contêiner

Para montar um volume do Amazon EFS a partir de uma VPC diferente da instância de contêiner, você deve criar uma conexão de emparelhamento da VPC entre as VPCs. Outra alternativa é criar um gateway de trânsito. Em seguida, use as seguintes etapas de solução alternativa com base no local em que suas tarefas são executadas.

Instâncias do Amazon EC2

Para tarefas executadas no Amazon Elastic Compute Cloud (Amazon EC2), faça login na sua instância do EC2 e instale o botocore.

Observação: o efs-utils usa o botocore para interagir com outros serviços da AWS. Para ver as etapas de instalação, consulte Instalar o botocore no site do GitHub.

Somente um serviço de DNS fornecido pela Amazon na mesma VPC do sistema de arquivos do EFS pode resolver o nome DNS do Amazon EFS. Para codificar o endereço IP da montagem do Amazon EFS no arquivo /etc/hosts da máquina, execute o seguinte comando:

echo "mount-target-IP-address fs-id.efs.region.amazonaws.com" | sudo tee -a /etc/hosts

Observação: substitua mount-target-IP-address pelo endereço IP de destino da montagem, fs-id pelo ID do sistema de arquivos do EFS e region pela sua região. Recursos fora da VPC ainda não conseguem resolver o nome DNS.

Tarefas do Fargate

Na solução alternativa a seguir, a VPC A é a VPC em que as tarefas do Amazon ECS estão em execução e o cliente Amazon EFS está localizado. A VPC B é a VPC do volume do Amazon EFS. A solução alternativa usa o Amazon Route 53 Resolver para não codificar dados. Para obter informações sobre preços, consulte Preços do Amazon Route 53.

Pré-requisitos:

  • As VPCs A e B usam o serviço DNS fornecido pela Amazon. Ou seu servidor DNS personalizado usa um encaminhador de DNS condicional no arquivo de configuração do servidor DNS.
  • As regras de entrada do grupo de segurança do Amazon EFS permitem o tráfego NFS por TCP na porta 2049 para a VPC A CIDR.

Se suas tarefas forem executadas no AWS Fargate, conclua as etapas a seguir:

  1. Crie um endpoint de entrada do Route 53 na VPC B e defina as seguintes configurações:
    Para VPC na região region-name, selecione VPC B.
    Em Grupo de segurança do endpoint, selecione um grupo de segurança que permita tráfego TCP e UDP de entrada da VPC A na porta 53.
    Em Endereços IP, crie dois endereços IP.
    Observação: quando seu servidor resolve o nome DNS, ele normalmente retorna o endereço IP do ponto de montagem que está na mesma zona de disponibilidade do seu cliente. Quando você usa essa solução alternativa, suas consultas de DNS se originam do endpoint de entrada. Como resultado, a zona de disponibilidade do endpoint de entrada determina o endereço IP retornado.
    Para retornar um único endereço IP para seu sistema de arquivos do EFS, configure um único ponto de montagem. Ou coloque os dois endereços IP na mesma zona de disponibilidade. Se você selecionar zonas de disponibilidade diferentes, o nome DNS retornará um endereço IP diferente com base no endpoint de entrada que encaminhou sua consulta.
  2. Crie um endpoint de saída do Route 53 na VPC A e defina as seguintes configurações:
    Para VPC na região region-name, selecione VPC A.
    Em Grupo de segurança do endpoint, selecione um grupo de segurança que permita tráfego TCP e UDP de saída para a VPC B na porta 53.
  3. Crie uma regra de resolução do Route 53 para encaminhar consultas de DNS para o nome DNS do Amazon EFS para o Amazon DNS na VPC B.
    Defina as seguintes configurações:
    Em Nome de domínio, insira o nome DNS completo do seu sistema de arquivos do EFS, por exemplo, fs-abcdef.efs.eu-west-1.amazonaws.com.
    Em VPCs que usam essa regra, selecione VPC A.
    Em Endpoint de saída, selecione o endpoint de saída na VPC A.
    Em Endereços IP de destino, insira os dois endereços IP do endpoint de entrada do Route 53 na VPC B.
  4. Para verificar se é possível montar seu volume do Amazon EFS com o nome DNS, execute os seguintes comandos no seu cliente:
    sudo mount.efs fs-abcdefxyz /mnt
    dig fs-abcdefxyz.efs.region.amazonaws.com
    Observação: substitua region pela sua região e fs-abdcexzy pelo ID do volume do sistema de arquivos.

Verificar as políticas e permissões do perfil do IAM

Se você tiver problemas com suas políticas e permissões do perfil do IAM, receberá um erro semelhante aos exemplos a seguir:

“ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: access denied by server while mounting 127.0.0.1:/' : unsuccessful EFS utils command execution; code: 32”

-or-

“ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: mounting fs-xxx.efs.us-east-1.amazonaws.com:/dir failed, reason given by server: No such file or directory’ : unsuccessful EFS utils command execution; code: 32”

As permissões que você define nos seguintes recursos podem controlar o acesso ao sistema de arquivos do EFS:

  • Política do IAM para perfil de tarefa do Amazon ECS
  • Políticas do sistema de arquivos do EFS
  • As permissões POSIX atribuídas ao seu ponto de acesso
  • A ACL de rede e os grupos de segurança
    Observação: para verificar a ACL de rede e grupos de segurança, consulte a seção Grupos de segurança e ACLs de rede.

Verificar as permissões de tarefas do Amazon ECS

Observação: para identificar a ID do perfil de execução da tarefa, verifique o valor executionRoleARN no arquivo JSON de definição da tarefa. Para mais informações sobre como acessar o arquivo JSON, consulte a Etapa 5: Criar uma definição de tarefa.

Certifique-se de que o perfil de execução de tarefas do Amazon ECS tenha as permissões necessárias para localizar e montar um sistema de arquivos do Amazon EFS em sua tarefa.

Conclua as etapas a seguir:

  1. Abra o console do IAM.
  2. No painel de navegação, escolha Perfis.
  3. Na barra de pesquisa, insira o nome do perfil de execução de tarefas e escolha o respectivo perfil.
  4. Escolha Políticas de permissões para expandir todas as políticas anexadas. Certifique-se de que a lista inclua as seguintes permissões:
    elasticfilesystem:ClientMount
    elasticfilesystem:ClientWrite
    elasticfilesystem:DescribeMountTargets
    elasticfilesystem:DescribeFileSystems

Para adicionar as permissões ao perfil de execução da tarefa, conclua as etapas a seguir:

  1. Abra o console do IAM.
  2. No painel de navegação, selecione Políticas.
  3. Selecione Criar política.
  4. Em Serviço, escolha EFS.
  5. Expanda a seção Ações permitidas.
  6. Selecione as permissões ClientMount, ClientWrite, DescribeMountTargets e DescribeFileSystems.
  7. Selecione os recursos nos quais o perfil pode realizar essas ações e, em seguida, escolha Avançar.
  8. Insira o nome e a descrição da política e escolha Criar política.
  9. No painel de navegação, escolha Perfis.
  10. Na barra de pesquisa, insira o nome do perfil de execução de tarefas e escolha o respectivo perfil.
  11. Escolha Adicionar permissões e, em seguida, escolha Anexar políticas.
  12. Selecione sua nova política.
  13. Escolha Adicionar permissões.

Verificar a política de sistema de arquivos do EFS

Conclua as etapas a seguir:

  1. Abra o Console do Amazon EFS.

  2. Escolha Sistemas de arquivos e, em seguida, selecione seu sistema de arquivos.

  3. Certifique-se de que a Política do sistema de arquivos permita que o perfil de execução da tarefa monte o volume EFS.
    Exemplo de política:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "ECS Tasks - EFS Access",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::account-id:role/ecs-task-execution-role-name"
          },
          "Action": [
            "elasticfilesystem:ClientMount",
            "elasticfilesystem:ClientWrite",
            "elasticfilesystem:DescribeMountTargets",
            "elasticfilesystem:DescribeFileSystems",
          ]
        }
      ]
    }
  4. Para adicionar mais Permissões do IAM à política, adicione uma nova política de sistema de arquivos. Ou adicione instruções para permitir que seus clientes usem seu volume do Amazon EFS para modificar a política atual.

Verificar as permissões POSIX

Se você usa pontos de acesso com um caminho de diretório-raiz personalizado, certifique-se de ter permissões de criação de usuário e diretório-raiz POSIX. Para mais informações sobre solução de problemas, consulte Falha na montagem com ponto de acesso.

Informações relacionadas

Criar sistemas de arquivos EFS

Gerenciar destinos de montagem

Como faço para montar um sistema de arquivos do Amazon EFS em um contêiner ou tarefa do Amazon ECS em execução no Fargate?

A montagem do sistema de arquivos falha imediatamente após a criação do sistema de arquivos

Guia para desenvolvedores sobre como usar o Amazon EFS com o Amazon ECS e o AWS Fargate — parte 2

AWS OFICIAL
AWS OFICIALAtualizada há 3 meses