Lambda funktioniert als Ziele in Lattice VPC - VPCAmazon-Gitter

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Lambda funktioniert als Ziele in Lattice VPC

Sie können Ihre Lambda-Funktionen als Ziele bei einer VPC Lattice-Zielgruppe registrieren und eine Listener-Regel konfigurieren, um Anfragen für Ihre Lambda-Funktion an die Zielgruppe weiterzuleiten. Wenn der Service die Anfrage an eine Zielgruppe mit einer Lambda-Funktion als Ziel weiterleitet, ruft er Ihre Lambda-Funktion auf und übergibt den Inhalt der Anfrage im Format an die Lambda-Funktion. JSON Weitere Informationen finden Sie unter Using AWS Lambda with Amazon VPC Lattice im AWS Lambda Developer Guide.

Einschränkungen
  • Die Lambda-Funktion und die Zielgruppe müssen sich im gleichen Konto und in der gleichen Region befinden.

  • Die maximale Größe des Anforderungstexts, den Sie an eine Lambda-Funktion senden können, beträgt 6 MB.

  • Die maximale Größe der AntwortJSON, die die Lambda-Funktion senden kann, beträgt 6 MB.

  • Das Protokoll muss HTTP oder HTTPS sein.

Vorbereiten der Lambda-Funktion

Die folgenden Empfehlungen gelten, wenn Sie Ihre Lambda-Funktion mit einem VPC Lattice-Dienst verwenden.

Berechtigungen zum Aufrufen der Lambda-Funktion

Wenn Sie die Zielgruppe erstellen und die Lambda-Funktion mit dem AWS Management Console oder dem registrieren AWS CLI, fügt VPC Lattice in Ihrem Namen die erforderlichen Berechtigungen zu Ihrer Lambda-Funktionsrichtlinie hinzu.

Sie können Berechtigungen auch selbst hinzufügen, indem Sie den folgenden Aufruf verwenden: 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
Versionsverwaltung der Lambda-Funktion

Sie können eine Lambda-Funktion pro Zielgruppe registrieren. Um sicherzustellen, dass Sie Ihre Lambda-Funktion ändern können und dass der VPC Lattice-Dienst immer die aktuelle Version der Lambda-Funktion aufruft, erstellen Sie einen Funktionsalias und nehmen Sie den Alias in die Funktion auf, ARN wenn Sie die Lambda-Funktion beim Lattice-Dienst registrieren. VPC Weitere Informationen finden Sie unter Lambda-Funktionsversionen und Erstellen eines Alias für eine Lambda-Funktion im AWS Lambda Entwicklerhandbuch.

Erstellen Sie einer Zielgruppe für die Lambda-Funktion

Erstellen Sie eine Zielgruppe, die bei der Weiterleitung von Anforderungen verwendet wird. Wenn der Inhalt der Anfrage einer Listener-Regel mit einer Aktion zur Weiterleitung an diese Zielgruppe entspricht, ruft der VPC Lattice-Dienst die registrierte Lambda-Funktion auf.

Um eine Zielgruppe zu erstellen und die Lambda-Funktion über die Konsole zu registrieren
  1. Öffnen Sie die VPC Amazon-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsbereich unter VPCLattice die Option Zielgruppen aus.

  3. Wählen Sie Zielgruppe erstellen aus.

  4. Wählen Sie unter Zieltyp auswählen die Option Lambda-Funktion aus.

  5. Geben Sie unter Zielgruppenname einen Namen für die Zielgruppe ein.

  6. Wählen Sie für die Version der Lambda-Ereignisstruktur eine Version aus. Weitere Informationen finden Sie unter Empfangen Sie Ereignisse vom Lattice-Dienst VPC.

  7. (Optional) Um Tags hinzuzufügen, erweitern Sie Tags, wählen Sie Neues Tag hinzufügen aus und geben Sie den Tag-Schlüssel und den Tag-Wert ein.

  8. Wählen Sie Weiter.

  9. Führen Sie für Lambda function (Lambda-Funktion) einen der folgenden Schritte aus:

    • Wählen Sie eine vorhandene Lambda-Funktion aus.

    • Erstellen Sie eine neue Lambda-Funktion und wählen Sie sie aus.

    • Registrieren Sie die Lambda-Funktion später.

  10. Wählen Sie Zielgruppe erstellen aus.

So erstellen und registrieren Sie eine Zielgruppe und registrieren die Lambda-Funktion mithilfe der AWS CLI

Verwenden Sie die Befehle create-target-groupund register-targets.

Empfangen Sie Ereignisse vom Lattice-Dienst VPC

Der VPC Lattice-Dienst unterstützt den Lambda-Aufruf für Anfragen sowohl über als auch. HTTP HTTPS Der Dienst sendet ein Ereignis im JSON Format und fügt den X-Forwarded-For Header zu jeder Anfrage hinzu.

Base64-Codierung

Der Dienst Base64 kodiert den Hauptteil, wenn der content-encoding Header vorhanden ist und der Inhaltstyp keiner der folgenden ist:

  • text/*

  • application/json

  • application/xml

  • application/javascript

Wenn der content-encoding-Header nicht vorhanden ist, hängt die Base64-Codierung vom Inhaltstyp ab. Bei den oben genannten Inhaltstypen sendet der Dienst den Hauptteil unverändert, ohne Base64-Kodierung.

Format der Ereignisstruktur

Wenn Sie eine Zielgruppe vom Typ erstellen oder aktualisierenLAMBDA, können Sie die Version der Ereignisstruktur angeben, die Ihre Lambda-Funktion empfängt. Die möglichen Versionen sind V1 undV2.

Beispielereignis: 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

Der Text der Anforderung. Nur vorhanden, wenn das ProtokollHTTP,HTTPS, oder g istRPC.

headers

Die HTTP Header der Anfrage. Nur vorhanden, wenn das ProtokollHTTP,HTTPS, oder g RPC ist.

identity

Die Identitätsinformationen. Die folgenden Felder sind möglich.

  • principal— Der authentifizierte Principal. Nur vorhanden, wenn die AWS Authentifizierung erfolgreich ist.

  • principalOrgID— Die ID der Organisation für den authentifizierten Prinzipal. Nur vorhanden, wenn die AWS Authentifizierung erfolgreich war.

  • sessionName— Der Name der authentifizierten Sitzung. Nur vorhanden, wenn die AWS Authentifizierung erfolgreich ist.

  • sourceVpcArn— Der Ort, ARN von VPC dem die Anfrage stammt. Nur vorhanden, wenn die Quelle identifiziert werden VPC kann.

  • type— Der Wert gibt anAWS_IAM, ob eine Authentifizierungsrichtlinie verwendet wird und die AWS Authentifizierung erfolgreich ist.

Wenn Roles Anywhere-Anmeldeinformationen verwendet werden und die Authentifizierung erfolgreich ist, sind die folgenden Felder möglich.

  • x509IssuerOu— Der Emittent (OU).

  • x509SanDns— Der alternative Name des Betreffs (DNS).

  • x509SanNameCn— Der alternative Name des Emittenten (Name/CN).

  • x509SanUri— Der alternative Name des Betreffs (). URI

  • x509SubjectCn— Der Name des Subjekts (CN).

isBase64Encoded

Gibt an, ob der Text Base64-codiert war. Nur vorhanden, wenn das ProtokollHTTP,HTTPS, oder g ist RPC und der Anforderungstext nicht bereits eine Zeichenfolge ist.

method

Die HTTP Methode der Anfrage. Nur vorhanden, wenn das ProtokollHTTP,HTTPS, oder g istRPC.

path

Den Pfad der Anfrage. Nur vorhanden, wenn das ProtokollHTTP,HTTPS, oder g istRPC.

queryStringParameters

Die Parameter der HTTP Abfragezeichenfolge. Nur vorhanden, wenn das ProtokollHTTP,HTTPS, oder g istRPC.

serviceArn

Der Dienst, ARN der die Anfrage empfängt.

serviceNetworkArn

Der ARN des Servicenetzwerks, das die Anfrage zustellt.

targetGroupArn

Die ARN der Zielgruppe, die die Anfrage erhält.

timeEpoch

Die Zeit in Mikrosekunden.

Beispielereignis: 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 }

Antworten Sie auf den VPC Lattice-Dienst

Die Antwort von Ihrer Lambda-Funktion muss den Base64-codierten Status, Statuscode und die Header beinhalten. Sie können den Text weglassen.

Um den binären Inhalt in den Text der Antwort einzuschließen, müssen Sie den Inhalt mit Base64 codieren und isBase64Encoded auf true einstellen. Der Dienst dekodiert den Inhalt, um den binären Inhalt abzurufen, und sendet ihn im Hauptteil der Antwort an den HTTP Client.

Der VPC Lattice-Dienst berücksichtigt keine hop-by-hop Header wie oder. Connection Transfer-Encoding Sie können den Content-Length Header weglassen, da der Dienst ihn berechnet, bevor er Antworten an Clients sendet.

Im Folgenden finden Sie ein Beispiel für eine Antwort aus einer Lambda-Funktion:

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

Header mit mehreren Werten

VPCLattice unterstützt Anfragen von einem Client oder Antworten von einer Lambda-Funktion, die Header mit mehreren Werten oder denselben Header mehrfach enthalten. VPC Lattice leitet alle Werte an die Ziele weiter.

Im folgenden Beispiel gibt es zwei Header mit dem Namen header1 mit unterschiedlichen Werten.

header1 = value1 header1 = value2

Bei einer V2-Ereignisstruktur sendet VPC Lattice die Werte in einer Liste. Beispielsweise:

"header1": ["value1", "value2"]

Bei einer V1-Ereignisstruktur kombiniert VPC Lattice die Werte zu einer einzigen Zeichenfolge. Beispielsweise:

"header1": "value1, value2"

Parameter für Abfragezeichenfolgen mit mehreren Werten

VPCLattice unterstützt Abfrageparameter mit mehreren Werten für denselben Schlüssel.

Im folgenden Beispiel sind zwei Parameter benannt QS1 mit unterschiedlichen Werten.

http://www.example.com?&QS1=value1&QS1=value2

Bei einer V2-Ereignisstruktur sendet VPC Lattice die Werte in einer Liste. Beispielsweise:

"QS1": ["value1", "value2"]

Bei einer V1-Ereignisstruktur verwendet VPC Lattice den zuletzt übergebenen Wert. Beispielsweise:

"QS1": "value2"

Aufheben der Registrierung der Lambda-Funktion

Wenn Sie zu Ihrer Lambda-Funktion keinen Datenverkehr mehr senden müssen, können Sie ihre Registrierung aufheben. Nachdem Sie eine Lambda-Funktion deregistriert haben, schlagen In-Flight-Anfragen mit 5XX-Fehlern fehl. HTTP

Zum Ersetzen einer Lambda-Funktion wird empfohlen, eine neue Zielgruppe zu erstellen, die neue Funktion bei der neuen Zielgruppe zu registrieren und die Listener-Regeln so zu aktualisieren, dass anstatt der vorhandenen die neue Zielgruppe verwendet wird.

So deregistrieren Sie eine Lambda-Funktion mithilfe der Konsole
  1. Öffnen Sie die VPC Amazon-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsbereich unter VPCLattice die Option Zielgruppen aus.

  3. Wählen Sie den Namen der Zielgruppe aus, um deren Detailseite zu öffnen.

  4. Klicken Sie auf der Registerkarte Targets (Ziele) auf Deregister (Registrierung aufheben).

  5. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie die Eingabe ein confirm und wählen Sie dann Abmelden aus.

Um die Registrierung der Lambda-Funktion mit dem AWS CLI

Verwenden Sie den Befehl deregister-targets.