Como configurar uma função do Lambda para conectar-se a uma instância do RDS?

8 minuto de leitura
0

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.

Resoluçã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 Encaminhamento 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

TipoProtocoloIntervalo de portasOrigem
TCP personalizadoTCP3306sg-abcd1234

Exemplo de regra de saída para instâncias anexadas ao mesmo grupo de segurança

TipoProtocoloIntervalo de portasDestino
TCP personalizadoTCP3306sg-abcd1234

-ou-

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

TipoProtocoloIntervalo de portasDestino
TCP personalizadoTCP3306sg-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

TipoProtocoloIntervalo de portasOrigem
TCP personalizadoTCP3306sg-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

TipoProtocoloIntervalo de portasDestinoPermitir/Negar
TCP personalizadoTCP3306172.31.10.0/24Permitir
TCP personalizadoTCP3306172.31.64.0/20Permitir

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

TipoProtocoloIntervalo de portasOrigemPermitir/Negar
TCP personalizadoTCP1024-65535172.31.10.0/24Permitir
TCP personalizadoTCP1024-65535172.31.64.0/20Permitir

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

DestinoAlvo
172.31.0.0/16pcx-01234abcd
10.0.0.0/16local

Exemplo de tabela de rotas para uma VPC emparelhada com uma instância do RDS

DestinoAlvo
10.0.0.0/16pcx-01234abcd
172.31.0.0/16local

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

TipoProtocoloIntervalo de portasDestino
TCP personalizadoTCP3306172.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

TipoProtocoloIntervalo de portasOrigem
TCP personalizadoTCP330610.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.


AWS OFICIAL
AWS OFICIALAtualizada há um ano