Richten Sie Stufenvariablen für REST APIs in API Gateway ein - APIAmazon-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.

Richten Sie Stufenvariablen für REST APIs in API Gateway ein

In diesem Abschnitt wird gezeigt, wie Sie mithilfe der Amazon API Gateway-Konsole verschiedene Stufenvariablen für zwei API Bereitstellungsphasen eines Beispiels einrichten. Um zu verstehen, wie Stufenvariablen in API Gateway verwendet werden, empfehlen wir Ihnen, alle Verfahren in diesem Abschnitt zu befolgen.

Voraussetzungen

Überprüfen Sie vor Beginn, ob die folgenden Anforderungen erfüllt sind:

Rufen Sie einen HTTP Endpunkt über eine API mit einer Stage-Variablen auf

Dieses Verfahren beschreibt, wie Sie eine Stufenvariable für einen HTTP Endpunkt und zwei Stufen für Ihren API erstellen. Darüber hinaus erstellen Sie die Stufenvariablen,url, undstageName, function die in den folgenden Verfahren in diesem Abschnitt verwendet werden.

Um einen HTTP Endpunkt über eine API mit einer Stufenvariable aufzurufen
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Erstellen Sie eine API und anschließend eine GET Methode für die API Root-Ressource von. Stellen Sie den Integrationstyp auf HTTPund legen Sie den Endpunkt URL auf festhttp://${stageVariables.url}.

  3. Stellen Sie das API in einer neuen Phase mit dem Namen bereitbeta.

  4. Wählen Sie im Navigationsbereich Stages (Stufen) die Stufe beta.

  5. Wählen Sie auf der Registerkarte Stage variables (Stufenvariablen) die Option Edit (Bearbeiten) aus.

  6. Wählen Sie Add stage variable (Stufenvariable hinzufügen).

  7. Geben Sie unter Name url ein. Geben Sie für Value (Wert) httpbin.org/get ein.

  8. Wählen Sie Add stage variable (Stufenvariable hinzufügen) und gehen Sie wie folgt vor:

    Geben Sie unter Name stageName ein. Geben Sie für Value (Wert) beta ein.

  9. Wählen Sie Add stage variable (Stufenvariable hinzufügen) und gehen Sie wie folgt vor:

    Geben Sie unter Name function ein. Geben Sie für Value (Wert) HelloWorld ein.

  10. Wählen Sie Save aus.

  11. Erstellen Sie nun eine zweite Stufe. Wählen Sie im Navigationsbereich Stages (Stufen) die Option Create stage (Stufe erstellen). Geben Sie für Stage name (Stufenname) prod ein. Wählen Sie in Deployment (Bereitstellung) eine kürzlich ausgeführte Bereitstellung und anschließend Create stage (Stufe erstellen) aus.

  12. Legen Sie wie in der Beta-Phase dieselben drei Stufenvariablen (url stageName, und function) jeweils auf unterschiedliche Werte (petstore-demo-endpoint.execute-api.com/petstore/petsprod, undHelloEveryone) fest.

  13. Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage-Details das Kopiersymbol aus, um Ihren API Aufruf zu kopierenURL, und geben Sie dann Ihren API Aufruf URL in einem Webbrowser ein. Dadurch wird die GET Anfrage für die Betaphase auf der Root-Ressource von gestartet. API

    Anmerkung

    Der URLInvoke-Link verweist auf die Root-Ressource von, die sich API in der Beta-Phase befindet. Wenn Sie URL in einem Webbrowser eingeben, wird die GET Methode im Beta-Stadium für die Root-Ressource aufgerufen. Wenn Methoden für untergeordnete Ressourcen und nicht für die Stammressource selbst definiert sind, gibt die Eingabe von URL in einem Webbrowser eine {"message":"Missing Authentication Token"} Fehlerantwort zurück. In diesem Fall müssen Sie den Namen einer bestimmten untergeordneten Ressource an den URLInvoke-Link anhängen.

  14. 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.

  15. Wählen Sie im Navigationsbereich Stages die Stufe prod. Wählen Sie unter Stage-Details das Kopiersymbol aus, um Ihren API Aufruf zu kopierenURL, und geben Sie dann Ihren API Aufruf URL in einem Webbrowser ein. Dadurch wird die GETProd-Stage-Anfrage auf der Root-Ressource von gestartet. API

  16. Im Folgenden wird die Antwort angezeigt, die Sie von der prod-Stufen-Anforderung GET erhalten. Sie können das Ergebnis ü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 HTTP Sie phasenspezifische Metadaten an ein Backend

Dieses Verfahren beschreibt, wie ein Stufenvariablenwert in einem Abfrageparameterausdruck verwendet wird, um phasenspezifische Metadaten an ein Backend zu übergeben. HTTP Wir werden die stageName Stufenvariable verwenden, die im vorherigen Verfahren deklariert wurde.

Um phasenspezifische Metadaten an ein Backend zu übergeben HTTP
  1. Wählen Sie im Ressourcennavigationsbereich die Methode aus. GET

    Um der Methode einen Abfragezeichenfolgenparameter hinzuzufügenURL, wählen Sie die Registerkarte Methodenanforderung und dann im Abschnitt Einstellungen für Methodenanforderung die Option Bearbeiten aus.

  2. Wählen Sie URLAbfragezeichenfolgenparameter 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 für Endpoint URL ?stageName=${stageVariables.stageName} den zuvor definierten URL Wert hinzu, sodass der gesamte Endpunkt angezeigt URL wirdhttp://${stageVariables.url}?stageName=${stageVariables.stageName}.

  6. Wählen Sie Deploy API und wählen Sie die Beta-Phase aus.

  7. Klicken Sie im Hauptnavigationsbereich auf Stages (Stufen). Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage-Details das Kopiersymbol aus, um Ihren API Aufruf zu kopierenURL, und geben Sie dann Ihren API Aufruf URL in einem Webbrowser ein.

    Anmerkung

    Wir verwenden hier die Beta-Phase, da der HTTP Endpunkt (wie durch die url Variable "http://httpbin.org/get" angegeben) Abfrageparameterausdrücke akzeptiert und sie als args Objekt in seiner Antwort 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 API's mit einem HTTP Endpunkt, der die Stage-Variable url verwendet.

Rufen Sie eine Lambda-Funktion über eine API mit einer Stufenvariable auf

Dieses Verfahren beschreibt, wie Sie eine Stage-Variable verwenden, um eine Lambda-Funktion als Backend von Ihnen aufzurufen. API Sie verwenden die function Stufenvariable, die in deklariert ist. Rufen Sie einen HTTP Endpunkt über eine API mit einer Stage-Variablen auf

Wenn Sie eine Lambda-Funktion als Wert einer Stufenvariable festlegen, verwenden Sie den lokalen Namen der Funktion und binden den Alias oder die Versionsangabe ein, z. B. HelloWorld, HelloWorld:1 oder HelloWorld:alpha. Verwenden Sie nicht die der Funktion ARN (zum Beispielarn:aws:lambda:us-east-1:123456789012:function:HelloWorld). Die API Gateway-Konsole nimmt den Stufenvariablenwert für eine Lambda-Funktion als unqualifizierten Funktionsnamen an und erweitert die angegebene Stufenvariable zu einer. ARN

Um eine Lambda-Funktion über eine API mit einer Stage-Variablen aufzurufen
  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 Ressource /lambdav1 und anschließend die Methode Create aus.

    Führen Sie dann die folgenden Schritte aus:

    1. Wählen Sie als Methodentyp die Option GET 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 Sie zum Befehl Add Permission aufgefordert werden, kopieren Sie den Befehl. AWS CLI 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.

      AWS CLI Befehl, um der Lambda-Funktion die Erlaubnis zu geben, von der von Ihnen erstellten Methode aufgerufen zu werden.
    5. Wählen Sie Methode erstellen aus.

  4. Stellen Sie den sowohl API in der Prod- als auch in der Beta-Phase bereit.

  5. Klicken Sie im Hauptnavigationsbereich auf Stages (Stufen). Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage-Details das Kopiersymbol aus, um Ihren API Aufruf zu kopierenURL, und geben Sie dann Ihren API Aufruf URL in einem Webbrowser ein. Hängen Sie es /lambdav1 an, URL 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.

Um phasenspezifische Metadaten über eine Stufenvariable an eine Lambda-Funktion zu übergeben
  1. Wählen Sie die Ressource /lambdav1 und dann Methode erstellen aus.

    Führen Sie dann die folgenden Schritte aus:

    1. Wählen Sie als 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 Sie zum Befehl Add Permission aufgefordert werden, kopieren Sie den Befehl. AWS CLI 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 API den sowohl in der Beta - als auch in der Produktionsphase bereit.

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

    1. Wählen Sie im Navigationsbereich Stages beta. Wählen Sie unter Stage-Details das Kopiersymbol aus, um Ihren API Aufruf zu kopierenURL, und geben Sie dann Ihren Aufruf URL in das Eingabefeld API eines Kunden ein. REST API 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 das Kopiersymbol aus, um Ihren API Aufruf zu kopierenURL, und geben Sie dann Ihren Aufruf URL in das Eingabefeld API eines Kunden ein. REST API 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 unter stageName den Wert 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 unter stageName den Wert Prod ein.

      Sie erhalten die folgende Antwort.

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