Verwenden von Amazon API Gateway-Stufenvariablen - Amazon API Gateway

Verwenden von Amazon API Gateway-Stufenvariablen

Sie können API Gateway-Stufenvariablen verwenden, um auf HTTP- und Lambda-Backends für verschiedene API-Bereitstellungsstufen zuzugreifen. Sie können Stufenvariablen auch verwenden, um stufenbezogene Konfigurationsmetadaten an ein HTTP-Backend als Abfrageparameter und an eine Lambda-Funktion als Nutzlast, die in einer Eingabe-Mapping-Vorlage generiert wurde, zu übergeben.

Voraussetzungen

Sie müssen zwei Stufen mit einer url-Variable, die auf zwei unterschiedliche HTTP-Endpunkte verweist, erstellen: Die function-Stufenvariable wird zwei verschiedenen Lambda-Funktionen zugewiesen und die version-Stufenvariable enthält stufenbezogene Metadaten. Folgen Sie den Anweisungen in Einrichten von Stufenvariablen mit der Amazon API Gateway-Konsole.

Zugreifen auf einen HTTP-Endpunkt über eine API mit einer Stufenvariable

  1. Wählen Sie im Navigationsbereich Stages beta. Wählen Sie in beta Stage Editor den Link Invoke URL. Hierdurch wird die beta-Stufen-Anforderung GET für die Stammressource der API gestartet.

    Anmerkung

    Der Link Invoke URL verweist auf die Stammressource der API auf der beta-Stufe. Durch die Navigation zur URL durch Auswahl des Links wird die beta-Stufen-Methode GET für die Stammressource aufgerufen. Wenn Methoden für untergeordnete Ressourcen und nicht für die Stammressource selbst definiert sind, erhalten Sie bei Auswahl des Links Invoke URL die Fehlermeldung {"message":"Missing Authentication Token"}. In diesem Fall müssen Sie dem Link Invoke URL den Namen einer spezifischen untergeordneten Ressource anfügen.

  2. Im Folgenden wird die Antwort angezeigt, die Sie von der beta-Stufen-Anforderung GET erhalten. Sie können das Ergebnis auch überprüfen, indem Sie in einem Browser zu http://httpbin.org/get navigieren. Dieser Wert wurde der url-Variablen in der beta-Stufe zugewiesen. Die beiden Antworten sind identisch.

  3. Wählen Sie im Navigationsbereich Stages die Stufe prod. Wählen Sie in prod Stage Editor den Link Invoke URL. Hierdurch wird die prod-Stufen-Anforderung GET für die Stammressource der API gestartet.

  4. Im Folgenden wird die Antwort angezeigt, die Sie von der prod-Stufen-Anforderung GET erhalten. Sie können das Ergebnis auch überprüfen, indem Sie in einem Browser zu http://petstore-demo-endpoint-execute-api.com/petstore/pets navigieren. Dieser Wert wurde der url-Variablen in der prod-Stufe zugewiesen. Die beiden Antworten sind identisch.

Übergeben von stufenbezogenen Metadaten an ein HTTP-Backend über eine Stufenvariable in einem Abfrageparameterausdruck

In diesem Verfahren wird beschrieben, wie stufenbezogene Metadaten mittels eines Stufenvariablenwerts in einem Abfrageparameterausdruck an ein HTTP-Backend übergeben werden. Sie verwenden die Stufenvariable version, die in Einrichten von Stufenvariablen mit der Amazon API Gateway-Konsole deklariert wurde.

  1. Wählen Sie im Navigationsbereich Resource die Methode GET. Um der URL der Methode einen Abfragezeichenfolge-Parameter hinzuzufügen, wählen Sie in Method Execution Method Request. Geben Sie version für den Parameternamen ein.

  2. Wählen Sie in Method Execution Integration Request. Bearbeiten Sie den Wert für Endpoint URL, um dem zuvor definierten URL-Wert ?version=${stageVariables.version} anzufügen, was in diesem Fall auch mit der Stufenvariable url ausgedrückt wird. Wählen Sie Deploy API, um diese Änderungen bereitzustellen.

  3. Wählen Sie im Navigationsbereich Stages die Stufe beta. Überprüfen Sie in beta Stage Editor, ob die aktuelle Stufe der aktuellen Bereitstellung entspricht, und wählen Sie anschließend den Link Invoke URL.

    Anmerkung

    Sie verwenden hier die beta-Stufe, da der HTTP-Endpunkt (von der url-Variable mit "http://httpbin.org/get" angegeben) Abfrageparameterausdrücke annimmt und diese in der Antwort als args-Objekt zurückgibt.

  4. Die Antwort wird nachstehend angezeigt. Beachten Sie, dass v-beta (zugeordnet zur version-Stufenvariable) als version-Argument an das Backend übergeben wird.

    
              Antwort der GET-Methode der API mittels eines Proxys für einen HTTP-Endpunkt mit der Stufenvariablen url in der beta-Stufe.

Aufrufen einer Lambda-Funktion über eine API mit einer Stufenvariable

In diesem Verfahren wird beschrieben, wie Sie eine Stufenvariable verwenden, um eine Lambda-Funktion als Backend der API aufzurufen. Sie verwenden die zuvor deklarierte function-Stufenvariable. Weitere Informationen finden Sie unter Einrichten von Stufenvariablen mit der Amazon API Gateway-Konsole.

  1. Erstellen Sie im Bereich Resources die untergeordnete Ressource /lambdasv1 im Stammverzeichnis und anschließend eine GET-Methode für die untergeordnete Ressource. Legen Sie den Integrationstyp auf Lambda-Funktion fest und geben Sie in Lambda-Funktion ${stageVariables.function} ein. Wählen Sie Save (Speichern) aus.

    
              Erstellen einer GET-Methode, die in eine Lambda-Funktion integriert ist (wie festgelegt über die function-Stufenvariable)
    Tipp

    Wenn die Aufforderung Add Permission to Lambda Function (Der Lambda-Funktion eine Berechtigung hinzufügen) angezeigt wird, notieren Sie den AWS CLI-Befehl, bevor Sie OK auswählen. Sie müssen den Befehl für jede Lambda-Funktion ausführen, die der function-Stufenvariable zugewiesen ist oder dieser zugewiesen werden soll, und zwar für jede neu erstellte API-Methode. Beispielsweise müssen Sie den folgenden $stageVariables.function-Befehl ausführen, wenn HelloWorld den Wert AWS CLI hat und Sie noch keine Berechtigung für diese Funktion hinzugefügt haben:

    aws lambda add-permission --function-name arn:aws:lambda:us-east-1:account-id:function:HelloWorld --source-arn arn:aws:execute-api:us-east-1:account-id:api-id/*/GET/lambdasv1 --principal apigateway.amazonaws.com --statement-id statement-id-guid --action lambda:InvokeFunction

    Falls das nicht geschieht, führt der Aufruf der Methode zur Fehlermeldung 500 Internal Server Error. Achten Sie darauf, ${stageVariables.function} durch den Lambda-Funktionsnamen zu ersetzen, der dieser Stufenvariable zugeordnet ist.

    
                Ausführen des AWS-CLI-Befehls zum Hinzufügen der Berechtigung für den Lambda-Funktionsaufruf durch die zuvor erstellte Methode.
  2. Stellen Sie die API für die verfügbaren Stufen bereit.

  3. Wählen Sie im Navigationsbereich Stages die Stufe beta. Überprüfen Sie, ob in beta Stage Editor die aktuelle Bereitstellung vorliegt. Kopieren Sie den Link Invoke URL, fügen Sie ihn in die Adresszeile Ihres Browsers ein und fügen Sie dieser URL /lambdasv1 an. Hierdurch wird die zugrunde liegende Lambda-Funktion über die Methode GET für die untergeordnete Ressource LambdaSv1 der API aufgerufen.

    Anmerkung

    Ihre HelloWorld-Lambda-Funktion implementiert folgenden Code.

    export const handler = function(event, context, callback) { if (event.version) callback(null, 'Hello, World! (' + event.version + ')' ); else callback(null, "Hello, world! (v-unknown)"); };

    Diese Implementierung führt zu folgender Antwort.

    "Hello, world! (v-unknown)"

Übergeben von stufenbezogenen Metadaten an eine Lambda-Funktion über eine Stufenvariable

In diesem Verfahren wird beschrieben, wie stufenbezogene Konfigurationsmetadaten mittels einer Stufenvariable an eine Lambda-Funktion übergeben werden. Sie verwenden eine POST-Methode und eine Eingabe-Mapping-Vorlage, um Nutzlast mit der zuvor deklarierten version-Stufenvariable zu generieren.

  1. Wählen Sie im Bereich Resources die untergeordnete Ressource /lambdasv1. Erstellen Sie eine POST -Methode für die untergeordnete Ressource, legen Sie den Integrationstyp auf Lambda-Funktion fest und geben Sie ${stageVariables.function} in Lambda-Funktion ein. Wählen Sie Save (Speichern) aus.

    Tipp

    Dieser Schritt entspricht der Vorgehensweise beim Erstellen der GET-Methode. Weitere Informationen finden Sie unter Aufrufen einer Lambda-Funktion über eine API mit einer Stufenvariable.

  2. Wählen Sie im Bereich /Method Execution Integration Request. Erweitern Sie im Bereich Integrationsanforderung die Option Mapping-Vorlagen und wählen Sie anschließend Mapping-Vorlage hinzufügen, um dem application/json-Inhaltstyp eine Vorlage hinzuzufügen, wie nachfolgend gezeigt.

    
              Generieren sie eine POST-Methodennutzlast mit stufenbezogenen Konfigurationsmetadaten (dargestellt durch den Stufenvariablenwert version) als Eingabe für die Lambda-Funktion im Backend.
    Anmerkung

    In einer Mapping-Vorlage muss eine Stufenvariable in Anführungszeichen (wie in "$stageVariables.version" oder "${stageVariables.version}") referenziert werden. An anderen Stellen muss sie ohne Anführungszeichen (wie in ) referenziert werd ${stageVariables.function}).

  3. Stellen Sie die API für die verfügbaren Stufen bereit.

  4. Wählen Sie im Navigationsbereich Stages beta. Überprüfen Sie in beta-Stufen-Editor, ob die aktuelle Stufe über die neueste Bereitstellung verfügt. Kopieren Sie den Link Invoke URL (Aufruf-URL:), fügen Sie diesen in das URL-Eingabefeld eines REST-API-Clients ein, fügen Sie dieser URL /lambdasv1 an und senden Sie anschließend eine POST-Anforderung an die zugrunde liegende Lambda-Funktion ab.

    Anmerkung

    Sie erhalten die folgende Antwort.

    "Hello, world! (v-beta)"