Quero conceder acesso à Internet a uma função do AWS Lambda que possui uma conexão à Amazon Virtual Private Cloud (Amazon VPC).
Breve descrição
Por padrão, as funções do Lambda são executadas em uma VPC gerenciada pelo Lambda com acesso à Internet. Mesmo quando você associa uma função do Lambda a uma sub-rede pública, ela não pode se conectar à internet porque a função tem um endereço IP privado.
Para dar à sua função do Lambda acesso à internet aos recursos em uma VPC em sua conta da AWS, adicione um gateway NAT ou uma instância NAT. Essa configuração restringe a função aos recursos dentro da VPC, a menos que a VPC tenha acesso à Internet.
Observação: É possível usar endpoints da VPC da interface para se conectar a serviços compatíveis da AWS de dentro de uma conexão da Amazon VPC sem acesso à Internet.
Resolução
Verifique se os seguintes recursos permitem acesso externo à internet à sua função do Lambda:
Se algum desses recursos não conceder acesso à internet à sua função do Lambda, reconfigure o recurso para conceder acesso à internet à sua função. É possível executar o AWSSupport-TroubleshootLambdaInternetAccess ou conceder acesso à internet manualmente.
Use o runbook AWSSupport-TroubleshootLambdaInternetAccess
Pré-requisito
Antes de iniciar o runbook, certifique-se de que seu usuário ou perfil do AWS Identity and Access Management (IAM) tenha as permissões necessárias. Para mais informações, consulte a seção Permissões do IAM necessárias do AWSSupport-TroubleshootLambdaInternetAccess.
Conclua as etapas a seguir:
- Abra o console do Systems Manager.
- No painel de navegação, expanda Ferramentas de gerenciamento de alterações e escolha Automação.
- Escolha Executar runbook.
- Escolha a guia Propriedade da Amazon e, em seguida, pesquise por TroubleshootLambdaInternetAccess.
- Escolha o cartão AWSSupport-TroubleshootLambdaInternetAccess.
**Observação:**Não escolha o nome da automação.
- Escolha Avançar.
- Escolha Executar.
Analise a saída do runbook para determinar o que fez com que sua função do Lambda perdesse o acesso à Internet e como resolver o problema.
Conceder acesso à internet manualmente
Crie uma sub-rede pública e uma sub-rede privada na Amazon VPC
Crie uma sub-rede privada para sua função do Lambda e uma sub-rede pública para seu gateway NAT. No campo Tag de nome, insira um nome para cada sub-rede que a identifique como pública ou privada. Por exemplo, use a sub-rede pública, o Lambda privado 1 e o Lambda privado 2.
Observação: é uma prática recomendada criar mais de uma sub-rede privada em diferentes zonas de disponibilidade. Essa ação cria redundância e permite que o Lambda mantenha alta disponibilidade para sua função.
Use um gateway da internet para adicionar acesso de internet à sub-rede
Crie um gateway da internet. Em seguida, anexe-o à sua VPC.
Crie um gateway NAT
Crie um gateway NAT. Em Sub-rede, selecione a sub-rede que você deseja tornar pública. Por exemplo, escolha Sub-rede pública.
(Opcional) Teste a configuração do gateway NAT.
Crie duas tabelas de rotas personalizadas
Observação: Quando uma função do Lambda em uma VPC faz solicitações, a função seleciona aleatoriamente uma sub-rede associada. Se a função usar uma sub-rede configurada incorretamente, você receberá uma mensagem de erro. Para evitar esse problema, certifique-se de usar a mesma configuração para todas as sub-redes usadas pela sua função.
Para configurar suas tabelas de rotas personalizadas, conclua as seguintes etapas:
- Crie uma tabela de rotas para a sub-rede pública e outra para a sub-rede privada.
No campo Tag de nome, insira um nome para cada tabela de rotas que te ajude a identificar a sub-rede à qual ela está associada. Por exemplo, use a sub-rede pública e o Lambda privado.
- Associe as sub-redes privadas e públicas às tabelas de rotas.
- Adicione uma nova rota à tabela de rotas e inclua as seguintes configurações:
Em Destino, insira 0.0.0.0/0.
Em Alvo, escolha Gateway da internet para a sub-rede pública e insira o ID do gateway da internet. Escolha o gateway NAT para a sub-rede privada e insira o ID do gateway NAT.
Importante: Se você usar uma instância NAT em vez de um gateway NAT, escolha Interface de rede em vez de gateway NAT.
- Selecione Salvar rotas.
Observação: Certifique-se de que as rotas para o seu gateway NAT estejam em status Ativo. Se você excluir o gateway NAT e não tiver atualizado as rotas, elas terão um status Blackhole.
Revise sua configuração da ACL da rede
A ACL da rede padrão em sua VPC permite todo o tráfego de entrada e saída. Se você alterar as regras da ACL da rede, certifique-se de permitir solicitações de saída da sua função do Lambda. Além disso, certifique-se de que sua ACL da rede permita o seguinte tráfego de entrada:
- Para uma sub-rede privada que usa um gateway NAT, permita tráfego de entrada nas portas efêmeras 1024-65535.
- Para uma sub-rede privada que usa uma instância NAT, permita tráfego de entrada nas portas efêmeras que o sistema operacional (SO) da sua instância NAT utiliza.
Para obter mais informações, consulte Garantir privacidade do tráfego entre redes na Amazon VPC.
Crie um perfil de execução do Lambda
Criar um perfil de execução do Lambda para a sua VPC. Em seguida, atualize a função do Lambda para usar o novo perfil de execução do Lambda.
Configure sua função do Lambda para se conectar à sua VPC
Anexe sua função à sua VPC. Em Sub-redes, selecione sua sub-rede privada. Em Grupos de segurança, selecione um grupo de segurança.
Observação: O grupo de segurança padrão permite todo o tráfego de saída da Internet e é suficiente para a maioria dos casos de uso. Para obter mais informações, consulte Controle o tráfego para seus recursos da AWS usando grupos de segurança.
Para funções do Lambda com uma conexão da Amazon VPC, é possível usar um gateway da internet somente de saída para acessar a internet. Para obter mais informações, consulte o suporte IPv6.
Informações relacionadas
Solucionar problemas de redes no Lambda
Como soluciono problemas de tempo limite com uma função do Lambda que está em uma Amazon VPC?
Como soluciono um erro ETIMEDOUT na minha função do Lambda?
Conceder às funções do Lambda acesso aos recursos em uma Amazon VPC
Como soluciono falhas de funções do Lambda?