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.
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-namelambda-function-arn-with-alias-name\ --statement-idvpc-lattice\ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arntarget-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
Öffnen Sie die Amazon-VPC-Konsole unter https://console.aws.amazon.com/vpc/
. -
Wählen Sie im Navigationsbereich unter VPC Lattice die Option Zielgruppen aus.
-
Wählen Sie Zielgruppe erstellen aus.
-
Wählen Sie unter Zieltyp auswählen die Option Lambda-Funktion aus.
-
Geben Sie unter Zielgruppenname einen Namen für die Zielgruppe ein.
-
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.
-
(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.
-
Wählen Sie Weiter aus.
-
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.
-
-
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"
}
}bodyDer Text der Anforderung. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC ist.
headersDie 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 Betreffname (CN).
isBase64EncodedGibt 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.
methodDie HTTP-Methode der Anforderung. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC ist.
pathDen Pfad der Anfrage. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC ist.
queryStringParametersDie Parameter der HTTP-Abfragezeichenfolge. Nur vorhanden, wenn das Protokoll HTTP, HTTPS oder gRPC ist.
serviceArnDer ARN des Dienstes, der die Anfrage empfängt.
serviceNetworkArnDer ARN des Servicenetzwerks, das die Anfrage zustellt.
targetGroupArnDer ARN der Zielgruppe, die die Anfrage erhält.
timeEpochDie 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, "headers": { "Set-cookie": "cookies", "Content-Type": "application/json" }, "body": "Hello from Lambda (optional)" }
Header mit mehreren Werten
VPC Lattice unterstützt Anfragen von einem Client oder Antworten von einer Lambda-Funktion, die Header mit mehreren Werten oder denselben Header mehrfach enthalten. VPC Lattice übergibt alle Werte an die Ziele.
Im folgenden Beispiel gibt es zwei Header, die header1 mit unterschiedlichen Werten benannt sind.
header1 = value1
header1 = value2
Bei einer V2-Ereignisstruktur sendet VPC Lattice die Werte in einer Liste. Beispiel:
"header1": ["value1", "value2"]
Mit einer V1-Ereignisstruktur kombiniert VPC Lattice die Werte zu einer einzigen Zeichenfolge. Beispiel:
"header1": "value1, value2"
Parameter für Abfragezeichenfolgen mit mehreren Werten
VPC Lattice unterstützt Abfrageparameter mit mehreren Werten für denselben Schlüssel.
Im folgenden Beispiel gibt es zwei Parameter, die QS1 mit unterschiedlichen Werten benannt sind.
http://www.example.com?&QS1=value1&QS1=value2
Bei einer V2-Ereignisstruktur sendet VPC Lattice die Werte in einer Liste. Beispiel:
"QS1": ["value1", "value2"]
Bei einer V1-Ereignisstruktur verwendet VPC Lattice den zuletzt übergebenen Wert. Beispiel:
"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 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
Öffnen Sie die Amazon-VPC-Konsole unter https://console.aws.amazon.com/vpc/
. -
Wählen Sie im Navigationsbereich unter VPC Lattice die Option Zielgruppen aus.
-
Wählen Sie den Namen der Zielgruppe aus, um deren Detailseite zu öffnen.
-
Klicken Sie auf der Registerkarte Targets (Ziele) auf Deregister (Registrierung aufheben).
-
Wenn Sie zur Bestätigung aufgefordert werden, geben Sie die Eingabe ein
confirmund wählen Sie dann Abmelden aus.
Um die Registrierung der Lambda-Funktion mit dem AWS CLI
Verwenden Sie den Befehl deregister-targets.