Ir para o conteúdo

Como soluciono problemas com minha conexão entre o Amazon ECS e o Amazon S3?

5 minuto de leitura
0

Quero acessar o Amazon Simple Storage Service (Amazon S3) a partir das minhas tarefas do Amazon Elastic Container Service (Amazon ECS), mas estou enfrentando problemas de conexão.

Resolução

Analise seus CloudWatch Logs para identificar a causa dos problemas de acesso ao Amazon S3

Primeiro, configure o acesso ao CloudWatch Logs. Em seguida, use o CloudWatch Logs Insights para identificar a causa do seu problema.

Configure o acesso ao CloudWatch Logs

Para configurar o Amazon CloudWatch Logs para sua definição de tarefa do Amazon ECS, conclua as seguintes etapas:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, selecione Definições de tarefa.
  3. Selecione sua definição de tarefa e adicione o seguinte código à definição da tarefa:
    {
        "containerDefinitions": [
            {
                "name": "my-container",
                "image": "my-image:latest",
                "logConfiguration": {
                    "logDriver": "awslogs",
                    "options": {
                        "awslogs-group": "/ecs/my-task",
                        "awslogs-region": "region-code",
                        "awslogs-stream-prefix": "ecs"
                    }
                }
            }
        ]
    }
    Observação: Substitua my-container pelo nome da instância de contêiner, my-image:latest pelo nome e tag da sua imagem e region-code pela sua região da AWS.
  4. Atualize seu serviço do Amazon ECS para usar a versão mais recente da definição da tarefa.

Use o CloudWatch Logs Insights para identificar a causa do seu problema

Para pesquisar erros gerais do Amazon S3, execute a seguinte consulta:

filter @message like /S3|AccessDenied|NoSuchBucket/

Para pesquisar problemas específicos de acesso ao bucket, execute a seguinte consulta:

filter @message like /my-bucket-name/

Observação: Substitua my-bucket-name pelo nome do seu bucket.

Use essas informações para identificar se o problema está relacionado às permissões do AWS Identity and Access Management (AWS IAM), conectividade de rede, configuração de bucket ou problemas de aplicações. Em seguida, conclua as etapas de solução de problemas relacionadas.

Verifique sua configuração de perfil do IAM

Verifique se o perfil de tarefa da tarefa do Amazon ECS tem as permissões necessárias do Amazon S3, por exemplo, a política AmazonS3ReadOnlyAccess para operações somente de leitura. Revise os logs do AWS CloudTrail para identificar ações negadas relacionadas ao Amazon S3. Por exemplo, se sua tarefa do Amazon ECS deve ler objetos do bucket my-app-data, anexe a seguinte política personalizada à tarefa:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::my-app-data",
                "arn:aws:s3:::my-app-data/*"
            ]
        }
    ]
}

Observação: A política anterior permite que a tarefa liste o conteúdo e recupere objetos do bucket my-app-data.

Verifique sua configuração de rede

Tarefas em sub-redes públicas

Para tarefas em sub-redes públicas, verifique a lista de controle de acesso à rede (ACL da rede) da nuvem privada virtual (VPC) em que sua instância está. A ACL da rede deve permitir tráfego de saída na porta 443. Além disso, verifique se os grupos de segurança associados à sua tarefa permitem tráfego HTTPS de saída na porta 443 para as listas de prefixos gerenciados pela AWS do Amazon S3.

Tarefas em sub-redes privadas

Para tarefas em sub-redes privadas, verifique se um gateway NAT está associado à tabela de rotas da sub-rede. O gateway NAT cria um caminho de internet para alcançar o endpoint do Amazon S3. Se você usa um endpoint da VPC para o Amazon S3, verifique a tabela de rotas associada à sua VPC para o endpoint de gateway do Amazon S3. Verifique se a tabela de rotas inclui uma rota para a lista de prefixos gerenciados pela AWS do Amazon S3 que direciona o tráfego para o endpoint de gateway do Amazon S3. Essa rota garante que as solicitações para o Amazon S3 não sejam enviadas pela internet pública.

Ao usar um endpoint de interface do Amazon S3, verifique se os grupos de segurança anexados ao endpoint permitem tráfego HTTPS de entrada na porta 443. Além disso, certifique-se de que a configuração de DNS privado do endpoint e as configurações de DNS Habilitar nomes de host DNS e Habilitar suporte DNS da VPC estejam ativadas. Por fim, verifique se a aplicação usa o endpoint s3.region.amazonaws.com, não o endpoint global s3.amazonaws.com.

Teste a conectividade da rede das tarefas do Amazon ECS aos endpoints do Amazon S3

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

Verifique se a configuração da sua rede, incluindo firewalls e grupos de segurança, permite o tráfego para os endpoints do Amazon S3.

Observação: É possível usar o ECS Exec para executar os seguintes comandos.

Para testar a conexão HTTPS com o endpoint do Amazon S3 na porta 443, execute o seguinte comando telnet ou curl:

telnet s3.region-code.amazonaws.com 443
curl -v https://s3.region-code.amazonaws.com

Observação: Substitua region-code pela sua Região. Talvez seja necessário instalar o comando telnet.

Para testar se a instância de contêiner pode autenticar e realizar operações do Amazon S3, execute o comando ls da AWS CLI:

aws s3 ls

Se o teste anterior falhar, revise seus grupos de segurança, ACLs da rede e regras de firewall para verificar se há portas bloqueadas.

Informações relacionadas

Como solucionar erros 403 Acesso Negado do Amazon S3?

Como posso acessar outros serviços da AWS a partir de minhas tarefas do Amazon ECS no Fargate?

Como soluciono um erro de conexão ao executar os comandos "cp" ou no meu bucket do Amazon S3?"sync"

AWS OFICIALAtualizada há um ano