Verwenden von Amazon API Gateway-Stufenvariablen - Amazon API Gateway

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.

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-Stufenvariable, die auf zwei unterschiedliche HTTP-Endpunkte verweist, erstellen: Die function-Stufenvariable wird zwei verschiedenen Lambda-Funktionen zugewiesen und die stageName-Stufenvariable enthält stufenbezogene Metadaten.

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

  1. Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage details (Stufendetails) das Kopiersymbol, um die Aufruf-URL Ihrer API zu kopieren, und geben Sie dann die Aufruf-URL Ihrer API in einen Webbrowser ein. 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 Eingabe der URL in einem Webbrowser wird die beta-Stufenmethode GET für die Stammressource aufgerufen. Wenn Methoden für untergeordnete Ressourcen und nicht für die Stammressource selbst definiert sind, erhalten Sie bei der Eingabe der URL in einen Webbrowser 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 unter Stage details (Stufendetails) das Kopiersymbol, um die Aufruf-URL Ihrer API zu kopieren, und geben Sie dann die Aufruf-URL Ihrer API in einen Webbrowser ein. 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 überprüfen, indem Sie einen Browser verwenden, um zu http://petstore-demo-endpoint.execute-api.com/petstore/pets zu 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 stageName, 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 die Registerkarte Method Request (Methodenanforderung) und anschließend im Abschnitt Method request settings (Einstellungen der Methodenanforderung) die Option Edit (Bearbeiten).

  2. Wählen Sie URL query string parameters (URL-Abfragezeichenfolgen-Parameter) und gehen Sie wie folgt vor:

    1. Wählen Sie Abfragezeichenfolge hinzufügen aus.

    2. Geben Sie unter Name stageName ein.

    3. Lassen Sie die Optionen Required (Obligatorisch) and Caching (Cache) deaktiviert.

  3. Wählen Sie Speichern.

  4. Wählen Sie die Registerkarte Integration request (Integrationsanforderung) und dann im Abschnitt Integration request settings (Einstellungen für Integrationsanforderungen) die Option Edit (Bearbeiten) aus.

  5. Fügen Sie bei Endpoint URL (Endpunkt-URL) den Wert ?stageName=${stageVariables.stageName} an den zuvor definierten URL-Wert an, damit die gesamte Endpoint URL (Endpunkt-URL) http://${stageVariables.url}?stageName=${stageVariables.stageName} lautet.

  6. Wählen Sie Deploy API (API bereitstellen) und wählen Sie die Stufe beta aus.

  7. Klicken Sie im Hauptnavigationsbereich auf Stages (Stufen). Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage details (Stufendetails) das Kopiersymbol, um die Aufruf-URL Ihrer API zu kopieren, und geben Sie dann die Aufruf-URL Ihrer API in einen Webbrowser ein.

    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.

  8. Sie erhalten die folgende Antwort. Beachten Sie, dass beta (zugeordnet zur stageName-Stufenvariable) als stageName-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 eine Lambda-Funktion namens HelloWorld mit der Laufzeit Node.js. Der Code muss Folgendes enthalten:

    export const handler = function(event, context, callback) { if (event.stageName) callback(null, 'Hello, World! I\'m calling from the ' + event.stageName + ' stage.'); else callback(null, 'Hello, World! I\'m not sure where I\'m calling from...'); };

    Weitere Informationen zum Erstellen einer Lambda-Funktion finden Sie unter Erste Schritte mit der REST-API-Konsole.

  2. Wählen Sie im Bereich Ressources (Ressourcen) die Option Create resource (Ressource erstellen) aus, und gehen Sie dann wie folgt vor:

    1. Wählen Sie für Resource path (Ressourcenpfad) die Option/aus.

    2. Geben Sie für Resource name (Ressourcenname) lambdav1 ein.

    3. Wählen Sie Create Resource (Ressource erstellen) aus.

  3. Wählen Sie die /lambdav1-Ressource und dann Methode erstellen aus.

    Führen Sie dann die folgenden Schritte aus:

    1. Wählen Sie als Methodentyp die Option GET (Abrufen) aus.

    2. Wählen Sie für den Integration type (Integrationstyp) die Option Lambda function (Lambda-Funktion) aus.

    3. Lassen Sie Lambda proxy integration (Lambda-Proxyintegration) deaktiviert.

    4. Geben Sie für die Lambda function (Lambda-Funktion) ${stageVariables.function} ein.

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

      Wenn der Befehl Add permission (Berechtigung hinzufügen) angezeigt wird, kopieren Sie den CLI-Befehl AWS . Sie müssen den Befehl für jede Lambda-Funktion ausführen, die der function-Stufenvariable zugewiesen werden soll. Wenn der $stageVariables.function Wert beispielsweise lautetHelloWorld, führen Sie den folgenden AWS CLI Befehl aus:

      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/lambdav1 --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. Ersetzen Sie ${stageVariables.function} durch den Lambda-Funktionsnamen, der dieser Stufenvariable zugeordnet ist.

      Führen Sie den AWS -CLI-Befehl aus, um der Lambda-Funktion die Berechtigung hinzuzufügen, die von der soeben erstellten Methode aufgerufen werden soll.
    5. Wählen Sie Methode erstellen aus.

  4. Stellen Sie die API sowohl für die Phase prod als auch für die Phase beta bereit.

  5. Klicken Sie im Hauptnavigationsbereich auf Stages (Stufen). Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage details (Stufendetails) das Kopiersymbol, um die Aufruf-URL Ihrer API zu kopieren, und geben Sie dann die Aufruf-URL Ihrer API in einen Webbrowser ein. Hängen Sie /lambdav1 an die URL an, bevor Sie die Eingabetaste drücken.

    Sie erhalten die folgende Antwort.

    "Hello, World! I'm not sure where I'm calling from..."

Ü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. Erstellen Sie eine POST-Methode und eine Eingabe-Mapping-Vorlage, um Nutzlast mit der zuvor deklarierten stageName-Stufenvariable zu generieren.

  1. Wählen Sie die /lambdav1-Ressource und dann Methode erstellen aus.

    Führen Sie dann die folgenden Schritte aus:

    1. Wählen Sie unter Method type (Methodentyp) die Option POST aus.

    2. Wählen Sie für den Integration type (Integrationstyp) die Option Lambda function (Lambda-Funktion) aus.

    3. Lassen Sie Lambda proxy integration (Lambda-Proxyintegration) deaktiviert.

    4. Geben Sie für die Lambda function (Lambda-Funktion) ${stageVariables.function} ein.

    5. Wenn der Befehl Add permission (Berechtigung hinzufügen) angezeigt wird, kopieren Sie den CLI-Befehl AWS . Sie müssen den Befehl für jede Lambda-Funktion ausführen, die der function-Stufenvariable zugewiesen werden soll.

    6. Wählen Sie Methode erstellen aus.

  2. Wählen Sie die Registerkarte Integration request (Integrationsanforderung) und dann im Abschnitt Integration request settings (Einstellungen für Integrationsanforderungen) die Option Edit (Bearbeiten) aus.

  3. Wählen Sie Mapping-Vorlagen aus und klicken Sie dann auf Mapping-Vorlage hinzufügen.

  4. Geben Sie für Content type (Inhaltstyp) application/json ein.

  5. Geben Sie für Template body (Vorlagentext) die folgende Vorlage ein:

    #set($inputRoot = $input.path('$')) { "stageName" : "$stageVariables.stageName" }
    Anmerkung

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

  6. Wählen Sie Speichern.

  7. Stellen Sie die API sowohl für die Phase beta als auch für die Phase prod bereit.

  8. Gehen Sie wie folgt vor, um einen REST-API-Client zum Übergeben von stufenspezifischen Metadaten zu verwenden:

    1. Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage details (Stufendetails) das Kopiersymbol, um die Aufruf-URL Ihrer API zu kopieren, und geben Sie dann die Aufruf-URL Ihrer API in das Eingabefeld eines REST-API-Clients ein. Hängen Sie /lambdav1 an, bevor Sie Ihre Anfrage absenden.

      Sie erhalten die folgende Antwort.

      "Hello, World! I'm calling from the beta stage."
    2. Wählen Sie im Navigationsbereich Stages (Stufen) die Option prod. Wählen Sie unter Stage details (Stufendetails) das Kopiersymbol, um die Aufruf-URL Ihrer API zu kopieren, und geben Sie dann die Aufruf-URL Ihrer API in das Eingabefeld eines REST-API-Clients ein. Hängen Sie /lambdav1 an, bevor Sie Ihre Anfrage absenden.

      Sie erhalten die folgende Antwort.

      "Hello, World! I'm calling from the prod stage."
  9. Gehen Sie wie folgt vor, um die Funktion Test zum Übergeben von stufenspezifischen Metadaten zu verwenden:

    1. Wählen Sie im Navigationsbereich Resources (Ressourcen) die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.

    2. Geben Sie für function HelloWorld ein.

    3. Geben Sie für stageName beta ein.

    4. Wählen Sie Test aus. Sie müssen Ihrer POST-Anfrage keinen Text hinzufügen.

      Sie erhalten die folgende Antwort.

      "Hello, World! I'm calling from the beta stage."
    5. Sie können die vorherigen Schritte wiederholen, um die Prod-Stufe zu testen. Geben Sie für stageName Prod ein.

      Sie erhalten die folgende Antwort.

      "Hello, World! I'm calling from the prod stage."