Come posso configurare una funzione Lambda per farla connettere a un'istanza RDS?

8 minuti di lettura
0

Voglio che la mia funzione AWS Lambda si connetta a un'istanza Amazon Relational Database Service (Amazon RDS).

Breve descrizione

Nota: le seguenti informazioni e i seguenti passaggi si riferiscono alle istanze Amazon RDS. Tuttavia, la risoluzione si applica anche a qualsiasi endpoint o database presente in un cloud privato virtuale (VPC).

Per connettere una funzione Lambda a un'istanza RDS, consenti la connessione impostando le configurazioni di rete.

Esistono diverse impostazioni di configurazione per ciascuno dei seguenti tipi di connessione:

  • Una funzione Lambda e un'istanza RDS nello stesso VPC
  • Una funzione Lambda e un'istanza RDS in diversi VPC

Per motivi di sicurezza è consigliabile mantenere l'istanza RDS in un VPC. Per i database pubblici, utilizza un servizio di database NoSQL come Amazon DynamoDB.

Una funzione Lambda esterna a un VPC non può accedere a un'istanza RDS all'interno di un VPC.

Per informazioni su come configurare le impostazioni di rete di una funzione Lambda, consulta la sezione Configuring a Lambda function to access resources in a VPC. Se le impostazioni di rete non sono corrette, la funzione Lambda scadrà e visualizzerà il messaggio di errore Task timed out.

Per connettere una funzione Lambda a un cluster di database Amazon Aurora, utilizza l'API dati per Aurora Serverless.

Risoluzione

Importante: assicurati di modificare tutte le impostazioni Intervallo porte, Origine e Destinazione fornite negli esempi seguenti in modo che corrispondano alle tue configurazioni di rete. Transmission Control Protocol (TCP) è il protocollo richiesto per ogni tipo di configurazione di rete.

Una funzione Lambda e un'istanza RDS nello stesso VPC

Se devi connettere una funzione Lambda a un'istanza RDS nello stesso VPC, utilizza le seguenti configurazioni di rete.

Nota: per impostazione predefinita, tutte le sottoreti all'interno di un VPC contengono una route locale. La destinazione è il Classless Inter-Domain Routing (CIDR) del VPC e il target è local. Per ulteriori informazioni, consulta la sezione Route table concepts.

1.    Per Gruppi di sicurezza, utilizza una delle seguenti impostazioni di rete:

Per le istanze collegate allo stesso gruppo di sicurezza, imposta il gruppo di sicurezza come origine della regola in entrata. Imposta il gruppo di sicurezza come destinazione per la regola in uscita.

Ad esempio, se la funzione Lambda e l'istanza RDS sono entrambe nel gruppo di sicurezza sg-abcd1234, ciascuna istanza avrà le seguenti regole in entrata e in uscita.

Esempio di regola in entrata per le istanze collegate allo stesso gruppo di sicurezza

TipoProtocolloIntervallo di porteOrigine
TCP personalizzatoTCP3306sg-abcd1234

Esempio di regola in uscita per istanze collegate allo stesso gruppo di sicurezza

TipoProtocolloIntervallo di porteDestinazione
TCP personalizzatoTCP3306sg-abcd1234

-oppure-

Per le istanze appartenenti a gruppi di sicurezza diversi, assicurati che entrambi i gruppi di sicurezza consentano l'accesso reciproco.

Ad esempio, se la funzione Lambda è nel gruppo di sicurezza sg-1234 e l'istanza RDS è nel gruppo sg-abcd, ogni gruppo avrà le seguenti regole:

Esempio di regola in uscita per una funzione Lambda in un gruppo di sicurezza diverso dall'istanza RDS a cui desideri connetterla

TipoProtocolloIntervallo di porteDestinazione
TCP personalizzatoTCP3306sg-abcd

Esempio di regola in entrata per un'istanza RDS in un gruppo di sicurezza diverso da quello della funzione Lambda a cui desideri connetterla

TipoProtocolloIntervallo di porteOrigine
TCP personalizzatoTCP3306sg-1234

Importante: assicurati che le regole consentano una connessione TCP tramite la porta del database.

2.    Per le liste di controllo degli accessi alla rete (NACL), assicurati che le regole in entrata e in uscita consentano la comunicazione tra la funzione Lambda e l'istanza RDS.

Nota: per impostazione predefinita, le NACL consentono tutto il traffico in entrata e in uscita. Tuttavia, puoi modificare queste impostazioni predefinite.

Per ogni sottorete associata all'istanza RDS e alla funzione Lambda, configura le NACL in modo da consentire la connessione TCP in uscita verso i CIDR delle sottoreti dell'altra istanza.

Nota: l'esempio seguente utilizza quattro sottoreti etichettate con i rispettivi CIDR:
Per le sottoreti della funzione Lambda, 172.31.1.0/24 e 172.31.0.0/28.
Per le sottoreti dell'istanza RDS, 172.31.10.0/24 e 172.31.64.0/20.

Esempio di regole in uscita per le NACL delle sottoreti di una funzione Lambda

TipoProtocolloIntervallo di porteDestinazioneConsenti/Rifiuta
TCP personalizzatoTCP3306172.31.10.0/24Consenti
TCP personalizzatoTCP3306172.31.64.0/20Consenti

Importante: applica le stesse Regole in uscita alle NACL delle sottoreti dell'istanza RDS, ma imposta la destinazione come CIDR delle sottoreti Lambda.

Assicurati che le NACL per ciascuna sottorete abbiano una regola in entrata sulle porte effimere nell'intervallo CIDR delle sottoreti dell'altra istanza.

Esempio di regole in entrata per le NACL delle sottoreti di una funzione Lambda

TipoProtocolloIntervallo di porteOrigineConsenti/Rifiuta
TCP personalizzatoTCP1024-65535172.31.10.0/24Consenti
TCP personalizzatoTCP1024-65535172.31.64.0/20Consenti

Importante: applica le stesse regole in entrata alle NACL delle sottoreti dell'istanza RDS, ma imposta l'origine come CIDR delle sottoreti Lambda.

Una funzione Lambda e un'istanza RDS in diversi VPC

Innanzitutto, utilizza il peering VPC per connettere i due VPC. Quindi, utilizza le seguenti configurazioni di rete per connettere la funzione Lambda in un VPC all'istanza RDS nell'altro:

Importante: assicurati di attivare il sistema dei nomi di dominio (DNS) per la connessione peering VPC.

1.    Per la Tabella di routing, conferma che la connessione peering VPC sia avvenuta correttamente:
Per la Destinazione, cerca il CIDR del VPC in peering.
Per il Target, cerca la connessione peering.

Nota: l'esempio seguente include due esempi di VPC:

CIDR del VPC di origine (funzione Lambda): 10.0.0.0/16

CIDR del VPC in peering (istanza RDS): 172.31.0.0/16

Connessione peering: pcx-01234abcd

Esempio di tabella di routing per un VPC di origine associato alla funzione Lambda

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

Esempio di tabella di routing per un VPC in peering con un'istanza RDS

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

Per ulteriori informazioni, consulta la sezione Update your route tables for a VPC peering connection.

2.    Per Gruppi di sicurezza, utilizza le seguenti impostazioni di rete:

Per il gruppo di sicurezza della funzione Lambda, assicurati che il traffico sia consentito in entrata e in uscita dal CIDR del VPC dell'istanza RDS.

Nota: l'esempio seguente include due sottoreti etichettate con i rispettivi CIDR:
Per l'istanza RDS, 172.31.0.0/16
Per la funzione Lambda, 10.0.0.0/16

Esempio di regola in uscita per una funzione Lambda in un VPC diverso dall'istanza RDS

TipoProtocolloIntervallo di porteDestinazione
TCP personalizzatoTCP3306172.31.0.0/16

Per il gruppo di sicurezza dell'istanza RDS, consenti al traffico di entrare e uscire dal CIDR del gruppo di sicurezza della funzione Lambda.

Esempio di regola in entrata per un'istanza RDS in un VPC diverso dalla funzione Lambda

TipoProtocolloIntervallo di porteOrigine
TCP personalizzatoTCP330610.0.0.0/16

3.    Per le NACL, segui le procedure illustrate nel passaggio 3 della sezione Una funzione Lambda e un'istanza RDS nello stesso VPC. L'origine del CIDR della sottorete della funzione Lambda si trova in un VPC diverso.

Nota: in alternativa al peering VPC, puoi utilizzare AWS PrivateLink per accedere ad Amazon RDS tramite VPC. Questa soluzione funziona tra diversi account AWS e VPC nella stessa Regione AWS.


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa