Lambda segura na AWS: VPC Endpoint para o SQS sem NAT Gateway
Sua Lambda precisa falar com um RDS e com uma fila SQS, e os dois caminhos óbvios têm problema: deixar o banco público ou pagar um NAT Gateway, que é caro. Aqui você vai colocar a Lambda dentro da VPC e criar um VPC Endpoint para o SQS, de modo que ela chegue ao banco e à fila sem passar pela internet.
O cenário: uma Lambda, um RDS e uma fila SQS
Este caso nasceu de uma consultoria. O cliente tinha uma aplicação em Lambda que falava com vários serviços da AWS, e a forma dessa comunicação me chamou a atenção: será que era a melhor, ou existia uma mais segura?
O cenário: uma VPC com um RDS dentro, uma função Lambda e o SQS, o serviço de mensageria da AWS. A Lambda precisa falar com os dois. O conteúdo é mais avançado: pressupõe que você já usou Lambda e já sentiu essa dor na pele.
A Lambda tem duas posições possíveis em relação à VPC, e cada uma tem um problema.
Caminho 1: a Lambda fora da VPC
A função fica dentro da AWS, mas fora da sua VPC. Como não está na VPC, o caminho até os seus serviços é a internet: ela chega ao RDS pela internet e chega ao SQS pela internet.
Os problemas:
- O RDS precisa ser público. Isso já é um problema de segurança: dependendo dos canais que você abre, um banco acessível publicamente fica passível de interceptação e de acesso indevido.
- A liberação do acesso é frágil. Ou você faz uma liberação global, ou uma liberação fechada numa lista fixa com os endereços do Lambda. Nos dois casos, há fragilidade.
- O SQS é público por natureza. Ao criar uma fila, você recebe um endpoint, uma URL com HTTPS, e é por ela que as mensagens entram. Nesse caminho, isso acontece pela internet.
Caminho 2: a Lambda dentro da VPC
Publicando a Lambda dentro da VPC, nas subnets e com o security group que você escolher, o acesso ao RDS passa a ser privado. Dá para tirar o acesso público do banco.
Aí aparece o problema do SQS. Ele só é acessível publicamente, e a Lambda, de dentro da VPC, não sai para a internet para chegar nele.
Uma saída seria colocar um NAT Gateway. Só que ele é um serviço mais caro, e a solução não precisa dele: há uma alternativa mais barata dentro da própria AWS.
1Deixar a Lambda e o RDS dentro da VPC
Publique a função na VPC, escolhendo as subnets e o security group dela. Com isso, a comunicação com o RDS acontece por dentro da rede, e o acesso público do banco pode ser desligado.
2Criar o VPC Endpoint do SQS
A VPC tem um recurso chamado Endpoints, que pouca gente usa: quem trabalha com VPC costuma olhar só subnets, route table e internet gateway. No console da VPC:
- Abra Endpoints e clique em Create endpoint.
- Em categoria, escolha AWS services e filtre por
sqs. Na tela da aula, o serviço aparece comocom.amazonaws.us-east-1.sqs, tipo Interface (região e tipo estão na tela, não na minha fala). Use a região da sua fila. - Escolha a VPC onde a Lambda está.
- Escolha as subnets que você quer associar ao endpoint. Pode ser uma ou várias.
- Clique em Create endpoint.

3Entender o que mudou no caminho
O endpoint abre uma porta de comunicação com o SQS por dentro da VPC. O canal pela internet, que parecia o único possível, deixa de ser necessário.
Quando a Lambda resolve o endereço do SQS, ele aponta para o endpoint dentro da VPC. A mensagem chega à fila sem que a função tenha acesso à internet, e o RDS segue acessível só de forma privada.
Isso vale para outros serviços além do SQS. O DynamoDB também tem endpoint. O S3 tem o seu, mas criado como Gateway. Esse tipo eu detalho em outro post: NAT Gateway ou Gateway Endpoint.
Quanto custa e o que mais você ganha
- VPC Endpoint: 1 centavo de dólar por hora. Associado a duas subnets, 2 centavos por hora.
- NAT Gateway: bem mais caro que o endpoint.
- Tráfego pela internet: falar com o RDS pela internet faz você pagar saída de dados para a internet, muito mais cara que o tráfego por dentro da VPC.
- Desempenho: pela internet, o caminho até o RDS sai da rede da AWS; pelo endpoint, fica 100% dentro dela.
Os valores são de setembro de 2022, quando gravei, não uma tabela atual. Antes de decidir, confira na página de preços do AWS PrivateLink, onde fica o preço do endpoint do tipo Interface.
Avalie esses pontos juntos: conhecer bem a VPC traz uma série de benefícios, e a comunicação 100% dentro da rede da AWS é um deles.
Checklist
- Veja se a sua Lambda hoje fala com o RDS pela internet. Se sim, o banco está público?
- Publique a Lambda dentro da VPC, com subnets e security group definidos.
- Desligue o acesso público do RDS.
- No console da VPC, crie o endpoint do SQS e associe às subnets que quiser.
- Se existir um NAT Gateway só para a Lambda chegar ao SQS, compare: ele é bem mais caro que o endpoint.
- Confira os preços atuais na página de preços do PrivateLink.
Uma Lambda dentro da VPC com um endpoint para o SQS conversa com o banco e com a fila sem passar pela internet e sem NAT Gateway. É uma forma segura, e mais barata que o NAT Gateway, de a Lambda falar com o SQS.
O que os alunos dizem

“Hoje recebo oportunidades 100% remoto e finalmente me sinto recolocada no mercado.”
Patrícia Prado, Desenvolvedora Back-end
Ver depoimento
“A Formação AWS me mostrou o caminho, me deu prática de verdade e mudou minha vida.”
Rodrigo Raspinola, Analista Cloud / SRE
Ver depoimento
“Eu queria voltar para a área técnica, mas aprender AWS sozinho só me deixava frustrado.”
William Santos, Tech Lead
Ver depoimento
Formação AWS
Aprenda AWS e IA na prática, com projeto real e acompanhamento. Converse com o time sobre a Formação AWS.
Agende uma conversaPrefere assistir?
A aula completa (14 min) está no canal Domine AWS. O vídeo toca aqui mesmo.

