Abilita l'accesso a Internet per le funzioni VPC Lambda connesse - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Abilita l'accesso a Internet per le funzioni VPC Lambda connesse

Per impostazione predefinita, le funzioni Lambda vengono eseguite in un sistema gestito da Lambda con accesso a InternetVPC. Per accedere alle risorse contenute VPC in un account, puoi aggiungere una VPC configurazione a una funzione. Ciò limita la funzione alle risorse all'interno di tale risorsaVPC, a meno che non VPC disponga di accesso a Internet. Questa pagina spiega come fornire l'accesso a Internet alle funzioni Lambda VPC connesse.

Crea il VPC

Il VPCflusso di lavoro Create crea tutte le VPC risorse necessarie affinché una funzione Lambda acceda alla rete Internet pubblica da una sottorete privata, tra cui sottoreti, NAT gateway, gateway Internet e voci della tabella di routing.

Per creare il VPC
  1. Apri la VPC console Amazon all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nella dashboard, scegli Crea VPC.

  3. Per Risorse da creare, scegli VPCe altro ancora.

  4. Configura il VPC

    1. Per la generazione automatica del tag Nome, inserisci un nome per. VPC

    2. Per il IPv4CIDRblocco, puoi mantenere il suggerimento predefinito o, in alternativa, puoi inserire il CIDR blocco richiesto dall'applicazione o dalla rete.

    3. Se la tua applicazione comunica utilizzando IPv6 indirizzi, scegli IPv6CIDRblocca, blocco fornito da Amazon IPv6 CIDR.

  5. Configurazione delle sottoreti

    1. In Numero di zone di disponibilità, scegli 2. Ne consigliamo almeno due AZs per un'elevata disponibilità.

    2. Per Number of public subnets (Numero di sottoreti pubbliche), scegli 2.

    3. Per Number of private subnets (Numero di sottoreti private), scegli 2.

    4. Puoi mantenere il CIDR blocco predefinito per la sottorete pubblica o, in alternativa, puoi espandere Personalizza i CIDR blocchi di sottorete e inserire un CIDR blocco. Per ulteriori informazioni, consulta Blocchi di sottorete CIDR.

  6. Per i NATgateway, scegli 1 per AZ per migliorare la resilienza.

  7. Per il gateway Internet solo Egress, scegli se hai scelto di includere un blocco. IPv6 CIDR

  8. Per gli VPCendpoint, mantieni l'impostazione predefinita (S3 Gateway). Questa opzione è gratuita. Per ulteriori informazioni, consulta Tipi di VPC endpoint per Amazon S3.

  9. Per quanto riguarda DNSle opzioni, mantieni le impostazioni predefinite.

  10. Scegliete Crea VPC.

Configura la funzione Lambda

Per configurare una VPC quando si crea una funzione
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegli Crea funzione.

  3. In Informazioni di base, immettere un nome per la funzione in Nome funzione.

  4. Espandere Advanced settings (Impostazioni avanzate).

  5. Seleziona Abilita VPC, quindi scegli unVPC.

  6. (Facoltativo) Per consentire il IPv6traffico in uscita, seleziona Consenti il IPv6 traffico per sottoreti dual-stack.

  7. Per Sottoreti, seleziona tutte le sottoreti private. Le sottoreti private possono accedere a Internet tramite il gateway. NAT Il collegamento di una funzione a una sottorete pubblica non le consente l'accesso a Internet.

    Nota

    Se hai selezionato Consenti IPv6 il traffico per le sottoreti dual-stack, tutte le sottoreti selezionate devono avere un blocco e un blocco. IPv4 CIDR IPv6 CIDR

  8. Per i gruppi di sicurezza, seleziona un gruppo di sicurezza che consenta il traffico in uscita.

  9. Scegli Crea funzione.

Lambda crea automaticamente un ruolo di esecuzione con la policy AWSLambdaVPCAccessExecutionRole AWS gestita. Le autorizzazioni contenute in questa policy sono necessarie solo per creare interfacce di rete elastiche per la VPC configurazione, non per richiamare la funzione. Per applicare le autorizzazioni con privilegi minimi, è possibile rimuovere la AWSLambdaVPCAccessExecutionRolepolicy dal ruolo di esecuzione dopo aver creato la funzione e la configurazione. VPC Per ulteriori informazioni, consulta Autorizzazioni richieste IAM.

Per configurare a per una funzione esistente VPC

Per aggiungere una VPC configurazione a una funzione esistente, il ruolo di esecuzione della funzione deve disporre dell'autorizzazione per creare e gestire interfacce di rete elastiche. La politica AWSLambdaVPCAccessExecutionRole AWS gestita include le autorizzazioni richieste. Per applicare le autorizzazioni con privilegi minimi, puoi rimuovere la AWSLambdaVPCAccessExecutionRolepolicy dal tuo ruolo di esecuzione dopo aver creato la configurazione. VPC

  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegliere una funzione.

  3. Scegli la scheda Configurazione, quindi scegli. VPC

  4. In VPC, scegli Modifica.

  5. Seleziona ilVPC.

  6. (Facoltativo) Per consentire il IPv6traffico in uscita, seleziona Consenti il IPv6 traffico per sottoreti dual-stack.

  7. Per Sottoreti, seleziona tutte le sottoreti private. Le sottoreti private possono accedere a Internet tramite il gateway. NAT Il collegamento di una funzione a una sottorete pubblica non le consente l'accesso a Internet.

    Nota

    Se hai selezionato Consenti IPv6 il traffico per le sottoreti dual-stack, tutte le sottoreti selezionate devono avere un blocco e un blocco. IPv4 CIDR IPv6 CIDR

  8. Per i gruppi di sicurezza, seleziona un gruppo di sicurezza che consenta il traffico in uscita.

  9. Seleziona Salva.

Test della funzione

Usa il seguente codice di esempio per confermare che la tua funzione VPC connessa possa raggiungere la rete Internet pubblica. In caso di successo, il codice restituisce un codice di 200 stato. In caso di esito negativo, la funzione scade.

Node.js

Questo esempio utilizzafetch, che è disponibile nei runtime nodejs18.x e nelle versioni successive.

  1. Nel riquadro Codice sorgente della console Lambda, incolla il codice seguente nel file index.mjs. La funzione effettua una HTTP GET richiesta a un endpoint pubblico e restituisce il codice di HTTP risposta per verificare se la funzione ha accesso alla rete Internet pubblica.

    Editor di codice per console Lambda.
    Esempio — HTTP richiesta con async/await
    const url = "https://aws.amazon.com/"; export const handler = async(event) => { try { // fetch is available with Node.js 18 and later runtimes const res = await fetch(url); console.info("status", res.status); return res.status; } catch (e) { console.error(e); return 500; } };
  2. Seleziona Deploy (Implementa).

  3. Seleziona la scheda Test.

    Scheda Test della console Lambda.
  4. Scegli Test (Esegui test).

  5. La funzione restituisce un codice di 200 stato. Ciò significa che la funzione dispone di un accesso a Internet in uscita.

    Scheda Test della console Lambda.

    Se la funzione non riesce a raggiungere la rete Internet pubblica, viene visualizzato un messaggio di errore simile al seguente:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }
Python
  1. Nel riquadro Codice sorgente della console Lambda, incolla il codice seguente nel file lambda_function.py. La funzione effettua una HTTP GET richiesta a un endpoint pubblico e restituisce il codice di HTTP risposta per verificare se la funzione ha accesso alla rete Internet pubblica.

    Editor di codice per console Lambda.
    import urllib.request def lambda_handler(event, context): try: response = urllib.request.urlopen('https://aws.amazon.com') status_code = response.getcode() print('Response Code:', status_code) return status_code except Exception as e: print('Error:', e) raise e
  2. Seleziona Deploy (Implementa).

  3. Seleziona la scheda Test.

    Scheda Test della console Lambda.
  4. Scegli Test (Esegui test).

  5. La funzione restituisce un codice di 200 stato. Ciò significa che la funzione dispone di un accesso a Internet in uscita.

    Scheda Test della console Lambda.

    Se la funzione non riesce a raggiungere la rete Internet pubblica, viene visualizzato un messaggio di errore simile al seguente:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }

Se ne hai già uno VPC ma devi configurare l'accesso pubblico a Internet per una funzione Lambda, segui questi passaggi. Questa procedura presuppone che l'utente VPC disponga di almeno due sottoreti. Se non disponi di due sottoreti, consulta Creare una sottorete nella Amazon VPC User Guide.

Verifica la configurazione della tabella delle rotte

  1. Apri la VPC console Amazon all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Scegli l'VPCID.

    VPCelenco delle console diVPCs.
  3. Scorri verso il basso fino alla sezione Mappa delle risorse. Nota le mappature della tabella dei percorsi. Apri ogni tabella di routing mappata su una sottorete.

    VPCsezione della mappa delle risorse della console
  4. Scorri verso il basso fino alla scheda Percorsi. Controlla i percorsi per determinare se una delle seguenti condizioni è vera. Ciascuno di questi requisiti deve essere soddisfatto da una tabella dei percorsi separata.

    • Il traffico diretto a Internet (0.0.0.0/0forIPv4, ::/0 forIPv6) viene indirizzato a un gateway Internet (). igw-xxxxxxxxxx Ciò significa che la sottorete associata alla tabella delle rotte è una sottorete pubblica.

      Nota

      Se la tua sottorete non ha un IPv6 CIDR blocco, vedrai solo IPv4 route (). 0.0.0.0/0

      Esempio tabella di routing di sottorete pubblica
      Tabella di routing di sottorete pubblica con percorso verso il gateway Internet
    • Il traffico collegato a Internet for IPv4 (0.0.0.0/0) viene indirizzato a un NAT gateway (nat-xxxxxxxxxx) associato a una sottorete pubblica. Ciò significa che la sottorete è una sottorete privata che può accedere a Internet tramite il gateway. NAT

      Nota

      Se la sottorete ha un IPv6 CIDR blocco, la tabella delle rotte deve inoltre indirizzare il IPv6 traffico diretto a Internet (::/0) verso un gateway Internet solo in uscita (). eigw-xxxxxxxxxx Se la sottorete non ha un IPv6 CIDR blocco, vedrete solo route (). IPv4 0.0.0.0/0

      Esempio tabella di routing di sottorete privata
      tabella di routing di sottorete privata con percorso verso il gateway NAT
  5. Ripeti il passaggio precedente fino a quando non avrai esaminato ogni tabella di routing associata a una sottorete del tuo paese VPC e avrai confermato di avere una tabella di routing con un gateway Internet e una tabella di routing con un NAT gateway.

    Se non disponi di due tabelle di routing, una con un percorso verso un gateway Internet e una con un percorso verso un NAT gateway, segui questi passaggi per creare le risorse mancanti e le voci della tabella di routing.

Segui questi passaggi per creare una tabella di routing e associarla a una sottorete.

Per creare una tabella di routing personalizzata utilizzando la VPC console Amazon
  1. Apri la VPC console Amazon all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel riquadro di navigazione, seleziona Tabelle di routing.

  3. Selezionare Create route table (Crea tabella di instradamento).

  4. (Facoltativo) In Name (Nome), inserisci un nome per la tabella di instradamento.

  5. Perché VPC, scegli il tuoVPC.

  6. (Facoltativo) Per aggiungere un tag, scegli Add new tag (Aggiungi nuovo tag) e inserisci la chiave e il valore del tag.

  7. Selezionare Create route table (Crea tabella di instradamento).

  8. Nella scheda Associazioni sottorete scegli Modifica associazioni sottorete.

    Collega il gateway Internet a VPC
  9. Seleziona la casella di controllo per la sottorete da associare alla tabella di instradamento.

  10. Scegli Salva associazioni.

Segui questi passaggi per creare un gateway Internet, collegarlo al tuo VPC e aggiungerlo alla tabella di routing della sottorete pubblica.

Creare un gateway Internet
  1. Apri la VPC console Amazon all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel pannello di navigazione, scegli Internet gateways (Gateway Internet).

  3. Scegliere Crea gateway Internet.

  4. (Facoltativo) Inserisci un nome per il gateway Internet.

  5. (Facoltativo) Per aggiungere un tag, scegli Add new tag (Aggiungi nuovo tag) e immetti la chiave e il valore del tag.

  6. Scegliere Crea gateway Internet.

  7. Scegli Allega a a VPC dal banner nella parte superiore dello schermo, seleziona uno disponibileVPC, quindi scegli Collega gateway Internet.

    Collega il gateway Internet a VPC
  8. Scegli l'VPCID.

    Pagina dei dettagli del gateway Internet
  9. Scegli nuovamente l'VPCID per aprire la pagina dei VPC dettagli.

    VPCElenco filtrato nella console Amazon VPC
  10. Scorri verso il basso fino alla sezione Mappa delle risorse, quindi scegli una sottorete. I dettagli della sottorete vengono visualizzati in una nuova scheda.

    VPCconsole Mappa delle risorse con elenco delle sottoreti.
  11. Scegli il link nella tabella delle rotte.

    Collegamento alla tabella delle rotte nella pagina dei dettagli della sottorete
  12. Scegli l'ID della tabella delle rotte per aprire la pagina dei dettagli della tabella delle rotte.

    Elenco filtrato della tabella dei percorsi
  13. In Percorsi, scegli Modifica percorsi.

    Elenco dei percorsi con il pulsante Modifica percorsi
  14. Scegli Aggiungi percorso, quindi inserisci 0.0.0.0/0 nella casella Destinazione.

    Aggiungi destinazione per un nuovo percorso
  15. Per Target, seleziona Internet gateway, quindi scegli il gateway Internet creato in precedenza. Se la sottorete ha un IPv6 CIDR blocco, devi anche aggiungere un percorso ::/0 per lo stesso gateway Internet.

    Aggiungi destinazione per un nuovo percorso
  16. Scegli Save changes (Salva modifiche).

Segui questi passaggi per creare un NAT gateway, associarlo a una sottorete pubblica e aggiungerlo alla tabella di routing della sottorete privata.

Per creare un NAT gateway e associarlo a una sottorete pubblica
  1. Nel riquadro di navigazione, scegli NATgateway.

  2. Scegli Crea NAT gateway.

  3. (Facoltativo) Inserisci un nome per il NAT gateway.

  4. Per Subnet, seleziona una sottorete pubblica nel tuo. VPC (Una sottorete pubblica è una sottorete che ha un percorso diretto verso un gateway Internet nella tabella di routing.)

    Nota

    NATi gateway sono associati a una sottorete pubblica, ma la voce della tabella di routing si trova nella sottorete privata.

  5. Per Elastic IP allocation ID, seleziona un indirizzo IP elastico o scegli Allocate Elastic IP.

  6. Scegli Crea NAT gateway.

Per aggiungere una route al NAT gateway nella tabella di routing della sottorete privata
  1. Nel pannello di navigazione, scegli Subnets (Sottoreti).

  2. Seleziona una sottorete privata nella tua. VPC (Una sottorete privata è una sottorete che non ha un percorso verso un gateway Internet nella tabella delle rotte.)

  3. Scegli il link nella tabella delle rotte.

    Collegamento alla tabella delle rotte nella pagina dei dettagli della sottorete
  4. Scegli l'ID della tabella delle rotte per aprire la pagina dei dettagli della tabella delle rotte.

    Elenco filtrato della tabella dei percorsi
  5. Scorri verso il basso e scegli la scheda Percorsi, quindi scegli Modifica percorsi

    Scheda Percorsi nella pagina dei dettagli della tabella dei percorsi
  6. Scegli Aggiungi percorso, quindi inserisci 0.0.0.0/0 nella casella Destinazione.

    Aggiungi destinazione per un nuovo percorso
  7. Per Target, seleziona NATgateway, quindi scegli il NAT gateway che hai creato in precedenza.

    Aggiungi destinazione per un nuovo percorso
  8. Scegli Save changes (Salva modifiche).

Segui questi passaggi per creare un gateway Internet solo in uscita e aggiungerlo alla tabella di routing della tua sottorete privata.

Per creare un gateway internet egress-only
  1. Nel riquadro di navigazione, seleziona Gateway Internet solo in uscita.

  2. Seleziona Crea gateway Internet solo in uscita.

  3. (Facoltativo) Inserisci un nome.

  4. Seleziona il gateway VPC Internet in cui creare il gateway Internet solo in uscita.

  5. Seleziona Crea gateway Internet solo in uscita.

  6. Scegli il link in Attached ID. VPC

    Pagina dei dettagli del gateway Internet solo in uscita
  7. Scegli il link sotto VPCID per aprire la pagina dei VPC dettagli.

  8. Scorri verso il basso fino alla sezione Mappa delle risorse, quindi scegli una sottorete privata. (Una sottorete privata è una sottorete che non ha un percorso verso un gateway Internet nella tabella delle rotte.) I dettagli della sottorete vengono visualizzati in una nuova scheda.

    VPCconsole Mappa delle risorse con elenco delle sottoreti.
  9. Scegli il link nella tabella delle rotte.

    Collegamento alla tabella delle rotte nella pagina dei dettagli della sottorete
  10. Scegli l'ID della tabella delle rotte per aprire la pagina dei dettagli della tabella delle rotte.

    Elenco filtrato della tabella dei percorsi
  11. In Percorsi, scegli Modifica percorsi.

    Elenco dei percorsi con il pulsante Modifica percorsi
  12. Scegli Aggiungi percorso, quindi inserisci ::/0 nella casella Destinazione.

    Aggiungi destinazione per un nuovo percorso
  13. Per Target, seleziona Gateway Internet Only Egress, quindi scegli il gateway creato in precedenza.

    Aggiungi destinazione per un nuovo percorso
  14. Scegli Save changes (Salva modifiche).

Configura la funzione Lambda

Per configurare un VPC quando si crea una funzione
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegli Crea funzione.

  3. In Informazioni di base, immettere un nome per la funzione in Nome funzione.

  4. Espandere Advanced settings (Impostazioni avanzate).

  5. Seleziona Abilita VPC, quindi scegli unVPC.

  6. (Facoltativo) Per consentire il IPv6traffico in uscita, seleziona Consenti il IPv6 traffico per sottoreti dual-stack.

  7. Per Sottoreti, seleziona tutte le sottoreti private. Le sottoreti private possono accedere a Internet tramite il gateway. NAT Il collegamento di una funzione a una sottorete pubblica non le consente l'accesso a Internet.

    Nota

    Se hai selezionato Consenti IPv6 il traffico per le sottoreti dual-stack, tutte le sottoreti selezionate devono avere un blocco e un blocco. IPv4 CIDR IPv6 CIDR

  8. Per i gruppi di sicurezza, seleziona un gruppo di sicurezza che consenta il traffico in uscita.

  9. Scegli Crea funzione.

Lambda crea automaticamente un ruolo di esecuzione con la policy AWSLambdaVPCAccessExecutionRole AWS gestita. Le autorizzazioni contenute in questa policy sono necessarie solo per creare interfacce di rete elastiche per la VPC configurazione, non per richiamare la funzione. Per applicare le autorizzazioni con privilegi minimi, è possibile rimuovere la AWSLambdaVPCAccessExecutionRolepolicy dal ruolo di esecuzione dopo aver creato la funzione e la configurazione. VPC Per ulteriori informazioni, consulta Autorizzazioni richieste IAM.

Per configurare a per una funzione esistente VPC

Per aggiungere una VPC configurazione a una funzione esistente, il ruolo di esecuzione della funzione deve disporre dell'autorizzazione per creare e gestire interfacce di rete elastiche. La politica AWSLambdaVPCAccessExecutionRole AWS gestita include le autorizzazioni richieste. Per applicare le autorizzazioni con privilegi minimi, puoi rimuovere la AWSLambdaVPCAccessExecutionRolepolicy dal tuo ruolo di esecuzione dopo aver creato la configurazione. VPC

  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegliere una funzione.

  3. Scegli la scheda Configurazione, quindi scegli. VPC

  4. In VPC, scegli Modifica.

  5. Seleziona ilVPC.

  6. (Facoltativo) Per consentire il IPv6traffico in uscita, seleziona Consenti il IPv6 traffico per sottoreti dual-stack.

  7. Per Sottoreti, seleziona tutte le sottoreti private. Le sottoreti private possono accedere a Internet tramite il gateway. NAT Il collegamento di una funzione a una sottorete pubblica non le consente l'accesso a Internet.

    Nota

    Se hai selezionato Consenti IPv6 il traffico per le sottoreti dual-stack, tutte le sottoreti selezionate devono avere un blocco e un blocco. IPv4 CIDR IPv6 CIDR

  8. Per i gruppi di sicurezza, seleziona un gruppo di sicurezza che consenta il traffico in uscita.

  9. Seleziona Salva.

Test della funzione

Usa il seguente codice di esempio per confermare che la tua funzione VPC connessa possa raggiungere la rete Internet pubblica. In caso di successo, il codice restituisce un codice di 200 stato. In caso di esito negativo, la funzione scade.

Node.js

Questo esempio utilizzafetch, che è disponibile nei runtime nodejs18.x e nelle versioni successive.

  1. Nel riquadro Codice sorgente della console Lambda, incolla il codice seguente nel file index.mjs. La funzione effettua una HTTP GET richiesta a un endpoint pubblico e restituisce il codice di HTTP risposta per verificare se la funzione ha accesso alla rete Internet pubblica.

    Editor di codice per console Lambda.
    Esempio — HTTP richiesta con async/await
    const url = "https://aws.amazon.com/"; export const handler = async(event) => { try { // fetch is available with Node.js 18 and later runtimes const res = await fetch(url); console.info("status", res.status); return res.status; } catch (e) { console.error(e); return 500; } };
  2. Seleziona Deploy (Implementa).

  3. Seleziona la scheda Test.

    Scheda Test della console Lambda.
  4. Scegli Test (Esegui test).

  5. La funzione restituisce un codice di 200 stato. Ciò significa che la funzione dispone di un accesso a Internet in uscita.

    Scheda Test della console Lambda.

    Se la funzione non riesce a raggiungere la rete Internet pubblica, viene visualizzato un messaggio di errore simile al seguente:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }
Python
  1. Nel riquadro Codice sorgente della console Lambda, incolla il codice seguente nel file lambda_function.py. La funzione effettua una HTTP GET richiesta a un endpoint pubblico e restituisce il codice di HTTP risposta per verificare se la funzione ha accesso alla rete Internet pubblica.

    Editor di codice per console Lambda.
    import urllib.request def lambda_handler(event, context): try: response = urllib.request.urlopen('https://aws.amazon.com') status_code = response.getcode() print('Response Code:', status_code) return status_code except Exception as e: print('Error:', e) raise e
  2. Seleziona Deploy (Implementa).

  3. Seleziona la scheda Test.

    Scheda Test della console Lambda.
  4. Scegli Test (Esegui test).

  5. La funzione restituisce un codice di 200 stato. Ciò significa che la funzione dispone di un accesso a Internet in uscita.

    Scheda Test della console Lambda.

    Se la funzione non riesce a raggiungere la rete Internet pubblica, viene visualizzato un messaggio di errore simile al seguente:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }