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 no meu ambiente totalmente privado do AWS Elastic Beanstalk.

Breve descrição

Ambientes totalmente privados têm a seguinte configuração epermitem o acesso à sua aplicação Web somente de dentro da mesma Amazon Virtual Private Cloud (Amazon VPC).

  • Visibilidade do balanceador de carga: privada
  • Sub-redes do balanceador de carga: ambas sub-redes privadas
  • IP público da instância: desabilitado
  • Sub-redes da instância: ambas sub-redes privadas

Toda a comunicação na VPC ocorre por meio de endpoints de VPC configurados. Além disso, toda comunicação dentro da VPC ocorre por meio da rota local na tabela de rotas. A seguir estão 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) não conseguiram se comunicar com o Elastic Beanstalk. Ocorre falha na comunicação 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 iniciar o ambiente novamente.
  • As instâncias não responderam no tempo limite permitido do 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 zonas de disponibilidade diferentes.
  • A VPC deve ter nomes de host e resoluções de DNS ativados. A ativação desses componentes adiciona uma entrada DNS na VPC que mapeia o endpoint de serviço público para o endpoint de 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.

Verificar 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 integridade 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 é executada 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 Amazon Elastic Container Service (Amazon ECS) executada 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 de VPC da interface, você deve escolher as sub-redes e o grupo de segurança para esse endpoint de 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 nota)

Observação: para proteger o tráfego de entrada por meio do endpoint de 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 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 de VPC do gateway. Por exemplo, você deve ter uma rota para cada endpoint de 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 de 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 de 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 (IAM) e perfis do IAM. Se você não especificar uma política de endpoint ao criar um endpoint, por padrão, o endpoint terá acesso total.

A seguir está um exemplo de política mínima de endpoint de VPC do S3 Gateway que é necessária para um endpoint 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 de interface de VPC

AWS OFICIAL
AWS OFICIALAtualizada há um ano