Wie übergebe ich benutzerdefinierte Header über API Gateway an eine Lambda-Funktion mit benutzerdefinierter Lambda-Integration (ohne Proxy)?
Ich möchte eine AWS Lambda-Funktion über eine benutzerdefinierte Integration (ohne Proxy) konfigurieren, um benutzerdefinierte Header zu verarbeiten, die über meine Amazon API Gateway-API weitergeleitet werden.
Kurzbeschreibung
Standardmäßig verarbeitet eine Lambda-Funktion nur den Methodenanforderungstext, den sie von einer API-Gateway-API-Anforderung erhält. Verwende eine Textzuweisungsvorlage, um benutzerdefinierte Header von einer API Gateway-API an eine Lambda-Funktion zu übergeben. Die API sendet zuerst die aktualisierte API-Anforderung an eine Lambda-Funktion, um die Header zu verarbeiten. Dann gibt die Lambda-Funktion einen oder mehrere Header-Werte aus der ursprünglichen API-Anforderung zurück.
Lösung
Konfigurieren der erforderlichen IAM-Berechtigungen
Befolge die Anweisungen unter Steuern des Zugriffs auf eine REST-API mit IAM-Berechtigungen.
Um dieses Verfahren zu testen, erstelle eine AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Rolle und füge dann die von AWS verwalteten Richtlinien AmazonAPIGatewayInvokeFullAccess und AmazonAPIGatewayPushToCloudWatchLogs an. Weitere Informationen findest du unter Von AWS verwaltete Richtlinien.
Eine Lambda-Funktion erstellen, um benutzerdefinierte Header aus der API Gateway-API zu verarbeiten
Führe die folgenden Schritte aus:
- Öffne die Lambda-Konsole.
- Wähle Funktion erstellen aus. Die Seite Funktion erstellen wird geöffnet, wobei die Option Ohne Vorgabe erstellen ausgewählt ist.
- Führe im Bereich Grundlegende Informationen die folgenden Aktionen aus:
Gib unter Funktionsname einen Namen ein, der den Zweck der Funktion beschreibt. Zum Beispiel: CustomHeaders.
Wähle für Laufzeit****Node.js 20.x. - Erweitere unter Berechtigungen die Option Standard-Ausführungsrolle ändern.
- Wähle Verwende einen vorhandenen Proxy aus. Eine Dropdown-Liste der vorhandenen Rollen wird angezeigt.
- Wähle für Vorhandene Rolle die Lambda-Ausführungsrolle aus, die du zuvor erstellt hast.
- Wähle Funktion erstellen aus.
- Ersetze im Bereich Codequelle den Code index.mjs im Editor-Bereich durch den folgenden Code:
Wähle Bereitstellen aus.export const handler = async (event, context, callback) => { callback(null, "The custom header " +event.headers["header1"] +" has been processed successfully by AWS Lambda via Amazon API Gateway"); };
Weitere Informationen findest du unter Erstellen von Lambda-Funktionen mit Node.js.
Erstellen einer API Gateway REST-API
Führe die folgenden Schritte aus:
- Öffne die API Gateway-Konsole.
- Wähle API erstellen aus.
-oder-
Wenn du API Gateway zum ersten Mal verwendest, wird eine Seite angezeigt, die dich in die Funktionen von API Gateway einführt. Wähle unter REST-API die Option Erstellen aus. - Wähle im Abschnitt REST-API erstellen unter API-Details die Option Neue API aus.
- Gib als API-Name einen Namen ein, der den Zweck der API beschreibt. Zum Beispiel: SendtoLambda.
(Optional) Gib unter Beschreibung eine kurze Beschreibung des Zwecks der API ein.
Wähle für Endpunkttyp die Option Regional aus. - Wähle API erstellen aus.
Den Integrationspunkt und die Textzuweisungsvorlage deiner API konfigurieren
Führe die folgenden Schritte aus:
-
Öffne die API Gateway-Konsole.
-
Wähle den Namen der API, die du zuvor erstellt hast. Die Seite Ressourcen der API wird geöffnet.
-
Wähle auf der Seite Ressourcen die Option Ressource erstellen aus.
-
Führe im Bereich Ressource erstellen die folgenden Aktionen aus:
Gib als Ressourcennamen einen Namen ein, der die Ressource beschreibt. Zum Beispiel: HeadersResource.
Wähle Ressource erstellen. -
Wähle die Ressource aus, die du erstellt hast, und klicke dann auf Methode erstellen.
-
Führe im Bereich Methode erstellen die folgenden Aktionen aus:
Wähle als Methodentyp POST aus der Dropdown-Liste aus.
Wähle als Integrationstyp die Option Lambda-Funktion.
Vergewissere dich, dass die Lambda-Proxy-Integration deaktiviert ist.
Wähle für die Lambda-Funktion die AWS-Region aus, in der die Funktion gehostet wird, und gib dann den Namen der Lambda-Funktion oder den Amazon-Ressourcennamen (ARN) ein.
Wähle Methode erstellen. Diese Aktion gewährt API Gateway automatisch die Erlaubnis, deine Lambda-Funktion aufzurufen. -
Wähle POST als Ressourcenmethode, die du im vorherigen Schritt erstellt hast. Wähle dann im Bereich Methodenausführung die Option Integrationsanforderung aus.
-
Wähle im Bereich Integrationsanforderung die Option Bearbeiten aus und führe dann die folgenden Aktionen aus:
Wähle für Pass-Through des Anforderungstexts When there are no templates defined (recommended) (Wenn keine Vorlagen definiert sind (empfohlen)).
Erweitere unten im Bereich Zuweisungsvorlagen.
Wähle Mapping-Vorlage hinzufügen.
Gib als Inhaltstyp application/json ein. -
Gib im Vorlagentext-Editor Folgendes ein:
{ "method": "$context.httpMethod", "body" : $input.json('$'), "headers": { #foreach($param in $input.params().header.keySet()) "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end #end } } -
Wähle Speichern.
Die API in einer neuen Stufe bereitstellen
Führe die folgenden Schritte aus:
- Befolge die Anweisungen zum Bereitstellen einer REST-API für eine Stufe. Weitere Informationen findest du unter Einrichten einer Stufe für eine REST-API in API Gateway.
- Wähle die Schaltfläche API bereitstellen.
- Gib im Pop-up-Fenster API bereitstellen einen neuen Namen für die Stufe ein und wähle dann Bereitstellen aus.
- Erweitere die Stufe im Bereich Stufen, um die Ressource und Methode anzuzeigen, die du in den vorherigen Schritten erstellt hast.
- Wähle POST als deine Ressourcenmethode und kopiere die Aufruf-URL in die Zwischenablage.
Beispiel für eine Aufruf-URL der REST-API
https://1a2bc3d456.execute-api.region.amazonaws.com/stageName/resourceName
Setup testen
Führe den folgenden curl-Befehl aus, um dich zu vergewissern, dass die API und die Lambda-Funktion Header verarbeiten:
curl -H "Content-Type: application/json" -H "header1: value1" -X POST -d "{\"API_body\": \"This is the body\"}" https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName
Hinweis: Ersetze https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName durch die Aufruf-URL deiner API.
Beispielausgabe
"The custom header value1 has been processed successfully by AWS Lambda via Amazon API Gateway"
Hinweis: Informationen zur Installation von curl unter Windows findest du unter Downloads auf der Git-Website. Weitere Informationen zu curl findest du auf der Website des curl-Projekts.
Ähnliche Informationen
Einrichten der Datentransformationen in API Gateway
Verwaltung von Berechtigungen in AWS Lambda
Kontrolle des Zugriffs auf eine REST-API mit IAM-Berechtigungen
- Sprache
- Deutsch
Ähnliche Videos

