Como configurar uma função do Lambda para conectar-se a uma instância do RDS?
Quero que minha função do AWS Lambda se conecte a uma instância do Amazon Relational Database Service (Amazon RDS).
Breve descrição
Observação: as informações e etapas a seguir se referem a instâncias do Amazon RDS. Entretanto, a resolução também se aplica a qualquer endpoint ou banco de dados que esteja localizado em uma nuvem privada virtual (VPC).
Para conectar uma função do Lambda a uma instância do RDS, defina as configurações de rede para permitir a conexão.
Há diferentes definições de configuração para cada um dos seguintes tipos de conexão:
- Uma função do Lambda e uma instância do RDS na mesma VPC
- Uma função do Lambda e uma instância do RDS em diferentes VPCs
Por motivos de segurança, é uma prática recomendada manter sua instância do RDS em uma VPC. Para bancos de dados públicos, use um serviço de banco de dados NoSQL, como o Amazon DynamoDB.
Uma função do Lambda que está fora de uma VPC não pode acessar uma instância do RDS que está dentro de uma VPC.
Para obter informações sobre como definir as configurações de rede de uma função do Lambda, consulte Configurar uma função do Lambda para acessar recursos em uma VPC. Se as configurações de rede estiverem incorretas, a função do Lambda atingirá o tempo limite e exibirá uma mensagem de erro Task timed out.
Para conectar uma função do Lambda a um cluster de banco de dados do Amazon Aurora, use a API de dados para o Aurora Serverless.
Solução
Importante: certifique-se de alterar cada configuração de Intervalo de portas, Origem e Destino fornecida nos exemplos a seguir para corresponder às suas próprias configurações de rede. O Protocolo de Controle de Transmissão (TCP) é o protocolo necessário para cada tipo de configuração de rede.
Uma função do Lambda e uma instância do RDS na mesma VPC
Ao conectar uma função do Lambda a uma instância do RDS na mesma VPC, use as configurações de rede a seguir.
Observação: por padrão, todas as sub-redes em uma VPC contêm uma rota local. O destino é o Roteamento Entre Domínios Sem Classificação (CIDR) da VPC e o alvo é local. Para obter mais informações, consulte Conceitos da tabela de rotas.
1. Em Grupos de segurança, use uma das seguintes configurações de rede:
Para instâncias anexadas ao mesmo grupo de segurança, torne o grupo de segurança a origem da regra de entrada. Torne o grupo de segurança o destino da regra de saída.
Por exemplo, se a função do Lambda e a instância do RDS estiverem no grupo de segurança sg-abcd1234, cada instância terá as seguintes regras de entrada e saída.
Exemplo de regra de entrada para instâncias anexadas ao mesmo grupo de segurança
Tipo | Protocolo | Intervalo de portas | Origem |
TCP personalizado | TCP | 3306 | sg-abcd1234 |
Exemplo de regra de saída para instâncias anexadas ao mesmo grupo de segurança
Tipo | Protocolo | Intervalo de portas | Destino |
TCP personalizado | TCP | 3306 | sg-abcd1234 |
-or-
Para instâncias em grupos de segurança diferentes, certifique-se de que os dois grupos de segurança permitam acesso um ao outro.
Por exemplo, se a função do Lambda estiver no grupo de segurança sg-1234 e a instância do RDS estiver no sg-abcd, cada grupo terá as seguintes regras:
Exemplo de regra de saída para uma função do Lambda em um grupo de segurança diferente da instância do RDS à qual você deseja conectá-la
Tipo | Protocolo | Intervalo de portas | Destino |
TCP personalizado | TCP | 3306 | sg-abcd |
Exemplo de regra de entrada para uma instância do RDS em um grupo de segurança diferente da função Lambda à qual você deseja conectá-la
Tipo | Protocolo | Intervalo de portas | Origem |
TCP personalizado | TCP | 3306 | sg-1234 |
Importante: certifique-se de que as regras permitam uma conexão TCP pela porta do banco de dados.
2. Para as listas de controle de acesso à rede (NACLs), certifique-se de que as regras de entrada e saída permitam a comunicação entre a função do Lambda e a instância do RDS.
Observação: por padrão, as NACLs permitem todo o tráfego de entrada e saída. No entanto, você pode alterar essas configurações padrão.
Para cada sub-rede associada à instância do RDS e à função do Lambda, configure as NACLs para permitir a conexão TCP de saída com os CIDRs das sub-redes da outra instância.
Observação: o exemplo a seguir usa quatro sub-redes de exemplo rotuladas por seus CIDRs:
Para as sub-redes da função do Lambda, 172.31.1.0/24 e 172.31.0.0/28.
Para as sub-redes da instância do RDS, 172.31.10.0/24 e 172.31.64.0/20.
Exemplo de regras de saída para NACLs das sub-redes de uma função do Lambda
Tipo | Protocolo | Intervalo de portas | Destino | Permitir/Negar |
TCP personalizado | TCP | 3306 | 172.31.10.0/24 | Permitir |
TCP personalizado | TCP | 3306 | 172.31.64.0/20 | Permitir |
Importante: aplique as mesmas regras de saída às NACLs das sub-redes da instância do RDS, mas com o destino definido como os CIDRs das sub-redes do Lambda.
Certifique-se de que as NACLs de cada sub-rede tenham uma regra de entrada nas portas efêmeras no intervalo CIDR das sub-redes da outra instância.
Exemplo de regras de entrada para NACLs das sub-redes de uma função do Lambda
Tipo | Protocolo | Intervalo de portas | Origem | Permitir/Negar |
TCP personalizado | TCP | 1024-65535 | 172.31.10.0/24 | Permitir |
TCP personalizado | TCP | 1024-65535 | 172.31.64.0/20 | Permitir |
Importante: aplique as mesmas regras de entrada às NACLs das sub-redes da instância do RDS, mas com a origem definida como os CIDRs das sub-redes do Lambda.
Uma função do Lambda e uma instância do RDS em diferentes VPCs
Primeiro, use o emparelhamento da VPC para conectar as duas VPCs. Em seguida, use as seguintes configurações de rede para conectar a função do Lambda de uma VPC à instância do RDS de outra:
Importante: certifique-se de ativar o Sistema de Nomes de Domínio (DNS) para a conexão de emparelhamento da VPC.
1. Para Tabela de rotas, confirme se a conexão de emparelhamento da VPC obteve êxito:
Para Destino, procure o CIDR da VPC emparelhada.
Para Alvo, procure a conexão de emparelhamento.
Observação: o exemplo a seguir inclui dois exemplos de VPCs:
CIDR da VPC de origem (função do Lambda): 10.0.0.0/16
CIDR da VPC emparelhada (instância do RDS): 172.31.0.0/16
Conexão de emparelhamento: pcx-01234abcd
Exemplo de tabela de rotas para uma VPC de origem associada à função do Lambda
Destino | Alvo |
172.31.0.0/16 | pcx-01234abcd |
10.0.0.0/16 | local |
Exemplo de tabela de rotas para uma VPC emparelhada com uma instância do RDS
Destino | Alvo |
10.0.0.0/16 | pcx-01234abcd |
172.31.0.0/16 | local |
Para obter mais informações, consulte Atualizar suas tabelas de rotas para uma conexão de emparelhamento da VPC.
2. Para Grupos de segurança, use as seguintes configurações de rede:
Para o grupo de segurança da função do Lambda, certifique-se de que o tráfego tenha permissão para entrar e sair do CIDR da VPC da instância do RDS.
Observação: o exemplo a seguir inclui dois exemplos de sub-redes rotuladas por seus CIDRs:
Para a instância do RDS, 172.31.0.0/16
Para a função do Lambda, 10.0.0.0/16
Exemplo de regra de saída para uma função do Lambda em uma VPC diferente da instância do RDS
Tipo | Protocolo | Intervalo de portas | Destino |
TCP personalizado | TCP | 3306 | 172.31.0.0/16 |
Para o grupo de segurança da instância do RDS, permita que o tráfego entre e saia do CIDR do grupo de segurança da função do Lambda.
Exemplo de regra de entrada para uma instância do RDS em uma VPC diferente da função do Lambda
Tipo | Protocolo | Intervalo de portas | Origem |
TCP personalizado | TCP | 3306 | 10.0.0.0/16 |
3. Para as NACLs, siga os procedimentos anteriores da etapa 3 da seção Uma função do Lambda e uma instância do RDS na mesma VPC. A origem do CIDR da sub-rede da função do Lambda está em uma VPC diferente.
Observação: como alternativa ao emparelhamento da VPC, é possível usar o AWS PrivateLink para acessar o Amazon RDS entre VPCs. Essa solução funciona entre VPCs e contas da AWS na mesma região da AWS.
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há 2 anos