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

Ultimo aggiornamento: 29-10-2020

Voglio concedere l'accesso a Internet alla mia funzione AWS Lambda connessa a un Amazon Virtual Private Cloud (Amazon VPC). In che modo posso configurare il mio Amazon VPC a questo scopo?

Breve descrizione

Per accedere a risorse private di Amazon VPC, come un'istanza database di Relational Database Service (Amazon RDS) o un'istanza Amazon Elastic Compute Cloud (Amazon EC2), associa la tua funzione Lambda in un Amazon VPC a una o più sottoreti private.

Per garantire l'accesso a Internet alla tua funzione, è necessario che il VPC associato abbia un Gateway NAT (o una istanza NAT) in una sottorete pubblica.

Nota: Il fatto che una sottorete sia privata o pubblica dipende dalla sua tabella di routing. Una sottorete pubblica ha un routing indicante un Gateway Internet, mentre una rete privata non ce l'ha.

Risoluzione

Se stai utilizzando un Amazon VPC esistente, inizia da Crea le tue componenti VPC per creare una sottorete pubblica con un Gateway NAT e una o più sottoreti private. Se il tuo VPC esistente ha già una sottorete pubblica con un Gateway NAT e una o più sottoreti private, vai direttamente a Crea un ruolo di esecuzione Lambda per il tuo VPC.

Se desideri creare un nuovo VPC per questa configurazione, utilizza il wizard VPC, quindi scegli VPC con sottoreti pubbliche e private. Per ulteriori informazioni consulta VPC con sottoreti pubbliche e private (NAT). Di conseguenza, nella console Amazon VPC, le tue sottoreti si chiameranno rispettivamente"Sottorete pubblica" e "Sottorete privata". Quindi vai direttamente a Crea un ruolo di esecuzione Lambda per il tuo VPC.

Creazione delle componenti del VPC

  1. Crea due o più nuove sottoreti nel tuo VPC. In fase di creazione, come Tag del nome, aggiungi un nome che permetta di distinguere tra sottorete pubblica e privata. Per esempio, rinomina una Sottorete pubblica e l'altra Lambda privata (o Lambda privata 1, Lambda privata 2 e così via, per più sottoreti private).
    Nota: è una best practice creare più sottoreti private tra diverse zone di disponibilità per la ridondanza e in maniera tale che Lambda possa mantenere alta disponibilità per la tua funzione.
  2. Crea un Gateway Internet e collegalo al tuo VPC.
  3. Crea un Gateway NAT. In fase di creazione, come Sottorete scegli la sottorete che desideri rendere pubblica (per esempio, Sottorete pubblica se l'hai rinominata prima).
    Nota: per assistenza con la verifica del Gateway NAT dopo la creazione, consulta Verifica di un Gateway NAT.

Creazione e modifica di tabelle di routing per le sottoreti

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 dovrebbero avere la stessa configurazione per evitare errori casuali causati da Lambda tramite una sottorete configurata in maniera errata.

  1. Nel pannello Tabelle di routing della console Amazon VPC crea due tabelle di routing personalizzate per il tuo VPC.
    Suggerimento: in fase di creazione, come Tag del nome, aggiungi un nome che permetta di capire a quale sottorete è associata la tabella di routing. Per esempio, rinomina una Sottorete pubblica e l'altra Lambda privata.
  2. Associa la tabella di routing della sottorete pubblica (Sottorete pubblica) alla sottorete che desideri rendere pubblica.
  3. Aggiungi una nuova route a questa tabella di routing. Specifica quanto segue:
    Per Destinazione, inserisci 0.0.0.0/0.
    Per Obiettivo, scegli Gateway Internet, quindi scegli l'ID (igw-123esempio) del Gateway Internet creato.
    Scegli Salva routing. La sottorete associata è ora una sottorete pubblica.
  4. Associa l'altra tabella di routing (Lambda privata) alle sottoreti private.
  5. Aggiungi un nuovo routing a questa tabella di routing. Specifica quanto segue:
    Per Destinazione, inserisci 0.0.0.0/0.
    Per Obiettivo, scegli Gateway NAT, quindi scegli l'ID (nat-123esempio) del Gateway NAT creato (se stai utilizzando un'istanza NAT, invece, scegli Interfaccia network).
    Scegli Salva routing.

Nota: assicurati che i routing per il tuo Gateway NAT si trovino nello stato attivo. Se il Gateway NAT viene cancellato e non hai aggiornato i routing, si troveranno nello stato buco nero. Per ulteriori informazioni consulta Aggiornamento della tabella di routing.

Configurazione delle liste di controllo degli accessi di rete

La lista di controllo accessi di rete (ACL) predefinita in Amazon VPC permette tutto il traffico in entrata e in uscita. Qualora avessi cambiato le regole delle liste di controllo degli accessi di rete (o avessi pensato di farlo), assicurati che le richieste in uscita dalla tua funzione Lambda siano ancora consentite. Inoltre, assicurati che sia consentito il traffico in entrata necessario per la configurazione VPC:

Per ulteriori informazioni consulta Riservatezza del traffico Internet su Amazon VPC.

Creazione di un ruolo di esecuzione Lambda per VPC

  1. Nel pannello dei ruoli della console di AWS Identity and Access Management (IAM), scegli Crea ruolo.
  2. Nella pagina Crea ruolo segui questa procedura:
    Per Seleziona tipo di entità attendibile conferma che è selezionato il servizio AWS.
    Per Scegli un caso d'uso, scegli Lambda.
    Scegli Avanti: Autorizzazioni.
  3. In Collega policy per le autorizzazioni, cerca AWSLambdaVPCAccessExecutionRole. Seleziona la policy con quel nome, poi scegli Avanti: Tag.
  4. Puoi decidere anche di aggiungere tag, se lo preferisci, quindi scegli Avanti: Controllo.
  5. In Controllo, segui questa procedura:
    Per Nome del ruolo inserisci un nome per questo ruolo di esecuzione Lambda. Per esempio, lambda_vpc_basic_execution.
    (Facoltativo) Per Descrizione del ruolo modifica la descrizione in base alle tue preferenze.
    Scegli Crea ruolo.

Per ulteriori informazioni consulta Ruolo di esecuzione di AWS Lambda.

Configurazione della funzione Lambda

  1. Nel pannello delle funzioni della console di AWS Lambda scegli il nome della funzione che desideri connettere al tuo Amazon VPC.
  2. Nel pannello di Configurazione, in Ruolo di esecuzione, per Ruolo esistente scegli il ruolo di esecuzione IAM che hai creato (per esempio, lambda_vpc_basic_execution).
  3. Nel pannello di Configurazione, in VPC, segui questa procedura:
    Per Virtual Private Cloud (VPC) scegli il tuo VPC.
    Per Sottoreti selezione le sottoreti private che hai creato. Identificale mediante i loro ID (e nomi, se le hai rinominate) di sottorete.
    Per Gruppi di sicurezza scegli un gruppo di sicurezza.
    Nota: il gruppo di sicurezza predefinito permette tutto il traffico in uscita ed è sufficiente per la maggior parte dei casi d'uso. Per ulteriori informazioni consulta Gruppi di sicurezza per il tuo VPC.
  4. Scegli Salva.