Como concedo acesso à Internet a uma função Lambda conectada a um Amazon VPC?

Última atualização: 2021-10-06

Quero que minha função do AWS Lambda que está conectada a um Amazon Virtual Private Cloud (Amazon VPC) tenha acesso à Internet. Como configuro isso?

Descrição breve

O acesso à Internet em uma sub-rede privada requer Network Address Translation (NAT – Conversão de endereços de rede). Para permitir que uma função Lambda conectada ao Amazon VPC tenha acesso à Internet, roteie o tráfego de saída para um gateway NAT ou instância NAT em uma sub-rede pública.

Para obter mais informações, consulte Gateways da Internet no Guia do usuário do Amazon VPC. Para um exemplo de configuração, consulte VPC com sub-redes públicas e privadas (NAT).

Para solucionar problemas de acesso à Internet com funções Lambda conectadas ao Amazon VPC

Consulte Como soluciono problemas de acesso à Internet para uma função do AWS Lambda que está em um Amazon VPC usando o AWS Systems Manager?

Observação: você também pode usar endpoints do Amazon VPC para se conectar a serviços da AWS compatíveis diretamente de um Amazon VPC sem acesso à Internet.

Resolução

(Opcional) Crie um novo Amazon VPC usando o Assistente de VPC no Console de Gerenciamento da AWS

Observação: se usar o Assistente de VPC para criar um novo Amazon VPC, pule para a seguinte seção: Criar uma função de execução Lambda para sua VPC.

1.    Abra o Assistente de VPC no Console de Gerenciamento da AWS.

2.    Escolha VPC with Public and Private Subnets (VPC com sub-redes públicas e privadas). As novas sub-rede pública e sub-rede privada, incluindo o gateway da Internet associado e o gateway NAT, aparecem no console do Amazon VPC.

Criar uma sub-rede pública e uma ou mais sub-redes privadas em seu Amazon VPC

Para obter instruções, consulte Criar uma sub-rede em sua VPC para criar cada uma de suas sub-redes.

Ao criar as sub-redes, em Name tag (Etiqueta de nome), insira um nome para cada sub-rede que a identifique como pública ou privada. Por exemplo: sub-rede pública, lambda privada 1 e lambda privada 2.

Observação: uma das práticas recomendadas é criar mais de uma sub-rede privada em diferentes zonas de disponibilidade. Essa prática cria redundância e permite que o serviço Lambda mantenha alta disponibilidade para sua função.

Criar um gateway da Internet e conectá-lo ao Amazon VPC

Para obter instruções, consulte Criar e anexar um gateway da Internet.

Criar um gateway NAT

Para obter instruções, consulte Criar um gateway NAT. Ao criar o gateway NAT, em Subnet (Sub-rede), escolha a sub-rede que deseja tornar pública. (Do exemplo anterior: sub-rede pública.)

Observação: para testar a configuração do gateway NAT, consulte Testar o gateway NAT público no guia do usuário do Amazon VPC.

Crie duas tabelas de rotas personalizadas, uma para a sub-rede pública e outra para a sub-rede privada

Observação: ao fazer solicitações, a função Lambda conectada a um Amazon VPC seleciona aleatoriamente uma sub-rede associada. Todas as sub-redes que sua função usa devem ter a mesma configuração para evitar erros aleatórios causados pelo Lambda usando uma sub-rede configurada inadequadamente.

Para obter instruções, consulte Criar uma tabela de rotas personalizada. Ao criar as tabelas de rotas, em Name tag (Etiqueta de nome), insira um nome para cada tabela de rotas que ajude a identificar a sub-rede à qual ela está associada. Por exemplo: sub-rede pública e Lambda privada.

Para cada tabela de rotas, certifique-se de fazer o seguinte:

Para a tabela de rotas da sub-rede pública

1.    Associe a tabela de rotas da sub-rede pública (sub-rede pública) à sub-rede que deseja tornar pública.

2.    Adicione uma nova rota à tabela de rotas que inclua as seguintes configurações:
Em Destination (Destino), insira 0.0.0.0/0.
Em Target (Alvo), escolha Internet Gateway (Gateway da Internet) e, em seguida, escolha o ID (igw-123example) do gateway da Internet que você criou.
Escolha Save routes (Salvar rotas).

Para a tabela de rotas da sub-rede privada

1.    Associe a tabela de rotas da sub-rede privada (Lambda privada) às sub-redes privadas.

2.    Adicione uma nova rota à tabela de rotas que inclua as seguintes configurações:
Em Destination (Destino), insira 0.0.0.0/0.
Para Target (Alvo), escolha NAT Gateway (Gateway NAT). Em seguida, escolha o ID do gateway NAT (nat-123example) que você criou.
Importante: se estiver usando uma instância NAT, escolha Network Interface (Interface de rede).
Escolha Save routes (Salvar rotas).

Observação: certifique-se de que as rotas para o gateway NAT estejam com status active (ativo). Caso o gateway NAT seja excluído e você não tenha atualizado as rotas, o status deles será blackhole (buraco negro). Para mais informações, consulte Como atualizar sua tabela de rotas.

Verifique se a Access control list (ACL – Lista de controle de acesso) de rede permite solicitações de saída da sua função Lambda e tráfego de entrada conforme necessário

A ACL padrão no Amazon VPC permite qualquer tráfego de entrada e saída. Se você alterar as regras de ACL de rede, certifique-se de ainda permitir solicitações de saída da sua função Lambda.

Além disso, verifique se a ACL de rede permite o seguinte tráfego de entrada com base na configuração da VPC:

Para sub-redes privadas que usam um gateway NAT

Permitir tráfego de entrada em portas efêmeras de 1024 a 65535.

Para sub-redes privadas que usam uma instância NAT

Permitir tráfego de entrada nas portas efêmeras usadas pelo sistema operacional de sua instância NAT.

Observação: para obter mais informações, consulte Privacidade de tráfego de ligação entre redes no Amazon VPC.

Criar uma função de execução Lambda para sua VPC

1.    Abra a página Roles (Funções) no console do AWS Identity and Access Management (IAM).

2.    Selecione Create role (Criar função). A página Create role (Criar função) é exibida.

3.    Na página Criar função, faça o seguinte:
Em Select type of trusted entity (Selecionar tipo de entidade confiável), escolha AWS service (Serviço da AWS).
Em Common use cases (Casos de uso comuns), escolha Lambda.
Clique em Next: Permissions (Próximo: Permissões).
Em Attach permissions policies (Vincular políticas de permissões), pesquise por AWSLambdaVPCAccessExecutionRole. Selecione a política com esse nome. Em seguida, selecione Next: Tags (Próximo: Etiquetas).
(Opcional) Adicione etiquetas ao seu caso de uso.
Selecione Next: Review (Próximo: Revisar).
Em Role name (Nome da função), insira um nome para a função de execução Lambda. Por exemplo: lambda_vpc_basic_execution.
(Opcional) Em Role description (Descrição da função), insira uma descrição da função.
Selecione Create role (Criar função).

Para mais informações, consulte Função de execução do AWS Lambda e Criação de uma função de execução no console do IAM.

Configure sua função Lambda para se conectar ao Amazon VPC

1.    Abra a página Functions (Funções) no console do Lambda.

2.    Escolha o nome da função que deseja conectar ao seu Amazon VPC.

3.    Escolha Configuration (Configuração).

4.    Em Existing role (Função existente), para Existing role, escolha a função de execução Lambda que você criou.

5.    Em VPC, escolha Edit (Editar). Em seguida, faça o seguinte:
Em Virtual Private Cloud (VPC), escolha sua VPC.
Em Subnets (Sub-redes), selecione as sub-redes privadas que você criou. Identifique-as por suas IDs de sub-rede (e nomes, se tiver nomeado elas).
Em Security groups (Grupos de segurança), escolha um grupo de segurança.
Observação: o grupo de segurança padrão permite qualquer tráfego de saída da Internet e é suficiente para a maioria dos casos de uso. Para mais informações, consulte Grupos de segurança para sua VPC.
Escolha Save (Salvar).