Lambda fungiert als Ziele in VPC Lattice - 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 fungiert als Ziele in VPC Lattice

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 JSON-Format an die Lambda-Funktion. 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 Antwort-JSON, 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.

Mithilfe des folgenden API-Aufrufs können Sie auch selbst Berechtigungen hinzufügen:

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 den Funktions-ARN auf, wenn Sie die Lambda-Funktion beim VPC Lattice-Dienst registrieren. 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 Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsbereich unter VPC Lattice 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 von Ereignissen vom VPC Lattice-Dienst.

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

  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 von Ereignissen vom VPC Lattice-Dienst

Der VPC Lattice-Dienst unterstützt Lambda-Aufrufe für Anfragen sowohl über HTTP als auch über 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 codiert 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 Protokoll HTTP, HTTPS oder gRPC ist.

headers

Die HTTP-Header der Anfrage. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC 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 ARN der VPC, von der die Anfrage stammt. Nur vorhanden, wenn die Quell-VPC identifiziert werden 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 Antragstellers (URI).

  • x509SubjectCn— Der Name des Subjekts (CN).

isBase64Encoded

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

method

Die HTTP-Methode der Anforderung. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC ist.

path

Den Pfad der Anfrage. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC ist.

queryStringParameters

Die Parameter der HTTP-Abfragezeichenfolge. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC ist.

serviceArn

Der ARN des Dienstes, der die Anfrage empfängt.

serviceNetworkArn

Der ARN des Servicenetzwerks, das die Anfrage zustellt.

targetGroupArn

Der 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 HTTP-Antwort an den 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 Service 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

Standardmäßig unterstützt VPC Lattice Anfragen von einem Client oder Antworten von einer Lambda-Funktion, die Header mit mehreren Werten enthält oder denselben Header mehrfach enthält. VPC Lattice unterstützt auch Abfrageparameter mit mehreren Werten für denselben Schlüssel.

Wenn bei Anforderungsheadern mehrere Parameter denselben Namen haben, übergibt VPC Lattice beide Werte an die Ziele. Im Folgenden finden Sie ein Beispiel für den Namen von zwei separaten Headern: header 1

header1 = foo header1 = bar

Dann sendet VPC Lattice beide Werte an die Ziele:

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

Wenn bei Abfragezeichenfolgen mehrere Parameter denselben Namen haben, gewinnt der letzte Wert. Das bedeutet, dass Parameter _not_ coalesced in einem einzigen Wert zusammengefasst werden, wenn sie denselben Schlüsselnamen haben.

Im Folgenden finden Sie ein Beispiel, bei dem foo und die Werte der Parameter mit demselben Namen bar sindQS1:

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

Dann sendet VPC Lattice den letzten Wert an die Ziele:

"QS1": "bar"

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 die Registrierung einer Lambda-Funktion aufgehoben haben, schlagen laufende Anfragen mit HTTP-5XX-Fehlermeldungen fehl.

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 Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsbereich unter VPC Lattice 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.