Come posso risolvere gli errori di timeout della connessione da Lambda quando tento di accedere a un'istanza database Amazon RDS?

4 minuti di lettura
0

La mia funzione AWS Lambda riceve errori di timeout di connessione quando tenta di accedere a un'istanza database di Amazon Relational Database Service (Amazon RDS). Come posso risolvere questi errori?

Soluzione

Risoluzione degli errori di timeout di connessione saltuari e temporanei

Acquisisci gli eventi della funzione Lambda e prova a ripeterli come parte della gestione degli errori della funzione

Per ulteriori informazioni, consulta Gestione degli errori e tentativi automatici in AWS Lambda.

Verifica la presenza di errori DNS

Verifica se sono presenti errori relativi al sistema dei nomi di dominio (DNS). Se ci sono errori DNS, individuali. Quindi, riprova la richiesta DNS utilizzando un backoff esponenziale. Per ulteriori informazioni, consulta Nuovi tentativi in caso di errore e backoff esponenziale in AWS.

Nota: Assicurati di riuscire a risolvere gli endpoint in entrata e in uscita prima di riprovare la richiesta DNS.

Risolvi gli errori regolari di timeout di connessione

Controlla i log Amazon CloudWatch della funzione Lambda

Se non l'hai già fatto, concedi le autorizzazioni di registrazione di CloudWatch alla tua funzione Lambda. Quindi, esamina i log della funzione per identificare errori di timeout di connessione specifici.

Per ulteriori informazioni, consulta Monitoraggio e risoluzione dei problemi delle applicazioni Lambda.

Verifica la configurazione del VPC

Per i database privati, esegui una delle seguenti operazioni, in base al tuo caso d'uso:

Inserisci la tua funzione Lambda nello stesso Amazon Virtual Private Cloud (Amazon VPC) del database.

oppure

Crea una connessione peering VPC tra Amazon VPC che include la tua funzione e Amazon VPC che include il tuo database.

Per i database pubblici, procedi come segue:

(Per le funzioni in Amazon VPC) Indirizza il traffico pubblico attraverso un gateway Network Address Translation (NAT) o un'istanza NAT. Per ulteriori informazioni, consultaCome posso concedere l'accesso a Internet alla mia funzione Lambda connessa a un Amazon VPC?

Nota: Se il database è accessibile al pubblico e non ci sono restrizioni basate sull'indirizzo IP sul database, segui le istruzioni del Tutorial: Configurazione di una funzione Lambda per accedere ad Amazon RDS in un Amazon VPC.

Controlla le regole del gruppo di sicurezza

Per i database privati, procedi come segue:

Aggiungi una regola in entrata al tuo gruppo di sicurezza del database che consenta il traffico proveniente dall'intervallo CIDR delle sottoreti o del gruppo di sicurezza del VPC.

Per i database pubblici, procedi come segue:

Aggiungi una regola in entrata al tuo gruppo di sicurezza del database che consenta il traffico dal gateway NAT o dall'istanza NAT del VPC.

Aggiorna il gestore delle funzioni Lambda

Aggiorna il codice della funzione Lambda in modo che la funzione apra la connessione al database all'esterno del gestore della funzione e non chiuda la connessione.

Nota: A causa del modo in cui Lambda riutilizza i container, Lambda non reinizializza il codice esterno a un gestore di funzioni quando il container viene riutilizzato. È consigliabile creare la connessione che intendi riutilizzare all'esterno del gestore in modo che sia ancora presente a ogni chiamata successiva. Assicurati di confermare che esiste una connessione valida prima di tentare di utilizzarla. Se non esiste una connessione valida, crea una nuova connessione prima di continuare.

Connessione tramite un'istanza EC2

Come test, avvia un'istanza Amazon Elastic Compute Cloud (Amazon EC2) con la stessa configurazione Amazon VPC della tua funzione Lambda. Quindi, prova a connetterti all'istanza database Amazon RDS dall'istanza EC2.

Se riesci a connetterti al database, segui le istruzioni in Risoluzione dei problemi di rete in Lambda.

oppure

Se non riesci a connetterti al database, segui le istruzioni in Come posso risolvere i problemi di connessione alla mia istanza database Amazon RDS?

Usa il Server proxy per Amazon RDS

Crea un endpoint proxy Amazon Relational Database Service (Amazon RDS) per il tuo database RDS per gestire il traffico del database proveniente dalla tua funzione Lambda. Per ulteriori informazioni, consulta Utilizzo del Server proxy per Amazon RDS con AWS Lambda.

Nota: Il supporto Server proxy per Amazon RDS per MySQL e PostgreSQL è ora disponibile a livello generale.


Informazioni correlate

Configurazione dell'accesso al database per una funzione Lambda

Utilizzo di AWS Lambda con Amazon RDS

Come posso risolvere i problemi di connettività a un'istanza Amazon RDS che utilizza una sottorete pubblica o privata di un VPC?

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa