Lambda funge da obiettivi in VPC Lattice - Amazon VPC Lattice

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

Lambda funge da obiettivi in VPC Lattice

Puoi registrare le tue funzioni Lambda come destinazioni con un gruppo di destinazione VPC Lattice e configurare una regola listener per inoltrare le richieste al gruppo target per la tua funzione Lambda. Quando il servizio inoltra la richiesta a un gruppo target con una funzione Lambda come destinazione, richiama la funzione Lambda e passa il contenuto della richiesta alla funzione Lambda, in formato JSON. Per ulteriori informazioni, consulta Using AWS Lambda with Amazon VPC Lattice nella Developer Guide.AWS Lambda

Limitazioni
  • La funzione Lambda e il gruppo di destinazioni devono trovarsi nello stesso account e nella stessa regione.

  • La dimensione massima del corpo della richiesta che puoi inviare a una funzione Lambda è di 6 MB.

  • La dimensione massima della risposta JSON che la funzione Lambda può inviare è di 6 MB.

  • Il protocollo deve essere HTTP o HTTPS.

Preparazione della funzione Lambda

I seguenti consigli si applicano se si utilizza la funzione Lambda con un servizio VPC Lattice.

Autorizzazioni a richiamare la funzione Lambda

Quando crei il gruppo target e registri la funzione Lambda utilizzando AWS Management Console o il, AWS CLI VPC Lattice aggiunge le autorizzazioni richieste alla politica della funzione Lambda per tuo conto.

Puoi anche aggiungere le autorizzazioni da solo utilizzando la seguente chiamata API:

aws lambda add-permission \ --function-name lambda-function-arn-with-alias-name \ --statement-id vpc-lattice \ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn target-group-arn
Controllo delle versioni della funzione Lambda

Puoi registrare una funzione Lambda per gruppo di destinazioni. Per assicurarti di poter modificare la funzione Lambda e che il servizio VPC Lattice richiami sempre la versione corrente della funzione Lambda, crea un alias di funzione e includi l'alias nella funzione ARN quando registri la funzione Lambda con il servizio VPC Lattice. Per ulteriori informazioni, consulta Versioni della funzione Lambda e Creazione di un alias per una funzione Lambda nella Guida per gli sviluppatori.AWS Lambda

Creazione di un gruppo di destinazioni per la funzione Lambda

Creare un gruppo target, che viene utilizzato nell'instradamento delle richieste. Se il contenuto della richiesta corrisponde a una regola del listener con un'azione per inoltrarlo a questo gruppo di destinazione, il servizio VPC Lattice richiama la funzione Lambda registrata.

Per creare un gruppo target e registrare la funzione Lambda utilizzando la console
  1. Apri alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel pannello di navigazione, in VPC Lattice, scegli Target groups.

  3. Scegliere Crea gruppo target.

  4. Per Seleziona destinazione, scegli Funzione Lambda.

  5. In Nome gruppo di destinazione, immetti un nome per il gruppo di destinazione.

  6. Per la versione della struttura degli eventi Lambda, scegli una versione. Per ulteriori informazioni, consulta Ricevi eventi dal servizio VPC Lattice.

  7. (Facoltativo) Per aggiungere tag, espandi Tag, scegli Aggiungi nuovo tag e inserisci la chiave e il valore del tag.

  8. Seleziona Successivo.

  9. In Funzione Lambda, esegui una delle seguenti operazioni:

    • Seleziona una funzione Lambda esistente.

    • Crea una nuova funzione Lambda e selezionala.

    • Registra la funzione Lambda in un secondo momento.

  10. Scegliere Crea gruppo target.

Per creare un gruppo di destinazioni e registrare la funzione Lambda tramite AWS CLI

Usa i comandi create-target-groupe register-targets.

Ricevi eventi dal servizio VPC Lattice

Il servizio VPC Lattice supporta la chiamata Lambda per le richieste su HTTP e HTTPS. Il servizio invia un evento in formato JSON e aggiunge l'intestazione a ogni richiesta. X-Forwarded-For

Codifica Base64

Il servizio Base64 codifica il corpo se l'content-encodingintestazione è presente e il tipo di contenuto non è uno dei seguenti:

  • text/*

  • application/json

  • application/xml

  • application/javascript

Se l'intestazione content-encoding non è presente, la codifica Base64 dipende dal tipo di contenuto. Per i tipi di contenuto sopra indicati, il servizio invia il corpo così com'è, senza codifica Base64.

Formato della struttura degli eventi

Quando crei o aggiorni un tipo di gruppo targetLAMBDA, puoi specificare la versione della struttura degli eventi ricevuta dalla funzione Lambda. Le versioni possibili sono V1 eV2.

Esempio Evento di esempio: V2
{ "version": "2.0", "path": "/", "method": "GET|POST|HEAD|...", "headers": { "header-key": ["header-value", ...], ... }, "queryStringParameters": { "key": ["value", ...] }, "body": "request-body", "isBase64Encoded": true|false, "requestContext": { "serviceNetworkArn": "arn:aws:vpc-lattice:region:123456789012:servicenetwork/sn-0bf3f2882e9cc805a", "serviceArn": "arn:aws:vpc-lattice:region:123456789012:service/svc-0a40eebed65f8d69c", "targetGroupArn": "arn:aws:vpc-lattice:region:123456789012:targetgroup/tg-6d0ecf831eec9f09", "identity": { "sourceVpcArn": "arn:aws:ec2:region:123456789012:vpc/vpc-0b8276c84697e7339", "type": "AWS_IAM", "principal": "arn:aws:iam::123456789012:assumed-role/my-role/my-session", "principalOrgID": "o-50dc6c495c0c9188", "sessionName": "i-0c7de02a688bde9f7", "x509IssuerOu": "string", "x509SanDns": "string", "x509SanNameCn": "string", "x509SanUri": "string", "x509SubjectCn": "string" }, "region": "region", "timeEpoch": "1690497599177430" } }
body

Il corpo della richiesta. Presente solo se il protocollo è HTTP, HTTPS o gRPC.

headers

Le intestazioni HTTP della richiesta. Presente solo se il protocollo è HTTP, HTTPS o gRPC.

identity

Le informazioni sull'identità. I campi possibili sono i seguenti.

  • principal— Il principale autenticato. Presente solo se AWS l'autenticazione ha esito positivo.

  • principalOrgID— L'ID dell'organizzazione per il principale autenticato. Presente solo se AWS l'autenticazione ha esito positivo.

  • sessionName— Il nome della sessione autenticata. Presente solo se AWS l'autenticazione ha esito positivo.

  • sourceVpcArn— L'ARN del VPC da cui ha avuto origine la richiesta. Presente solo se è possibile identificare il VPC di origine.

  • type— Il valore è AWS_IAM se viene utilizzata una politica di AWS autenticazione e l'autenticazione ha esito positivo.

Se vengono utilizzate le credenziali Roles Anywhere e l'autenticazione ha esito positivo, i seguenti sono i campi possibili.

  • x509IssuerOu— L'emittente (OU).

  • x509SanDns— Il nome alternativo del soggetto (DNS).

  • x509SanNameCn— Il nome alternativo dell'emittente (nome/CN).

  • x509SanUri— Il nome alternativo del soggetto (URI).

  • x509SubjectCn— Il nome del soggetto (CN).

isBase64Encoded

Indica se il corpo è codificato in base64. Presente solo se il protocollo è HTTP, HTTPS o gRPC e il corpo della richiesta non è già una stringa.

method

Metodo HTTP nella richiesta. Presente solo se il protocollo è HTTP, HTTPS o gRPC.

path

Il percorso della richiesta. Presente solo se il protocollo è HTTP, HTTPS o gRPC.

queryStringParameters

I parametri della stringa di query HTTP. Presente solo se il protocollo è HTTP, HTTPS o gRPC.

serviceArn

L'ARN del servizio che riceve la richiesta.

serviceNetworkArn

L'ARN della rete di servizi che consegna la richiesta.

targetGroupArn

L'ARN del gruppo target che riceve la richiesta.

timeEpoch

Il tempo, in microsecondi.

Esempio Evento di esempio: V1
{ "raw_path": "/path/to/resource", "method": "GET|POST|HEAD|...", "headers": {"header-key": "header-value", ... }, "query_string_parameters": {"key": "value", ...}, "body": "request-body", "is_base64_encoded": true|false }

Rispondi al servizio VPC Lattice

La risposta dalla funzione Lambda deve includere lo stato della codifica Base64, il codice di stato e le intestazioni. Puoi omettere il corpo della risposta.

Per includere un contenuto binario nel corpo della risposta, devi sottoporre a codifica Base64 il contenuto e impostare isBase64Encoded su true. Il servizio decodifica il contenuto per recuperare il contenuto binario e lo invia al client nel corpo della risposta HTTP.

Il servizio VPC Lattice non rispetta le hop-by-hop intestazioni, come o. Connection Transfer-Encoding È possibile omettere l'Content-Lengthintestazione perché il servizio la calcola prima di inviare le risposte ai client.

Di seguito è riportato un esempio di risposta da una funzione Lambda:

{ "isBase64Encoded": false, "statusCode": 200, "statusDescription": "200 OK", "headers": { "Set-cookie": "cookies", "Content-Type": "application/json" }, "body": "Hello from Lambda (optional)" }

Intestazioni con più valori

Per impostazione predefinita, VPC Lattice supporta le richieste provenienti da un client o le risposte da una funzione Lambda contenente intestazioni con più valori o contenenti la stessa intestazione più volte. VPC Lattice supporta anche parametri di interrogazione con più valori per la stessa chiave.

Per le intestazioni di richiesta, se più parametri condividono lo stesso nome, VPC Lattice passerà entrambi i valori ai target. Di seguito è riportato un esempio in cui header 1 è riportato il nome di due intestazioni separate:

header1 = foo header1 = bar

Quindi VPC Lattice invia entrambi i valori ai target:

"header1": ["foo", "bar"]

Per le stringhe di query, se più parametri condividono lo stesso nome, vince l'ultimo valore. Ciò significa che i parametri _not_ coalesced rientrano in un unico valore se condividono lo stesso nome di chiave.

Di seguito è riportato un esempio in cui foo e bar sono i valori dei parametri con lo stesso nomeQS1:

http://www.example.com?&QS1=foo&QS1=bar

Quindi VPC Lattice invia l'ultimo valore ai target:

"QS1": "bar"

Annullamento della registrazione della funzione Lambda

Se non hai più bisogno di inviare traffico alla funzione Lambda, puoi annullare la relativa registrazione. Dopo avere annullato la registrazione di una funzione Lambda, le richieste in transito hanno esito negativo con 5XX errori HTTP.

Per sostituire una funzione Lambda, ti consigliamo di creare un nuovo gruppo di destinazioni, registrare la nuova funzione con il nuovo gruppo e aggiornare le regole del listener per utilizzare il nuovo gruppo di destinazioni invece di quello esistente.

Per annullare la registrazione di una funzione Lambda utilizzando la console
  1. Apri alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel pannello di navigazione, in VPC Lattice, scegli Target groups.

  3. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

  4. Nella scheda Destinazioni, scegli Annulla registrazione.

  5. Quando viene richiesta la conferma, inserisci confirm e scegli Annulla registrazione.

Per annullare la registrazione della funzione Lambda utilizzando AWS CLI

Utilizza il comando deregister-targets.