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.
In diesem Abschnitt erfahren Sie, wie Sie mit der Amazon-API-Gateway-Konsole verschiedene Stufenvariablen für zwei Bereitstellungsstufen einer Beispiel-API einrichten. Für ein besseres Verständnis, wie Stufenvariablen in API Gateway verwendet werden, empfehlen wir, dass Sie alle Schritte in diesem Abschnitt befolgen.
Voraussetzungen
Überprüfen Sie vor Beginn, ob die folgenden Anforderungen erfüllt sind:
-
Es muss eine API in API Gateway verfügbar sein. Folgen Sie den Anweisungen in Entwickeln Sie REST APIs in API Gateway.
-
Sie müssen die API mindestens einmal bereitgestellt haben. Folgen Sie den Anweisungen in Stellen Sie REST APIs in API Gateway bereit.
-
Sie müssen die erste Stufe für eine bereitgestellte API erstellt haben. Folgen Sie den Anweisungen in Erstellen einer neuen Stufe.
Aufrufen eines HTTP-Endpunkts über eine API mit einer Stufenvariable
In diesem Verfahren wird beschrieben, wie Sie eine Stufenvariable für einen HTTP-Endpunkt und zwei Stufen für Ihre API erstellen. Darüber hinaus erstellen Sie die Stufenvariablen url
, stageName
und function
, die in den folgenden Abläufen in diesem Abschnitt verwendet werden.
Aufrufen eines HTTP-Endpunkts über eine API mit einer Stufenvariable
Melden Sie sich bei der API Gateway Gateway-Konsole unter https://console.aws.amazon.com/apigatewayan
. -
Erstellen Sie eine API und anschließend eine
GET
-Methode für die Root-Ressource der API. Stellen Sie den Integrationstyp auf HTTP und die Endpunkt-URL aufhttp://${stageVariables.url}
. -
Stellen Sie die API für eine neue Stufe namens
beta
bereit. -
Wählen Sie im Navigationsbereich Stages (Stufen) die Stufe beta.
-
Wählen Sie auf der Registerkarte Stage variables (Stufenvariablen) die Option Edit (Bearbeiten) aus.
-
Wählen Sie Add stage variable (Stufenvariable hinzufügen).
-
Geben Sie unter Name
url
ein. Geben Sie für Value (Wert)httpbin.org/get
ein. -
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. -
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. -
Wählen Sie Save (Speichern) aus.
-
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. -
Legen Sie wie im Fall der Phase beta die gleichen drei Stufenvariablen (url, stageName und function) auf unterschiedliche Werte fest („
petstore-demo-endpoint.execute-api.com/petstore/pets
“, „prod
“ und „HelloEveryone
“). -
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. -
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 derurl
-Variablen in der beta-Stufe zugewiesen. Die beiden Antworten sind identisch. -
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. -
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://.execute-api navigieren. petstore-demo-endpoint com/petstore/pets. Dieser Wert wurde derurl
-Variablen in der prod-Stufe zugewiesen. Die beiden Antworten sind identisch.
Übergabe phasenspezifischer Metadaten an ein HTTP-Backend
In diesem Verfahren wird beschrieben, wie stufenbezogene Metadaten mittels eines Stufenvariablenwerts in einem Abfrageparameterausdruck an ein HTTP-Backend übergeben werden. Hier verwenden wir die stageName
-Stufenvariable, die im vorangegangenen Verfahren deklariert wurde.
Übergabe phasenspezifischer Metadaten an ein HTTP-Backend
-
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).
Wählen Sie URL query string parameters (URL-Abfragezeichenfolgen-Parameter) und gehen Sie wie folgt vor:
Wählen Sie Abfragezeichenfolge hinzufügen aus.
Geben Sie unter Name
stageName
ein.Lassen Sie die Optionen Required (Obligatorisch) and Caching (Cache) deaktiviert.
Wählen Sie Save (Speichern) aus.
-
Wählen Sie die Registerkarte Integration request (Integrationsanforderung) und dann im Abschnitt Integration request settings (Einstellungen für Integrationsanforderungen) die Option Edit (Bearbeiten) aus.
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.-
Wählen Sie Deploy API (API bereitstellen) und wählen Sie die Stufe beta aus.
-
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 alsargs
-Objekt zurückgibt. -
Sie erhalten die folgende Antwort. Beachten Sie, dass
beta
(zugeordnet zurstageName
-Stufenvariable) alsstageName
-Argument an das Backend übergeben wird.
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. Hier verwenden Sie die function
-Stufenvariable, die in Aufrufen eines HTTP-Endpunkts über eine API mit einer Stufenvariable deklariert wurde.
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
. Nutzen Sie nicht den ARN der Funktion (z. B, arn:aws:lambda:us-east-1:123456789012:function:HelloWorld
). Die API Gateway-Konsole betrachtet den Stufenvariablenwert einer Lambda-Funktion als unvollständigen Funktionsnamen und erweitert die Stufenvariable zu einem ARN.
Aufrufen einer Lambda-Funktion über eine API mit einer Stufenvariable
-
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.
-
Wählen Sie im Bereich Ressources (Ressourcen) die Option Create resource (Ressource erstellen) aus, und gehen Sie dann wie folgt vor:
Wählen Sie für Resource path (Ressourcenpfad) die Option/aus.
Geben Sie für Resource name (Ressourcenname)
lambdav1
ein.Wählen Sie Create Resource (Ressource erstellen) aus.
-
Wählen Sie die /lambdav1-Ressource aus und klicken Sie dann auf Methode erstellen.
Führen Sie dann die folgenden Schritte aus:
Wählen Sie als Methodentyp die Option GET (Abrufen) aus.
Wählen Sie für den Integration type (Integrationstyp) die Option Lambda function (Lambda-Funktion) aus.
Lassen Sie Lambda proxy integration (Lambda-Proxyintegration) deaktiviert.
Geben Sie für die Lambda function (Lambda-Funktion)
${stageVariables.function}
ein.Tipp
Wenn Sie zum Befehl Add permission aufgefordert werden, kopieren Sie den Befehl add-permission. Sie müssen den Befehl für jede Lambda-Funktion ausführen, die der
function
-Stufenvariable zugewiesen werden soll. Wenn der$stageVariables.function
-Wert beispielsweiseHelloWorld
lautet, 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-idstatement-id-guid
--action lambda:InvokeFunctionFalls 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.-
Wählen Sie Methode erstellen aus.
-
Stellen Sie die API in den Stufen prod und beta bereit.
-
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.
Übergeben von stufenbezogenen Metadaten an eine Lambda-Funktion über eine Stufenvariable
-
Wählen Sie die /lambdav1-Ressource aus und klicken Sie dann auf Methode erstellen.
Führen Sie dann die folgenden Schritte aus:
Wählen Sie unter Method type (Methodentyp) die Option POST aus.
Wählen Sie für den Integration type (Integrationstyp) die Option Lambda function (Lambda-Funktion) aus.
Lassen Sie Lambda proxy integration (Lambda-Proxyintegration) deaktiviert.
Geben Sie für die Lambda function (Lambda-Funktion)
${stageVariables.function}
ein.-
Wenn Sie zum Befehl Add permission aufgefordert werden, kopieren Sie den Befehl add-permission. Sie müssen den Befehl für jede Lambda-Funktion ausführen, die der
function
-Stufenvariable zugewiesen werden soll. Wählen Sie Methode erstellen aus.
-
Wählen Sie die Registerkarte Integration request (Integrationsanforderung) und dann im Abschnitt Integration request settings (Einstellungen für Integrationsanforderungen) die Option Edit (Bearbeiten) aus.
Wählen Sie Mapping-Vorlagen aus und klicken Sie dann auf Mapping-Vorlage hinzufügen.
Geben Sie für Content type (Inhaltstyp)
application/json
ein.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}
).Wählen Sie Save (Speichern) aus.
-
Stellen Sie die API in den Stufen beta und prod bereit.
-
Gehen Sie wie folgt vor, um einen REST-API-Client zum Übergeben von stufenspezifischen Metadaten zu verwenden:
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."
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."
-
Gehen Sie wie folgt vor, um die Funktion Test zum Übergeben von stufenspezifischen Metadaten zu verwenden:
Wählen Sie im Navigationsbereich Resources (Ressourcen) die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.
Geben Sie für function
HelloWorld
ein.Geben Sie für stageName
beta
ein.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."
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."