In che modo posso consentire l'accesso a Internet a una funzione Lambda connessa a un Amazon VPC?

Ultimo aggiornamento: 23/11/2022

Voglio che la mia funzione AWS Lambda connessa a un Amazon Virtual Private Cloud (Amazon VPC) abbia accesso a Internet. Come la configuro?

Breve descrizione

L'accesso a Internet da una sottorete privata richiede la network address translation (NAT). Per consentire l'accesso a Internet a una funzione Lambda connessa a un Amazon VPC, devi instradare il traffico in uscita in un gateway NAT o un'istanza NAT in una sottorete pubblica.

Per ulteriori informazioni, consulta la sezione Gateway Internet nella Guida per l'utente di Amazon VPC. Per una configurazione di esempio, consulta invece la sezione VPC con sottoreti pubbliche e private (NAT).

Risoluzione dei problemi di accesso a Internet con le funzioni Lambda connesse ad Amazon VPC

Consulta Come posso risolvere i problemi relativi all'invocazione di una funzione Lambda con una notifica di eventi di Amazon S3 utilizzando Systems Manager Automation?

Nota: puoi anche utilizzare gli endpoint Amazon VPC per connetterti ai servizi AWS supportati da un Amazon VPC senza accesso a Internet. La funzione Lambda non può essere inserita in una sottorete pubblica con un gateway Internet, poiché non è possibile assegnare a una funzione Lambda un indirizzo IP pubblico. Per accedere a Internet pubblico da una funzione abilitata per il VPC, dovrai collocare la funzione in una sottorete privata che utilizzi un gateway NAT, un'istanza NAT o un altro percorso predefinito gestito dal cliente per l'accesso pubblico a Internet.

Risoluzione

(Facoltativo) Crea un nuovo Amazon VPC utilizzando la procedura guidata VPC nella Console di gestione AWS

Nota: se utilizzi la procedura guidata VPC per creare un nuovo Amazon VPC, puoi passare alla sezione seguente: Crea un ruolo di esecuzione Lambda per il tuo VPC.

1.    Apri la procedura guidata VPC nella Console di gestione AWS.

2.    Scegli VPC con sottoreti pubbliche e private. La nuova sottorete pubblica e la nuova sottorete privata, inclusi il gateway Internet e il gateway NAT associati, vengono visualizzate nella console Amazon VPC.

Creazione di una sottorete pubblica e una o più sottoreti private nel tuo Amazon VPC

Per le istruzioni, consulta Creazione di una sottorete nel VPC per creare tutte le sottoreti.

Quando crei le sottoreti, in Name tag (Nome tag), per ogni sottorete specifica un nome che la identifichi come pubblica o privata. Ad esempio: Sottorete pubblica, Lambda 1 privata e Lambda 2 privata.

Nota: una best practice consiste nel creare più di una sottorete privata in diverse zone di disponibilità. Questa pratica crea ridondanza e consente al servizio Lambda di mantenere un'elevata disponibilità per la tua funzione.

Crea un gateway Internet e collegalo al tuo Amazon VPC

Creazione di un gateway NAT

Per istruzioni, consulta Creazione di un gateway NAT. Quando crei il gateway NAT, in Sottorete scegli la sottorete che desideri rendere pubblica. (Dall'esempio precedente: Sottorete pubblica.)

Nota: per testare la configurazione del tuo gateway NAT, consulta Test del gateway NAT pubblico nella guida per l'utente di Amazon VPC.

Crea due tabelle di routing personalizzate, una per la sottorete pubblica e una per la sottorete privata

Nota: una funzione Lambda connessa ad Amazon VPC seleziona in maniera casuale una sottorete associata al momento della richiesta. Tutte le sottoreti utilizzate dalla funzione devono avere la stessa configurazione per evitare errori casuali causati da Lambda per l'utilizzo di una sottorete configurata in modo errato.

Per le istruzioni, consulta Creazione di una tabella di instradamento personalizzata. Quando crei le tabelle di instradamento, in Name tag (Nome tag) inserisci per ognuna di esse un nome che consenta di identificare a quale sottorete è associata. Ad esempio: Sottorete pubblica e Lambda privata.

Per ogni tabella di routing, assicurati di eseguire le seguenti operazioni:

Per la tabella di routing della sottorete pubblica

1.    Associa la tabella di instradamento della sottorete (Sottorete pubblica) alla sottorete che desideri rendere pubblica.

2.    Aggiungi un nuovo routing alla tabella di routing con le seguenti configurazioni:
In Destinazione, inserisci 0.0.0.0/0.
In Target (Destinazione), scegli Internet Gateway (Gatewa Internet), quindi scegli l'ID (igw-123example) del gateway Internet creato. Scegli Salva routing.

Per la tabella di instradamento della sottorete privata

1.    Associa la tabella di instradamento della sottorete privata (Lambda privata) alle sottoreti private.

2.    Aggiungi un nuovo routing alla tabella di routing con le seguenti configurazioni:
In Destinazione, inserisci 0.0.0.0/0.
In Target (Destinazione), scegli NAT Gateway (Gateway NAT). Quindi, scegli l'ID del gateway NAT (nat-123example) creato.
Importante: se utilizzi un'istanza NAT, scegli invece Network Interface (Interfaccia di rete). Scegli Salva routing.

Nota: assicurati che gli instradamenti verso il gateway NAT siano attivi. Se il gateway NAT viene cancellato e non hai aggiornato i routing, il loro stato rimarrà su buco nero. Per ulteriori informazioni, consulta Aggiornamento della tabella di routing.

Verifica che la lista di controllo degli accessi di rete consenta le richieste in uscita dalla funzione Lambda e il traffico in entrata come necessario

Lalista di controllo accessi alla rete predefinita nel tuo Amazon VPC consente tutto il traffico in entrata e in uscita. Se modifichi le regole della lista di controllo degli accessi di rete, assicurati di consentire comunque le richieste in uscita dalla funzione Lambda.

Inoltre, assicurati che la lista di controllo degli accessi di rete consenta il seguente traffico in entrata in base alla configurazione VPC:

Nota: per ulteriori informazioni, consulta Riservatezza del traffico Internet in Amazon VPC.

Creazione di un ruolo di esecuzione Lambda per VPC

1.    Apri la pagina Ruoli nella console di AWS Identity and Access Management (IAM).

2.    Scegli Crea ruolo. Viene visualizzata la pagina Crea ruolo.

3.    Nella pagina Crea ruolo, effettua le seguenti operazioni:
In Seleziona il tipo di entità attendibile, seleziona Servizio AWS.
In Casi d’uso comuni, scegli Lambda.
Seleziona Successivo: autorizzazioni.
In Collega policy delle autorizzazioni, cerca AWSLambdaVPCAccessExecutionRole.
Seleziona la policy con quel nome. Poi seleziona Successivo: Tag.
(Facoltativo) Aggiungi i tag secondo il tuo caso d'uso.
Seleziona Successivo: esamina.
In Nome ruolo, inserisci un nome per il ruolo di esecuzione Lambda. Ad esempio: lambda_vpc_basic_execution.
(Facoltativo) In Role description (Descrizione ruolo), inserisci una descrizione del ruolo. Scegli Crea ruolo.

Per ulteriori informazioni, consulta Ruolo di esecuzione AWS Lambda e Creazione di un ruolo di esecuzione nella console IAM.

Configura la tua funzione Lambda per connetterti al tuo Amazon VPC

1.    Apri la pagina Funzioni nella console Lambda.

2.    Scegli il nome della funzione che desideri connettere al tuo Amazon VPC.

3.    Scegli Configurazione.

4.    Sotto Ruolo di esecuzione, in Ruolo esistente scegli il ruolo di esecuzione Lambda creato.

5.    In VPC, scegli Modifica. Quindi, procedi come segue:
In Virtual Private Cloud (VPC), scegli il tuo VPC.
In Sottoreti, seleziona le sottoreti private create. Identificale in base ai loro ID sottorete (e ai nomi, se presenti).
In Gruppi di sicurezza, scegli un gruppo di sicurezza.
Nota: il gruppo di sicurezza di default consente tutto il traffico Internet in uscita ed è sufficiente per la maggior parte dei casi d'uso. Per ulteriori informazioni, consulta Gruppi di sicurezza del tuo VPC. Scegli Salva.