Aws Lambda — IP Fixo no Tráfego de Saída
Olá Gente!
Lambda é um dos serviços que mais utilizo na AWS, me permite criar micro-serviços para diversas necessidades.
Porem, a alguns dias me surgiu uma necessidade diferenciada.
Eu precisava buscar dados de uma API, porem, esta API permite apenas que IPs previamente liberados acessem a API.
Então fui testar qual o IP Público que é utilizado quando a função lambda faz uma request.
Para isto, crie uma função em Nodejs, que busca o IP Público:
Como já era óbvio, não existe um IP Fixo no tráfego da função, então, cada teste me retornava um IP diferente:
Vamos Resolver Isto?
Nas configurações das funções Lambda, podemos configurar para que a função utilize uma rede VPC própria, e nesta rede, podemos configurar o tráfego de saída para sair sempre do mesmo IP.
A primeira coisa que precisamos fazer é acessar as configurações do serviço VPC:
Aqui iremos criar uma VPC que quando o tráfego da rede privada for para a rede pública, passe por um Gateway NAT onde um (ou diversos) IPs serão fixados.
Criando VPC
Em “Suas VPCs” clique em “Criar VPC”:
Será aberto uma janela para configurarmos a VPC e todos seus recursos, porem, são necessários customizar apenas alguns campos, os outros, que não irei descrever abaixo, não devem ser alterados.
Em “Recursos a serem criados” selecione “VPC e muito mais”, isto ira criar a VPC e todos os recursos necessários:
Em “Geração automática da etiqueta de nome” preencha um nome para identificar sua VPC:
Em “Número de zonas de disponibilidade” selecione “1” (Aqui você pode selecionar mais para criar uma redundância):
Em “Gateways NAT” selecione “1 por AZ”:
Em “Endpoints da VPC” selecione “Nenhuma”:
Agora clique em “Criar VPC”:
Será exibido uma janela exibindo o progresso da criação, podem levar diversos minutos para finalizar a criação da VPC:
Após a VPC ser criada, será exibido “Êxito”:
Identificando IP Público
No lado esquerdo, selecione a VPC que criamos:
Clique em “Gateways NAT”:
Será exibido apenas um Gateway com o sufixo “Public”, clique nele:
O IP público será exibido no campo “Endereço IPv4 público primário”:
Neste caso, o IP Público é:
54.165.76.118
Pronto! Agora temos nossa função VPC com IP Público Fixo!
Configurando Função Lambda para ter Acesso as VPC
Em sua função lambda, clique em “Configurações”:
Clique em “Permissão”:
Clique no nome da função, para ter acesso a edição das permissões:
Clique em “Adicionar Permissões” e em seguida em “Anexar Políticas”:
Procure a permissão “AWSLambdaVPCAccessExecutionRole” e marque esta permissão na listagem:
Clique em “Adicionar Permissões”:
Pronto! Agora atribuímos a permissão de acesso a VPC em nossa Função Lambda:
Vinculando VPC em nossa Função Lambda
Em sua Função Lambda, clique em “Configurações” e após em “VPC”:
Clique em “Editar”:
Selecione a VPC que criamos:
Em “Sub-redes” selecione a sub-rede que possuem o nome “private”:
Em “Grupos de Segurança” selecione o único grupo disponível em sua nova VPC:
Em seguida, clique em “Salvar”:
Agora é necessário aguardar a Função atualizar, o que pode levar alguns minutos:
Pronto! Agora nossa Função Lambda esta conectada a nossa nova rede VPC:
Testando
Agora iremos executar o teste algumas vezes, para confirmar o IP Público:
E com isto, confirmamos que o IP público esta fixado em:
54.165.76.118
Terminamos por hoje, entusiastas da Lambda! 👩💻
Até a próxima execução da função! 🌈