Como posso solucionar problemas de endpoints de VPC na configuração de rede do meu ambiente privado do Elastic Beanstalk?

6 minuto de leitura
0

Quero solucionar problemas de rede em meu ambiente totalmente privado do AWS Elastic Beanstalk.

Breve descrição

Ambientes totalmente privados têm a seguinte configuração e permitem acesso ao seu aplicativo web somente a partir da mesma Amazon Virtual Private Cloud (Amazon VPC).

  • Visibilidade do balanceador de carga: Privado
  • Sub-redes do balanceador de carga: Ambas as sub-redes privadas
  • IP público da instância: Desativado
  • Sub-redes da instância: Ambas as sub-redes privadas

Toda a comunicação na VPC ocorre por meio de endpoints de VPC configurados. Além disso, toda a comunicação dentro da VPC ocorre por meio da rota local na tabela de rotas. Veja a seguir os erros comuns que você pode ver no ambiente devido às configurações de rede:

  • As instâncias do Amazon Elastic Compute Cloud (Amazon EC2) falharam na comunicação com o Elastic Beanstalk. A falha na comunicação ocorre devido a problemas de configuração com a VPC ou a uma falha na instância do EC2. Verifique sua configuração de VPC e tente executar o ambiente novamente.
  • As instâncias não responderam no tempo limite permitido para o comando.

Resolução

Ao criar um ambiente do Elastic Beanstalk totalmente privado, certifique-se de ter as seguintes configurações definidas:

  • Você deve ter uma VPC com pelo menos duas sub-redes privadas em diferentes zonas de disponibilidade.
  • A VPC deve ter nomes de host DNS e resoluções de DNS ativados. Ter essas opções ativadas adiciona uma entrada de DNS em sua VPC, que mapeia o endpoint de serviço público para o endpoint da VPC da interface.
  • Você deve criar endpoints de VPC para que os serviços da AWS fora da VPC e a instância dentro da VPC possam se comunicar por meio desses endpoints.

Verifique os endpoints de VPC

Um ambiente padrão do Elastic Beanstalk deve ter os seguintes endpoints de VPC para uma criação bem-sucedida:

  • com.amazonaws.your-region.elasticbeanstalk (endpoint da interface do Elastic Beanstalk)
  • com.amazonaws.your-region.elasticbeanstalk-health (endpoint da interface de saúde do Elastic Beanstalk)
  • com.amazonaws.your-region.cloudformation (endpoint da interface do AWS CloudFormation)
  • com.amazonaws.your-region.logs (endpoint da interface de logs)
  • com.amazonaws.your-region.sqs (endpoint da interface do Amazon Simple Queue Service (Amazon SQS))
  • com.amazonaws.your-region.s3 (endpoint de gateway do Amazon Simple Storage Service (Amazon S3))

Os ambientes executados na plataforma Docker que roda no Amazon Linux 2 de 64 bits devem ter os seguintes endpoints de VPC adicionais:

  • com.amazonaws.your-region.ecr.dkr
  • com.amazonaws.your-region.ecr.api

Os ambientes executados na plataforma do Amazon Elastic Container Service (Amazon ECS) que roda no Amazon Linux 2 de 64 bits devem ter os seguintes endpoints de VPC adicionais:

  • com.amazonaws.your-region.ecs
  • com.amazonaws.your-region.ecr.api
  • com.amazonaws.your-region.ecr.dkr

Observação: Para garantir que seus ambientes Docker e Multi-Docker funcionem corretamente, forneça uma imagem do Docker privada.

Verifique o grupo de segurança

Ao criar o endpoint da VPC da interface, você deve escolher as sub-redes e o grupo de segurança para seu endpoint da VPC. Certifique-se de escolher sub-redes privadas e o grupo de segurança com as regras de entrada apropriadas.

O grupo de segurança anexado aos endpoints de VPC da interface deve ter uma regra de entrada para a porta 443 (HTTPS):

Regra de entrada:

TipoProtocoloIntervalo de portasOrigem
HTTPSTCP443Endereço IP do cliente (consulte a observação)

Observação: Para proteger o tráfego de entrada pelo endpoint da VPC, considere especificar somente o endereço IP ou a rede do cliente na Origem.

Além disso, verifique se o grupo de segurança associado à instância permite o tráfego HTTP a partir do grupo de segurança do balanceador de carga:

Regra de entrada:

TipoProtocoloIntervalo de portasOrigem
HTTPTCP80Grupo de segurança do balanceador de carga

Verifique se o grupo de segurança associado ao balanceador de carga permite todo o tráfego HTTP na regra de entrada:

Regra de entrada:

TipoProtocoloIntervalo de portasOrigem
HTTPTCP800.0.0.0/0

Observação: Você não precisa restringir o tráfego de saída em nenhum dos grupos de segurança anteriores.

Verifique as entradas da tabela de rotas

Ao criar endpoints de gateway, você tem a opção de escolher uma tabela de rotas. Certifique-se de escolher a tabela de rotas associada à sub-rede privada da VPC. A tabela de rotas associada à sub-rede privada deve ter uma rota para cada endpoint da VPC do gateway. Por exemplo, você deve ter uma rota para cada endpoint da VPC do gateway associado ao Amazon Simple Storage Service (Amazon S3) ou ao Amazon DynamoDB.

Entradas da tabela de rotas:

DestinoAlvo
172.xx.x.0/16local
pl-63a5xxxvpce-04xxx

Verifique as políticas de endpoint da VPC

As políticas de endpoint da VPC devem permitir que seu ambiente do Elastic Beanstalk se comunique de forma privada com o serviço. Ao criar um endpoint de interface ou gateway, você pode anexar uma política de endpoint. A política de endpoint controla quais entidades principais da AWS podem usar o endpoint da VPC para acessar o serviço de endpoint. As entidades principais da AWS incluem contas da AWS, usuários do AWS Identity and Access Management (AWS IAM) e perfis do IAM. Se você não especificar uma política de endpoint ao criar um endpoint, então, por padrão, o endpoint tem acesso total.

Veja a seguir um exemplo de política mínima de endpoint da VPC do S3 Gateway que é necessária para um endpoint do S3 ao trabalhar com o Elastic Beanstalk.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EBBucketAccess",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject",
                "s3:PutBucketPolicy",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-*",
                "arn:aws:s3:::elasticbeanstalk-*/*",
                "arn:aws:s3:::cloudformation*/*"
            ]
        }
    ]
}

Informações relacionadas

Acessar um serviço da AWS usando um endpoint da VPC de interface

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses