Como recuperar um arquivo de um bucket S3 a partir de uma instância EC2 em uma private subnet sem utilizar a internet pública(www)? É aí que o VPC Endpoint se faz útil, existem alguns casos de uso para os VPC Endpoints, conectar-se ao S3 através de uma rede privada é um deles.

📌 VPC Interface Endpoint

No exemplo abaixo queremos que a instância EC2 executada na private subnet consiga realizar requisições a outros serviços da aws sem que ela tenha um endereço IP público ou acesse a internet através do roteamento para um NAT Gateway em uma public subnet.

Um Security Group com uma Ingress Rule permitindo o tráfego a partir do CIDR da VPC no protocolo HTTPS porta 443 deve ser associado ao VPC Interface Endpoint.

Para que a instância consiga acessar serviços públicos da AWS utilizando um endereço IP privado nós provisionamos um VPC Interface Endpoint que criará uma ENI(Elastic Network Interface) na subnet da instância.

A ENI recebe um endereço IP a partir do CIDR da subnet com um nome de DNS associado(Specific DNS Hostname).

Untitled


VPC Interface endpoints (AWS PrivateLink)

Quando um VPC Interface Endpoint é criado a AWS separa um endereço do CIDR da subnet, define um specific DNS Hostname para este endereço e associa ambos a uma ENI(Elastic Network Interface).

Alguns serviços da AWS permitem habilitar a opção private DNS por região o que torna possível realizar requisições usando o Default DNS Hostname do serviço(ec2.us-east-1.amazonaws.com) ****ao invés do Specific DNS Hostname gerado para o Interface Endpoint(vpce-0fe5b17a0707d6abc-29p5708s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com).

A habilitação do Private DNS para os Interface ou Gateway endpoints também depende dos seguintes atributos na VPC → trueenableDnsHostnames and enableDnsSupport.

No exemplo abaixo as Instâncias nas duas subnets são capazes realizar requisições para o Kinesis através do interface endpoint usando o Specific DNS Hostname e somente as instâncias na subnet 1 podem se comunicar com o Kinesis através espaço de endereços IP públicos da região da AWS utilizando o Default DNS Hostname.

Untitled

Untitled

No diagrama abaixo o DNS privado para o endpoint foi habilitado e as instâncias de ambas as subnets podem enviar requisições para o Kinesis através do Interface endpoint utilizando o Default DNS Hostname ou Specific DNS Hostname sem a necessidade de acessar a internet(www).

Untitled

https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-private-dns


https://medium.com/anditb/aws-interface-endpoints-debd94ad469b

artigo_create_vpc_interface_endpoint.pdf

📌 VPC Gateway Endpoint

Assim como o interface endpoint o gateway endpoint habilita, por exemplo, a comunicação entre instâncias EC2 e outros serviços da AWS sem a obrigação de que a instância possua um endereço IP público ou que suas requisições sejam encaminhadas a um NAT Gateway que acessará a internet(www) através do Internet Gateway.

Quando o Gateway Endpoint é criado uma regra na route table associada a subnet da instância também é criada de forma que o tráfego cujo destino esteja na Prefix List seja encaminhado para o Gateway Endpoint. A Prefix List é uma lista de CIDRs da AWS que representa o range de endereços IP públicos utilizados para acessar o serviço escolhido.

Todas as instâncias na subnet associada a route table utilizam automaticamente o endpoint para acessar o serviço enquanto as instâncias de outras subnets que não estão associadas a route table não conseguem utilizar o endpoint.