Wie übergebe ich Daten über eine API-Gateway-REST-API an eine Backend-Lambda-Funktion oder einen HTTP-Endpunkt?

Letzte Aktualisierung: 26.08.2022

Ich möchte, dass meine Amazon API Gateway REST API Daten an eine Backend-AWS-Lambda-Funktion und einen HTTP-Endpunkt übergibt. Wie mache ich das?

Kurzbeschreibung

Um eine REST-API für die Übergabe von Daten an eine Backend-Lambda-Funktion zu konfigurieren, verwenden Sie eine benutzerdefinierte Lambda-Integration.

Verwenden Sie eine benutzerdefinierte HTTP-Integration, um Abfragezeichenfolgenparameter an einen HTTP-Endpunkt zu übergeben

Wichtig: Stellen Sie sicher, dass die Eingabedaten als Nutzlast der Integrationsanforderung angegeben werden. Es ist eine bewährte Methode, eine Zuordnungsvorlage zu verwenden, um die Nutzlast bereitzustellen. Weitere Informationen finden Sie unter Zuordnen von Anforderungs- und Antwortnutzlasten zwischen Methode und Integration.

Auflösung

Erstellen Sie eine Lambda-Funktion, um benutzerdefinierte Header von Ihrer API-Gateway-API zu verarbeiten

1.    Öffnen Sie die Lambda-Konsole.

2.    Wählen Sie Funktion erstellen. Die Seite Funktion erstellen wird mit ausgewählter Option Von Grund auf neu erstellen geöffnet.

3.    Gehen Sie im Bereich Grundinformationen wie folgt vor: Geben Sie unter Funktionsname einen Namen ein, der den Zweck Ihrer Funktion beschreibt. Zum Beispiel: MapTemplate. Wählen Sie für Laufzeit Python 3.9.

4.    Erweitern Sie unter Berechtigungen die Option Standardausführungsrolle ändern.

5.    Wählen Sie Vorhandene Rolle verwenden. Eine Dropdown-Liste mit vorhandenen Rollen wird angezeigt.

6.    Wählen Sie für Vorhandene Rolle die Lambda-Ausführungsrolle aus, die Sie zuvor erstellt haben.

7.    Wählen Sie Funktion erstellen.

8.    Ersetzen Sie auf der Registerkarte Codeunter Codequelle den Code in lambda_function.py durch Folgendes:

import json

def lambda_handler(event, context):
    print(event)
    return {
        'statusCode': 200,
        'body': json.dumps(event) # returning the data sent to backend lambda function as API response.
    }

9.    Wählen Sie Bereitstellen.

Weitere Informationen finden Sie unter Erstellen von Lambda-Funktionen mit Python.

Daten an die Backend-Lambda-Funktion oder den HTTP-Endpunkt übergeben

1.    Öffnen Sie die API-Gateway-Konsole.

2.    Wählen Sie API erstellen aus

-oder-

(Wenn Sie API Gateway zum ersten Mal verwenden) Eine Seite mit einer Einführung in die Funktionen des Services wird angezeigt. Wählen Sie unter REST-API die Option Entwickeln aus. Wenn das Popup-Fenster Beispiel-API erstellen angezeigt wird, wählen Sie OK.

3.    Wählen Sie für Einen API-Typ wählen im REST-API-Bereich die Option Entwickeln aus.

4.    Wählen Sie unter Neue API erstellen die Option Neue API aus.

5.    Gehen Sie in Einstellungen wie folgt vor: Geben Sie für API-Name einen Namen ein, der den Zweck Ihrer API beschreibt. Zum Beispiel: MappingTemplateTutorial. (Optional) Geben Sie für Beschreibung eine kurze Beschreibung des Zwecks Ihrer API ein. Beispiel: Daten an Backend-Lambda-Funktion/HTTP-Endpunkt senden. Wählen Sie als Endpunkttyp Regional aus.

6.    Wählen Sie API erstellen aus

Konfigurieren Sie die Ressourcen Ihrer API Integrationspunkt und die Text-Mapping-Vorlage Ihrer API

1.    Wählen Sie in der API-Gateway-Konsole den Namen der API aus, die Sie im vorherigen Schritt erstellt haben. Die Ressourcenseite Ihrer API wird geöffnet.

2.    Wählen Sie auf der Seite Ressourcen die Option Aktionen aus. Wählen Sie dann Ressource erstellen.

3.    Wählen Sie im Bereich Neue untergeordnete Ressource für Als Proxyressource konfigurieren das Häkchensymbol aus, und wählen Sie dann Ressource erstellen aus.

4.    Gehen Sie auf der Seite /{proxy+} – ANY – Setup wie folgt vor:

  • Wählen Sie als Integrationstyp Lambda-Funktions-Proxy.
  • Wählen Sie für Lambda-Region die AWS-Region aus, die Ihre Funktion hostet.
  • Geben Sie für Lambda-Funktion den Namen der Funktion MappingTemplateTutorial ein.

Wählen Sie Speichern aus. Ein Popup-Fenster Berechtigung zur Lambda-Funktion hinzufügen wird angezeigt wählen Sie OK.

7.    Wählen Sie auf der Seite/{proxy+} - ANY - Methodenausführung die Option Integrationsanforderung aus.

8.    Gehen Sie auf der Seite/{proxy+} – ANY – Integrationsanforderung wie folgt vor:

  • Deaktivieren Sie das Kontrollkästchen Lambda-Proxy-Integration verwenden. Ein Popup-Fenster zur Lambda-Integration wechseln wird angezeigt.
  • Wählen Sie im Popup-Fenster OK aus. Ein Popup-Fenster Berechtigung zur Lambda-Funktion hinzufügen wird angezeigt. Wählen Sie im Popup-Fenster OK aus.
  • Erweitern Sie Mapping-Vorlagen.
  • Wählen Sie für Anforderungstext-Durchleitung die Option Wenn keine Vorlagen definiert sind (empfohlen).

Wählen Sie Zuordnungsvorlage hinzufügen. Geben Sie für Inhaltstyp application/json ein. Wählen Sie dann das Häkchensymbol.

9.    Wählen Sie die Dropdownliste Vorlage generieren und wählen Sie dann Durchleitung für Methodenanforderung aus.

10.    Geben Sie im Zuordnungsvorlagen-Editor Folgendes ein:

##  See http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
#set($allParams = $input.params())
{
"method" : "$context.httpMethod", ## API method
"authcontext" : "$context.authorizer.stringkey", ## Optional output from Lambda Authorizers
## passthrough body
"body-json" : $input.json('$'),
## passthrough headers, querystrings and path parameters
"params" : {
#foreach($type in $allParams.keySet())
    #set($params = $allParams.get($type))
"$type" : {
    #foreach($paramName in $params.keySet())
    "$paramName" : "$util.escapeJavaScript($params.get($paramName))"
        #if($foreach.hasNext),#end
    #end
}
    #if($foreach.hasNext),#end
#end
}
}

11.    Wählen Sie Speichern aus.

12.    Wählen Sie Methodenausführung, um zur Seite /{proxy+} – ANY – Methodenausführung zurückzukehren.

13.    Wählen Sie Methodenreaktion, um eine gültige Methodenantwort

14.    Wählen Sie auf der Seite /{proxy+} – ANY – Methodenantwort die Option Antwort hinzufügen aus.

15.    Geben Sie für den HTTP-Statuscode 200 ein. Wählen Sie dann das Häkchensymbol.

16.    Wählen Sie Aktionen aus, um die API in einer Phase bereitzustellen.

Stellen Sie Ihre API für eine neue Stufe bereit

1.    Befolgen Sie die Anweisungen unter Bereitstellen einer REST-API für eine Stufe. Weitere Informationen finden Sie unter Einrichten einer Stufe mithilfe der API-Gateway-Konsole.

2.    Kopieren Sie im Bereich Stufeneditor die Aufruf-URL in Ihre Zwischenablage.

Beispiel für eine REST-API-Aufruf-URL

https://1a2bc3d456.execute-api.us-east-1.amazonaws.com/stage

Testen der Konfiguration

Um zu bestätigen, dass alle Daten von Ihrer API an die Backend-Lambda-Funktion oder den HTTP-Endpunkt übergeben werden, führen Sie den folgenden curl-Befehl aus:

Wichtig: Ersetzen Sie https://restApiId.execute-api.region.amazonaws.com/stageName durch die Aufruf-URL Ihrer API.

curl -i --location --request POST 'https://1a2bc3d456.execute-api.us-east-1.amazonaws.com/stage/path1/path2?query1=querystring1&query2=querystring2' --header 'header1: value1' --header 'header2: value2' --header 'Content-Type: application/json' --data-raw '{"keybody":"valuebody"}'

Die Befehlsausgabe enthält alle Daten, die von der Backend-Lambda-Funktion an den Client empfangen werden. Sie können die Ausgabemeldung für Ihre Umgebung aktualisieren.

Hinweis: Informationen zur Installation von curl unter Windows finden Sie unter Downloads auf der Git-Website. Weitere Informationen zu curl finden Sie auf der Website des curl-Projekts.