Como soluciono problemas de conexão entre minha tarefa do Fargate e outros serviços da AWS?

5 minuto de leitura
0

Quero solucionar problemas de conexão entre minha tarefa do AWS Fargate e outro serviço da AWS.

Breve descrição

Aplicações executadas dentro de uma tarefa do Fargate com o Amazon Elastic Container Service (Amazon ECS) podem deixar de acessar outros serviços da AWS devido aos seguintes motivos:

  • Permissões insuficientes do AWS Identity and Access Management (AWS IAM)
  • Rotas de sub-rede incorretas
  • Restrições da lista de controle de acesso à rede (ACL de rede)
  • Regras incorretas do grupo de segurança
  • Configurações incorretas do endpoint Amazon Virtual Private Cloud (Amazon VPC)

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Configurar e usar o ECS Exec

Use o ECS Exec para interagir com o contêiner de aplicações da sua tarefa do Fargate. Atenda aos pré-requisitos para usar o ECS Exec. Em seguida, ative o ECS Exec para sua tarefa do Fargate.

Se o contêiner da sua aplicação não oferecer suporte a sessões de shell para executar o ECS Exec, use uma imagem do Docker aws-cli para criar uma nova tarefa do Fargate. A nova tarefa deve estar na mesma sub-rede e VPC da sua tarefa atual do Fargate.

Configure conexões entre o Amazon ECS e outros endpoints de serviços da AWS

Se suas tarefas do Amazon ECS não conseguirem se conectar a outros serviços, verifique se você atende às seguintes condições:

  • O URL do endpoint está correto, incluindo o protocolo (http:// ou https://), nome do host e porta. Configure seus endpoints de VPC com sub-redes que se alinham à sua configuração de sub-rede de serviços do Amazon ECS.
  • As sub-redes que seu serviço Amazon ECS usa devem ter as configurações de DNS corretas para resolver seus URLs de endpoint, seja um DNS fornecido pela Amazon ou um resolvedor personalizado.
  • O grupo de segurança vinculado às suas tarefas do Amazon ECS deve permitir o acesso externo à porta e ao protocolo do serviço de destino.
  • As listas de controle de acesso à rede (ACLs) na sub-rede devem permitir o tráfego de e para os endpoints de serviço necessários.

Teste a conexão entre sua tarefa do Fargate e o endpoint de serviço da AWS

Para testar a conexão da sua tarefa do Fargate com seu endpoint e porta de serviço da AWS, execute o seguinte comando telnet em seu contêiner:

telnet endpoint-url port

Observação: No comando anterior, substitua endpoint-url pelo URL do endpoint do seu serviço e port pelo número da porta do serviço.

Se a conexão for bem-sucedida, você obterá o seguinte exemplo de saída:

Trying 10.0.1.169...  
Connected to sns.us-east-1.amazonaws.com.  
Escape character is '^]'.

Para testar a resolução de DNS do seu endpoint, execute o seguinte comando nslookup:

nslookup example-endpoint

Exemplo de saída:

Name: sns.us-east-1.amazonaws.com  
Address: 10.0.1.169

Se você não instalou os comandos telnet ou nslookup em seu contêiner, execute um dos comandos a seguir para instalá-los.

Contêineres baseados em Debian:

apt-get update
apt-get install -y dnsutils telnet

Contêineres Amazon Linux:

yum install -y bind-utils telnet

Solucionar erros de tempo limite de conexão

Se você receber erros de tempo limite de conexão, verifique sua configuração de rede.

Regras do grupo de segurança

Se o tráfego for direcionado por meio de um endpoint da VPC, o grupo de segurança do endpoint deverá permitir o tráfego TCP na porta 443 a partir de um dos seguintes:

  • O grupo de segurança da tarefa do Amazon ECS
  • O bloco CIDR da VPC

Configure o grupo de segurança da tarefa para permitir o tráfego de saída para o endpoint da VPC do serviço.

Roteamento VPC

Para sub-redes públicas, a tarefa Fargate deve ter uma rota padrão de 0.0.0.0/0 que aponta para o gateway da Internet.

Para sub-redes privadas, a tabela de rotas deve ter uma rota para um gateway NAT ou um gateway de trânsito de acordo com sua arquitetura.

Configurações de proxy

Se sua tarefa do Amazon ECS usa um servidor de proxy, certifique-se de que a configuração do proxy permita tráfego para seu endpoint de serviço.

Analise os logs de fluxo de VPC

Se você ainda tiver problemas de conexão, use os Amazon VPC Flow Logs para ver os detalhes do fluxo de tráfego.

Solucionar problemas de permissões do IAM

Verifique se a função de tarefa do Amazon ECS concede permissões ao contêiner da aplicação para interagir com outros serviços da AWS.

Por exemplo, é possível receber os seguintes erros ao tentar se conectar a um endpoint do Amazon Simple Notification Service (Amazon SNS).

Exemplo de mensagem de erro da política de endpoint da VPC:

“Ocorreu um erro (AuthorizationError) ao chamar a operação ListTopics: O usuário: arn:aws:sts::123456789012:assumed-role/taskrole/123456789012 não está autorizado a realizar: SNS:ListTopics on resource: arn:aws:sns:region-name:123456789012:* com uma negação explícita em uma política de endpoint da VPC”

Para resolver esse problema, conceda ao endpoint da VPC da Amazon permissão para realizar as ações necessárias em seus serviços da AWS. Na mensagem de erro do exemplo anterior, o endpoint da VPC da Amazon deve ter a permissão ListTopics.

Exemplo de mensagem de erro de permissão de função de tarefa:

“Ocorreu um erro (AuthorizationError) ao chamar a operação ListTopics: O usuário: arn:aws:sts::123456789012:assumed-role/taskrole/123456789012 não está autorizado a realizar: SNS:ListTopics on resource: arn:aws:sns:region-name:123456789012:* porque nenhuma política baseada em identidade permite a ação sns:listTopics”

Para resolver esse problema, conceda que o perfil do IAM da tarefa do Amazon ECS tenha permissões para realizar as ações necessárias nos serviços destinatários. Na mensagem de erro do exemplo anterior, o perfil do IAM deve ter a permissão ListTopics.

AWS OFICIAL
AWS OFICIALAtualizada há 2 meses