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:
-
Sie müssen über eine in API Gateway API verfügbare Version verfügen. Folgen Sie den Anweisungen in RESTAPIsIn API Gateway entwickeln.
-
Sie müssen den API mindestens einmal bereitgestellt haben. Folgen Sie den Anweisungen in RESTAPIsIn API Gateway bereitstellen.
-
Sie müssen die erste Phase für eine bereitgestellte erstellt habenAPI. Folgen Sie den Anweisungen in Erstellen einer neuen Stufe.
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
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway
an. -
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}
. -
Stellen Sie das API in einer neuen Phase mit dem Namen bereit
beta
. -
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 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 in der Beta-Phase dieselben drei Stufenvariablen (url stageName, und function) jeweils auf unterschiedliche Werte (
petstore-demo-endpoint.execute-api.com/petstore/pets
prod
, undHelloEveryone
) fest. -
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. APIAnmerkung
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. -
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 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
Prod-Stage-Anfrage auf der Root-Ressource von gestartet. API -
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 derurl
-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
-
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.
Wählen Sie URLAbfragezeichenfolgenparameter 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 Speichern.
-
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 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}
.-
Wählen Sie Deploy API und wählen Sie die Beta-Phase aus.
-
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 alsargs
Objekt in seiner Antwort zurückgibt. -
Sie erhalten die folgende Antwort. Beachten Sie, dass
beta
(zugeordnet zurstageName
-Stufenvariable) alsstageName
-Argument an das Backend übergeben wird.
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
-
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 Ressource /lambdav1 und anschließend die Methode Create aus.
Führen Sie dann die folgenden Schritte aus:
Wählen Sie als Methodentyp die Option GET 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. 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-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 den sowohl API in der Prod- als auch in der Beta-Phase bereit.
-
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
-
Wählen Sie die Ressource /lambdav1 und dann Methode erstellen aus.
Führen Sie dann die folgenden Schritte aus:
Wählen Sie als 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. AWS CLI 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 Speichern.
-
Stellen Sie API den sowohl in der Beta - als auch in der Produktionsphase bereit.
-
Gehen Sie wie folgt vor, um einen REST API Client zum Übergeben von phasenspezifischen Metadaten zu verwenden:
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."
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."
-
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 unter stageName den Wert
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 unter stageName den Wert
Prod
ein.Sie erhalten die folgende Antwort.
"Hello, World! I'm calling from the prod stage."