Come posso risolvere gli errori di timeout della connessione da Lambda quando tento di accedere a un'istanza database Amazon RDS?
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
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 10 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 2 anni fa