AWS Lambda
Guia do desenvolvedor

Configurar uma função Lambda para acessar recursos em uma VPC

É possível configurar uma função para se conectar a sub-redes privadas em uma nuvem privada virtual (VPC). Use a Amazon Virtual Private Cloud (Amazon VPC) para criar uma rede privada para recursos, como bancos de dados, instâncias de cache ou serviços internos. Conecte a função à VPC para acessar recursos privados durante a execução.

O Lambda cria uma interface de rede elástica para cada combinação de grupo de segurança e sub-rede na configuração da VPC da função em um processo que pode levar ou minuto ou mais. Várias funções conectadas às mesmas sub-redes compartilham interfaces de rede, portanto, conectar funções adicionais a uma sub-rede que já tem uma interface de rede gerenciada pelo Lambda é muito mais rápido. O Lambda poderá criar interfaces de rede adicionais se você tiver muitas funções ou funções muito ocupadas.

As funções do Lambda não podem se conectar diretamente a uma VPC com a locação de instâncias dedicadas. Para se conectar a recursos em uma VPC dedicada, emparelhe-a com uma segunda VPC com locação padrão.

Função de execução e permissões de usuário

Para se conectar a uma VPC, sua função de execução da função precisa ter as seguintes permissões.

Permissões da função de execução

  • ec2:CreateNetworkInterface

  • ec2:DescribeNetworkInterfaces

  • ec2:DeleteNetworkInterface

Essas permissões são incluídas na política gerenciada AWSLambdaVPCAccessExecutionRole.

Para configurar uma função para se conectar a uma VPC, você precisa das seguintes permissões.

Permissões de usuário

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

Configurar o acesso à Amazon VPC com a API do Lambda

Para conectar a função a uma VPC durante a criação, use a opção vpc-config com uma lista de IDs de sub-rede privada e grupos de segurança.

$ aws lambda create-function --function-name my-function \ --runtime nodejs12.x --handler index.js --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/lambda-role \ --vpc-config SubnetIds=subnet-071f712345678e7c8,subnet-07fd123456788a036,SecurityGroupIds=sg-085912345678492fb

Para uma função existente, use a mesma opção com o comando update-function-configuration.

$ aws lambda update-function-configuration --function-name my-function \ --vpc-config SubnetIds=subnet-071f712345678e7c8,subnet-07fd123456788a036,SecurityGroupIds=sg-085912345678492fb

Para desconectar a função de uma VPC, atualize a configuração da função com uma lista vazia de sub-redes e grupos de segurança.

$ aws lambda update-function-configuration --function-name my-function \ --vpc-config SubnetIds=[],SecurityGroupIds=[]

Esses comandos usam as APIs a seguir.

Acesso aos serviços e à Internet para funções conectadas à VPC

Por padrão, o Lambda executa as funções em uma VPC segura com acesso aos serviços da AWS e à Internet. Quando você conecta uma função a uma VPC em sua conta, ela não tem acesso à Internet, a menos que a VPC conceda acesso.

nota

Vários serviços oferecem VPC endpoints. Você pode usar VPC endpoints para se conectar aos serviços da AWS de dentro de uma VPC sem acesso à Internet.

O acesso à Internet em uma sub-rede privada requer a conversão de endereços de rede (NAT). Para conceder acesso à Internet à sua função, roteie o tráfego de saída para um gateway NAT em uma sub-rede pública. O gateway NAT tem um endereço IP público e pode se conectar à Internet pelo gateway da Internet da VPC. Para obter mais informações, consulte Gateways NAT no Guia do usuário da Amazon VPC.

Configurações de VPC de exemplo

Os modelos de exemplo do AWS CloudFormation para configurações de VPC que você pode usar com funções Lambda estão disponíveis no repositório GitHub deste guia. Há dois modelos:

  • vpc-private.yaml – uma VPC com duas sub-redes privadas e VPC endpoints para Amazon Simple Storage Service e Amazon DynamoDB. Você pode usar esse modelo para criar uma VPC para funções que não precisam de acesso à Internet. Essa configuração oferece suporte ao uso do Amazon S3 e do DynamoDB com o AWS SDK e acesso a recursos do banco de dados na mesma VPC por meio de uma conexão de rede local.

  • vpc-privatepublic.yaml – uma VPC com duas sub-redes privadas, VPC endpoints, uma sub-rede pública com um gateway NAT e um gateway da Internet. O tráfego vinculado à Internet de funções nas sub-redes privadas é roteado para o gateway NAT por uma tabela de rotas.

Para usar um modelo para criar uma VPC, escolha Create stack (Criar pilha) no console do AWS CloudFormation e siga as instruções.