

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à.

# Configurazione della rete per AWS Lambda Funzioni Web
<a name="web-functions-networking"></a>

Una funzione Web accetta le richieste dai client. Può anche accedere ad altre risorse per svolgere il proprio lavoro, ad esempio un database nel tuo VPC, un'API interna o un servizio sulla rete Internet pubblica. Queste due direzioni vengono configurate in modo indipendente. Puoi esporre un endpoint ai chiamanti senza concedergli l'accesso VPC o fornire a una funzione un accesso privato in uscita senza modificare chi può richiamarlo.

Il traffico in entrata raggiunge una funzione Web tramite un endpoint. L'endpoint definisce il nome di dominio, il tipo di endpoint, le regioni e la configurazione di autorizzazione. Il traffico in uscita è configurato in base a una revisione. Una revisione senza connettore di rete in uscita raggiunge direttamente le destinazioni pubbliche. `IPv4` Una revisione che fa riferimento a un connettore invia il traffico in uscita tramite il tuo VPC. Una funzione Web viene eseguita sull'infrastruttura posseduta e gestita da Lambda, non all'interno del tuo VPC. Un connettore di rete in uscita aggiunge solo l'accesso VPC in uscita. Non cambia il modo in cui i client raggiungono l'endpoint o chi è autorizzato a richiamarlo.

**Nota**  
I nomi di dominio degli endpoint Web Function sono raggiungibili dalla rete Internet pubblica. AWS PrivateLink gli endpoint di interfaccia non sono disponibili per i nomi di dominio degli endpoint Web Function. Utilizza la configurazione di autorizzazione dell'endpoint per controllare l'accesso.

## Connettività in entrata
<a name="web-functions-networking-inbound"></a>

I client richiamano una funzione Web tramite un endpoint HTTPS Lambda-managed pubblico. Lambda termina TLS e inoltra la richiesta al server HTTP dell'applicazione. L'endpoint gestito supporta. HTTP/1.1 Non espone un indirizzo VPC privato né accetta connessioni dirette all'ambiente di esecuzione.

`IamAuth`controlla chi può richiamare un endpoint, ma non lo rende privato a livello di rete. Per le opzioni di autorizzazione, vedere. [Controllo dell'accesso agli endpoint Lambda Web Function](web-functions-endpoint-access-control.md)

L'endpoint controlla il routing, l'autorizzazione, la limitazione e il ridimensionamento delle richieste. Il tipo di endpoint e il set di regione sono fissi al momento della creazione. Per modificare una delle due proprietà, crea un nuovo endpoint e sposta i client nel nuovo nome di dominio.

La configurazione degli endpoint è indipendente dall'uscita del VPC. L'aggiunta di un connettore di rete in uscita a una revisione non rende l'endpoint privato e non limita le richieste in entrata.

**Importante**  
È possibile utilizzare i connettori di rete in uscita solo con gli endpoint. `HomeRegion` Lambda rifiuta i tentativi di indirizzare un `PerRegion` endpoint `MultiRegion` OR a una revisione che fa riferimento a un connettore di rete in uscita.

Quando i pesi delle revisioni suddividono il traffico tra revisioni con configurazioni di connettori diverse, le richieste utilizzano percorsi di rete diversi. Quando diagnostichi una connettività intermittente, controlla prima la modalità di distribuzione automatica dell'endpoint e i pesi di revisione. Per sapere come indirizzano le richieste verso le revisioni, vedi. [Modelli di implementazione](web-functions-deployment.md)

### Aggiungere una porta d'ingresso HTTP davanti a un endpoint
<a name="web-functions-networking-front-door"></a>

Una porta d'ingresso è un servizio che riceve le richieste dei clienti e le inoltra all'endpoint. Aggiunge funzionalità come un dominio personalizzato, la memorizzazione nella cache o la protezione firewall delle applicazioni Web. Gli endpoint Web Function non supportano nomi di dominio personalizzati o associazioni dirette AWS WAF . Usa Amazon CloudFront davanti all'endpoint quando hai bisogno di un dominio personalizzato, della memorizzazione nella cache perimetrale HTTP/2 o HTTP/3 tra il visualizzatore e l'edge, della compressione delle risposte o AWS WAF dei controlli.

Il diagramma seguente mostra una porta principale di produzione. Un client si connette a un dominio CloudFront personalizzato protetto da AWS WAF. CloudFront invia la richiesta a un endpoint protetto di Web Function, che la indirizza verso un ambiente di esecuzione. Senza un connettore di rete in uscita, l'applicazione può chiamare endpoint di AWS servizio pubblico o Internet. Non può raggiungere risorse che hanno solo indirizzi VPC privati. Per accedere a tali risorse, consulta[Connessione di una funzione Web al tuo VPC](#web-functions-networking-vpc). Con`IamAuth`, CloudFront firma ogni richiesta di origine e Lambda autorizza la richiesta prima di richiamare la tua funzione. Lambda conserva l'`Authorization`intestazione originale del visualizzatore e la inoltra alla tua funzione. Il Lambda-provided dominio accetta solo le richieste firmate dai principali titolari autorizzati a richiamarle e rifiuta le richieste dirette non firmate, ad esempio quelle che un browser chiama direttamente il dominio. Per garantire che l'endpoint accetti le chiamate solo dalla tua distribuzione, aggiungi una policy basata sulle risorse che conceda l'autorizzazione di richiamo al responsabile del CloudFront servizio e la estenda all'Amazon Resource Name (ARN) della tua distribuzione con una condizione ARN di origine. Con`ApplicationManaged`, l'endpoint è pubblico e le richieste dirette ignorano e. CloudFront AWS WAF

![Gli spettatori si connettono a una CloudFront distribuzione con il tuo dominio personalizzato, protetto da. AWS WAF CloudFront firma le richieste di origine verso un endpoint Web Function che utilizza. IamAuth Le richieste dirette non firmate al Lambda-provided dominio vengono rifiutate.](https://docs.aws.amazon.com/it_it/lambda/latest/dg/images/web-functions-production-front-door.png)


1. Configura il dominio Web Function come origine personalizzata HTTPS.

1. Allega il certificato e il nome di dominio alternativo alla distribuzione e indirizza i record DNS (Domain Name System) alla distribuzione.

1. Inoltra solo le intestazioni, i cookie e le stringhe di query necessarie all'applicazione. Non inoltrare l'`Host`intestazione del visualizzatore, perché Lambda indirizza `Host` e restituisce HTTP 404 quando non è il dominio dell'endpoint. Se utilizzi una policy di richiesta di origine gestita che inoltra tutte le intestazioni dei visualizzatori, scegli. `AllViewerExceptHostHeader` I limiti delle intestazioni degli endpoint includono le intestazioni inoltrate.

1. (Facoltativo) Collega un ACL AWS WAF web quando hai bisogno di un'ispezione basata su IP, bot, velocità o regole gestite.

1. Proteggi l'origine in modo che i client non possano aggirare la distribuzione. Per un IAM-authorized endpoint, concedi l'accesso solo all'identità front-door prevista. Per l'autorizzazione gestita dall'applicazione, richiedi e convalida un segreto di origine o un'altra prova a livello di applicazione che attesti che la richiesta sia pervenuta tramite la distribuzione.

Per la procedura di autorizzazione, vedere. CloudFront [CloudFront integrazione](web-functions-endpoint-access-control.md#web-functions-endpoint-access-control-cloudfront)

### Accesso al browser e CORS
<a name="web-functions-networking-cors"></a>

Lambda non aggiunge intestazioni di condivisione Cross-Origin delle risorse (CORS) per Web Functions. L'applicazione o la porta d'ingresso devono gestire le richieste preliminari ed effettive.
+ Restituisce l'origine consentita invece di riflettere ogni `Origin` valore.
+ Consenti solo i metodi e le intestazioni di richiesta utilizzati dall'applicazione.
+ Quando i browser inviano le credenziali, utilizzate un'origine e un ritorno espliciti. `Access-Control-Allow-Credentials: true` Non combinate credenziali con un'origine con caratteri jolly.
+ Verifica le richieste di `OPTIONS` preflight separatamente dal metodo di applicazione.
+ Autentica e autorizza ogni richiesta protetta. CORS non è un controllo di autenticazione.

### Limitazioni dello streaming e del protocollo
<a name="web-functions-networking-protocols"></a>

Le funzioni Web inviano i corpi delle richieste all'applicazione non appena arrivano e trasmettono le risposte al client HTTP/1.1. Il percorso della richiesta è half-duplex: Lambda inoltra l'intero corpo della richiesta prima di fornire la risposta dell'applicazione. Leggi completamente il corpo della richiesta prima di scrivere la risposta. Impostato `timeoutSeconds` per coprire lo streaming in entrambe le direzioni: ricezione del corpo della richiesta e invio della risposta. Allo scadere del timeout, Lambda termina la risposta. Il client riceve il codice di stato già inviato, con un corpo troncato. Interrompi il lavoro a monte quando il client si disconnette.

Lambda non supporta WebSocket gli aggiornamenti. Lambda rimuove le intestazioni di aggiornamento specifiche della connessione prima di inoltrare la richiesta. Utilizza gli eventi inviati dal server quando lo streaming unidirezionale da server a client è sufficiente.

Per il contratto completo di intestazione e metodo, consulta. [Richieste e risposte HTTP](web-functions-http.md)

## Connettività in uscita
<a name="web-functions-networking-outbound"></a>

Scegli il percorso di rete in uscita per ogni revisione.
+ Senza un connettore di rete in uscita: la revisione raggiunge le `IPv4` destinazioni pubbliche direttamente senza attraversare il tuo VPC. L'indirizzo di origine è Lambda-managed, non è stabile e non è adatto per un elenco di indirizzi consentiti. La revisione non prevede l'accesso a risorse private nel tuo VPC.
+ Con un connettore di rete in uscita: la revisione invia il traffico in uscita tramite interfacce di rete elastiche nelle sottoreti del connettore. Si applicano le tabelle di routing VPC, i gruppi di sicurezza e gli elenchi di controllo degli accessi alla rete (ACL). Utilizza questa opzione per raggiungere risorse VPC private, reti locali connesse tramite VPN Direct Connect o destinazioni che richiedono traffico dal tuo spazio di indirizzi.

Il riferimento a un connettore sostituisce il percorso in uscita predefinito. Un connettore inserisce traffico nel tuo VPC, ma non fornisce l'accesso a Internet. Per raggiungere `IPv4` destinazioni pubbliche, le sottoreti dei connettori necessitano di un percorso verso un gateway NAT. Per raggiungere le `IPv6` destinazioni pubbliche, hanno bisogno di un percorso verso un gateway Internet solo in uscita.

Non esiste un indirizzo IP di origine stabile per il traffico del connettore. Configura i gruppi di sicurezza di destinazione per consentire i gruppi di sicurezza del connettore. Se una destinazione non supporta i riferimenti ai gruppi di sicurezza, consenti i blocchi CIDR della sottorete del connettore anziché un indirizzo individuale.

Lambda esegue le operazioni dei connettori in modo asincrono. Un connettore segnala `PENDING` mentre Lambda crea le sue interfacce di rete e `ACTIVE` quando le revisioni possono farvi riferimento. Gli altri stati includono`INACTIVE`,`FAILED`, `DELETING` e. `DELETE_FAILED`

Dopo un aggiornamento, verifica `LastUpdateStatus` la presenza di `InProgress``Successful`, o`Failed`. Se un'operazione non riesce, utilizza il motivo dello stato e il codice del motivo per identificare la sottorete, il gruppo di sicurezza, le autorizzazioni o la capacità dell'indirizzo IP interessati.

### Risoluzione DNS
<a name="web-functions-networking-dns"></a>

Per i nomi DNS privati, abilita il supporto DNS e i nomi host DNS nel VPC del connettore. Associa tutte le zone ospitate private Route 53 richieste a quel VPC.

Ogni ambiente di esecuzione memorizza nella cache le risposte DNS. Dopo aver modificato un record DNS, gli ambienti esistenti continuano a utilizzare la vecchia risposta fino alla scadenza del valore memorizzato nella cache o Lambda sostituisce l'ambiente. Per forzare un'implementazione corretta, crea una nuova revisione e trasferisci il traffico degli endpoint su di essa.

Durante la risoluzione dei problemi, verifica separatamente la risoluzione dei nomi e la raggiungibilità della rete. Connect a una destinazione tramite indirizzo IP per verificare il percorso di rete, quindi testarne il nome DNS.

## Connessione di una funzione Web al tuo VPC
<a name="web-functions-networking-vpc"></a>

Un connettore di rete in uscita è una risorsa Lambda riutilizzabile. Il connettore viene creato una sola volta e si fa riferimento a una versione del connettore pubblicata da ogni revisione di Web Function che richiede l'accesso tramite VPC.

Per Web Functions, il riferimento al connettore ha le seguenti proprietà:
+ Una revisione fa riferimento a zero o a un connettore.
+ L'ARN del connettore deve includere un qualificatore di versione.
+ Il connettore deve trovarsi nello stesso AWS account e nella stessa regione della funzione Web.
+ Il connettore deve avere `WebFunction` come tipo di risorsa di elaborazione associata.
+ Solo un `HomeRegion` endpoint supporta le revisioni che fanno riferimento a un connettore di rete in uscita.
+ Non è possibile modificare il riferimento dopo averlo impostato. Per aggiungerlo, modificarlo o rimuoverlo, crea una nuova revisione.

### Prerequisiti
<a name="web-functions-networking-vpc-prerequisites"></a>

Prima di creare il connettore:
+ Scegli almeno due sottoreti in zone di disponibilità diverse con indirizzi IP disponibili.
+ Scegli i gruppi di sicurezza che consentano il traffico in uscita richiesto.
+ Consenti il traffico in entrata dai gruppi di sicurezza del connettore su ciascuna destinazione.
+ Configura i percorsi dalle sottoreti del connettore verso le destinazioni private, locali o pubbliche richieste.
+ Crea un ruolo operatore che conceda l'autorizzazione Lambda per gestire le interfacce di rete.
+ Assicurati che l'identità che crea il connettore e la revisione disponga delle autorizzazioni necessarie[Autorizzazioni per la configurazione della rete](web-functions-permissions.md#web-functions-permissions-networking), incluse quelle relative al connettore e `lambda:PassNetworkConnector` `iam:PassRole` al ruolo di operatore.

Il ruolo di operatore del connettore e il ruolo di esecuzione della revisione hanno scopi diversi. Il ruolo di operatore gestisce le interfacce di rete nel tuo VPC. Il ruolo di esecuzione concede all'applicazione l'autorizzazione a chiamare le API. AWS Non si aggiungono le autorizzazioni dell'interfaccia di rete del connettore al ruolo di esecuzione.

### Autorizzazioni per il ruolo di operatore
<a name="web-functions-networking-vpc-operator-role"></a>

Lambda assume il ruolo di operatore del connettore per gestire le interfacce di rete del connettore. La politica di fiducia del ruolo deve consentire al responsabile del servizio Lambda di assumerlo: `lambda.amazonaws.com`

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

Allega una politica di autorizzazioni come la seguente al ruolo di operatore del connettore. Questa politica consente a Lambda di creare e contrassegnare le interfacce di rete del connettore:

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CreateENI",
      "Effect": "Allow",
      "Action": "ec2:CreateNetworkInterface",
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:security-group/*"
      ]
    },
    {
      "Sid": "TagENI",
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:*:*:network-interface/*",
      "Condition": {
        "StringEquals": {
          "ec2:ManagedResourceOperator": "network-connectors.lambda.amazonaws.com"
        }
      }
    }
  ]
}
```

### Creare un connettore
<a name="web-functions-networking-vpc-create-connector"></a>

Il AWS CLI comando seguente crea un `IPv4` connettore per Web Functions. Sostituisci il nome del connettore, gli ID di sottorete, l'ID del gruppo di sicurezza e l'ARN del ruolo operatore con i tuoi valori.

```
aws lambda-core create-network-connector \
  --name my-connector \
  --configuration '{
    "VpcEgressConfiguration": {
      "SubnetIds": [
        "subnet-0ab1c2d3e4f5a6b78",
        "subnet-1bc2d3e4f5a6b7c89"
      ],
      "SecurityGroupIds": ["sg-0123456789abcdef0"],
      "NetworkProtocol": "IPv4",
      "AssociatedComputeResourceTypes": ["WebFunction"]
    }
  }' \
  --operator-role arn:aws:iam::123456789012:role/NetworkConnectorOperatorRole
```

Un connettore supporta un tipo di risorsa di elaborazione. Un connettore per Web Functions non supporta un altro tipo di calcolo Lambda e il relativo tipo di risorsa di elaborazione è immutabile.

Lambda crea il connettore in modo asincrono. `get-network-connector`Usalo per attendere che lo `State` sia `ACTIVE` e annota il numero di versione corrente.

### Fate riferimento al connettore in base a una revisione
<a name="web-functions-networking-vpc-reference-revision"></a>

Imposta `serviceConfig.egressNetworkConnectorArn` quando crei la prima revisione della funzione Web o una revisione successiva. Usa un ARN qualificato per la versione:

```
arn:aws:lambda:us-east-1:123456789012:network-connector:nc-0a1b2c3d4e5f6a7b8:4
```

Il AWS CLI comando seguente crea una revisione che fa riferimento alla versione 4 del connettore. Sostituisci il nome della funzione, l'ARN del ruolo di esecuzione, l'ARN del connettore e la regione con i tuoi valori.

```
aws lambda-web create-web-function-revision \
  --function-name my-web-function \
  --build-config file://build-config.json \
  --service-config '{
    "executionRoleArn": "arn:aws:iam::123456789012:role/WebFunctionExecutionRole",
    "timeoutSeconds": 30,
    "egressNetworkConnectorArn": "arn:aws:lambda:us-east-1:123456789012:network-connector:nc-0a1b2c3d4e5f6a7b8:4"
  }' \
  --region us-east-1
```

Un ARN, un nome o un ID connettore non qualificati non sono accettati in una revisione. Dopo aver creato la revisione:
+ Attendi che lo stato della revisione sia raggiunto. `Active`
+ Leggete la revisione e confermate che `egressNetworkConnectorArn` contiene la versione del connettore prevista.
+ Verifica che l'endpoint indirizzi il traffico verso la revisione. Un `HomeRegion` endpoint in `LatestRevision` modalità rileva automaticamente l'ultima revisione attiva. Per un endpoint in `Disabled` modalità, aggiorna i relativi pesi di revisione.
+ Testa una destinazione VPC e conferma il traffico con VPC Flow Logs.

La modalità di distribuzione automatica dell'endpoint determina se la creazione di una revisione attiva aggiorna automaticamente il routing. In tutte le modalità, verifica la revisione in corso prima di testarne il connettore.

## Aggiornamento o rimozione della connettività VPC
<a name="web-functions-networking-update-remove"></a>

L'aggiornamento di un connettore pubblica una nuova versione. Le revisioni esistenti rimangono collegate alla versione nel relativo connettore ARN.

Per implementare una modifica del connettore:
+ Aggiorna il connettore con`update-network-connector`. Il connettore deve essere`ACTIVE`. Fornisci l'ID completo`VpcEgressConfiguration`, inclusi tutti gli ID di sottorete e gli ID del gruppo di sicurezza che desideri conservare, poiché l'aggiornamento sostituisce la configurazione esistente.
+ Attendi che il connettore `LastUpdateStatus` diventi. `Successful`
+ Scarica la nuova versione del connettore.
+ Crea una revisione che faccia riferimento al nuovo ARN qualificato per la versione.
+ Per un `HomeRegion` endpoint in `LatestRevision` modalità, confermate che abbia rilevato la nuova revisione attiva. Per un endpoint in `Disabled` modalità, sposta il traffico aggiornando i relativi pesi di revisione.

L'aggiornamento del connettore senza creare una revisione che faccia riferimento alla nuova versione non modifica la configurazione di rete dell'esecuzione di Web Functions.

Per rimuovere la connettività VPC, crea una revisione senza. `egressNetworkConnectorArn` Un `HomeRegion` endpoint in `LatestRevision` modalità lo rileva quando diventa attivo. Per un endpoint in `Disabled` modalità, sposta il traffico aggiornando i relativi pesi di revisione. La nuova revisione utilizza l'`IPv4`uscita Lambda-managed pubblica e non dispone più dell'accesso privato al VPC.

**Nota**  
Prima di eliminare un connettore di rete in uscita, sposta il traffico degli endpoint da ogni revisione di Web Function che fa riferimento a qualsiasi versione del connettore, quindi elimina tali revisioni. L'eliminazione di un connettore mentre una revisione attiva fa ancora riferimento ad esso interrompe la connettività di rete sia per gli ambienti di esecuzione esistenti che per quelli nuovi che utilizzano quella revisione.

## Supporto IPv6
<a name="web-functions-networking-ipv6"></a>

Sono supportati solo il percorso in uscita predefinito e un connettore. `IPv4` `IPv4` Per utilizzarlo`IPv6`, configura il connettore con `NetworkProtocol` set to`DualStack`.

Per la connettività dual-stack:
+ Le sottoreti VPC e connettore devono avere blocchi CIDR. `IPv6`
+ Le tabelle delle rotte devono contenere percorsi per le destinazioni richieste. `IPv6`
+ I gruppi di sicurezza e gli ACL di rete devono consentire `IPv6` il traffico.
+ `IPv6`L'accesso pubblico richiede un percorso: :/0 verso un gateway Internet solo in uscita.
+ Fai riferimento alla versione del connettore che è stata creata quando hai aggiornato il connettore a. `DualStack`

Non determinate `IPv6` la disponibilità controllando le interfacce all'interno di un ambiente di esecuzione. Verificalo effettuando una `IPv6` connessione dal codice dell'applicazione e controllando i log di flusso VPC.