Como soluciono erros de tempo limite de conexão do Lambda ao tentar acessar uma instância de banco de dados do Amazon RDS?

5 minuto de leitura
0

Minha função do AWS Lambda recebe erros de tempo limite de conexão quando tenta acessar uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS). Como soluciono esses erros?

Resolução

Solucionar erros de tempo limite de conexão intermitente e transitória

Capturar os eventos da função do Lambda e fazer nova tentativa como parte do tratamento de erros de sua função

Para mais informações, consulte Error handling and automatic retries in AWS Lambda (Tratamento de erros e novas tentativas automáticas no AWS Lambda).

Verificar se há erros de DNS

Confirme se há algum erro relacionado ao Sistema de Nomes de Domínio (DNS). Se houver erros de DNS, detecte-os. Em seguida, repita a solicitação de DNS usando um recuo exponencial. Para mais informações, consulte Error retries and exponential backoff in AWS (Tentativas de erro e recuo exponencial na AWS).

Observação: verifique se você é capaz de resolver os endpoints de entrada e saída antes de tentar novamente a solicitação de DNS.

Solucionar erros consistentes de tempo limite de conexão

Verificar os logs do Amazon CloudWatch da função do Lambda

Se você ainda não fez isso, conceda permissões de log do CloudWatch à sua função do Lambda. Em seguida, revise os logs de sua função para identificar erros específicos de tempo limite de conexão.

Para mais informações, consulte Monitoring and troubleshooting Lambda applications (Monitoramento e solução de problemas de aplicativos do Lambda).

Verificar a configuração da VPC

Para bancos de dados privados, faça o seguinte, com base no seu caso de uso:

Coloque sua função do Lambda na mesma Amazon Virtual Private Cloud (Amazon VPC) do banco de dados.

-ou-

Crie uma conexão de emparelhamento da VPC entre a Amazon VPC que inclui sua função e a Amazon VPC que inclui seu banco de dados.

Para bancos de dados públicos, faça o seguinte:

(Para funções em uma Amazon VPC) Roteie o tráfego público por meio de um gateway de conversão de endereços de rede (NAT) ou instância NAT. Para mais informações, consulte How do I give internet access to my Lambda function that's connected to an Amazon VPC? (Como conceder acesso à Internet para minha função do Lambda conectada a uma Amazon VPC?)

Observação: se o banco de dados estiver acessível ao público e não houver restrições baseadas em endereço IP no banco de dados, siga as instruções em Tutorial: configurar uma função do Lambda para acessar o Amazon RDS em uma Amazon VPC.

Verificar as regras do grupo de segurança

Para bancos de dados privados, faça o seguinte:

Adicione uma regra de entrada ao seu grupo de segurança de banco de dados que permita o tráfego do intervalo CIDR das sub-redes ou do grupo de segurança da VPC.

Para bancos de dados públicos, faça o seguinte:

Adicione uma regra de entrada ao seu grupo de segurança de banco de dados que permita o tráfego do gateway NAT ou da instância NAT da VPC.

Atualizar o manipulador de funções do Lambda

Atualize o código da função do Lambdapara que a função abra a conexão do banco de dados fora do manipulador da função e não feche a conexão.

**Observação:**devido à forma como o Lambda reutiliza contêineres, ele não reinicializa o código que está fora de um manipulador de função quando o contêiner é reutilizado. A prática recomendada é criar a conexão que você planeja reutilizar fora do manipulador para que ela ainda esteja presente em cada invocação seguinte. Certifique-se de confirmar que há uma conexão válida antes de tentar usar a conexão. Se não houver uma conexão válida, crie uma nova conexão antes de continuar.

Conectar-se usando uma instância do EC2

Como teste, iniciar uma instância do Amazon Elastic Compute Cloud (Amazon EC2) com a mesma configuração da Amazon VPC da sua função do Lambda. Em seguida, tente se conectar à instância de banco de dados do Amazon RDS a partir da instância do EC2.

Se você conseguir se conectar ao banco de dados, siga as instruções em Solucionar problemas de rede no Lambda.

-ou-

Se você não conseguir se conectar ao banco de dados, siga as instruções em How do I resolve problems connecting to my Amazon RDS DB instance? (Como resolvo problemas de conexão com minha instância de banco de dados do Amazon RDS?)

Usar o Amazon RDS Proxy

Crie um endpoint proxy do Amazon Relational Database Service (Amazon RDS) para seu banco de dados do RDS para lidar com o tráfego do banco de dados de sua função do Lambda. Para mais informações, consulte How do I resolve problems connecting to my Amazon RDS DB instance? (Como usar o Amazon RDS Proxy com o AWS Lambda).

Observação: o suporte do Amazon RDS Proxy para MySQL e PostgreSQL agora está disponível ao público em geral.


Informações relacionadas

Configurar o acesso ao banco de dados para uma função do Lambda

Usar o AWS Lambda com o Amazon RDS

Como posso solucionar problemas de conectividade com uma instância do Amazon RDS que usa uma sub-rede pública ou privada de uma VPC?

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos