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 Tutorial erfahren Sie, wie Sie mithilfe des AWS Cloud Development Kit (AWS CDK) Infrastructure as Code (IAC) -Frameworks eine API-Gateway-REST-API mit einer synchronen Express-State-Machine als Backend-Integration erstellen.
Sie werden das StepFunctionsRestApi
Konstrukt verwenden, um die State Machine mit dem API Gateway zu verbinden. Das StepFunctionsRestApi
Konstrukt richtet ein standardmäßiges Eingabe-/Ausgabe-Mapping und die API-Gateway-REST-API mit den erforderlichen Berechtigungen und einer HTTP-Methode „ANY“ ein.
Mit AWS CDK einem Infrastructure as Code (IAC) -Framework definieren Sie die AWS Infrastruktur mithilfe einer Programmiersprache. Sie definieren eine App in einer der vom CDK unterstützten Sprachen, synthetisieren den Code in einer AWS CloudFormation Vorlage und stellen dann die Infrastruktur für Ihr Konto bereit. AWS
Sie definieren AWS CloudFormation damit eine API-Gateway-REST-API, die in Synchronous Express State Machine als Backend integriert ist, und verwenden dann die, AWS Management Console um die Ausführung zu initiieren.
Bevor Sie mit diesem Tutorial beginnen, richten Sie Ihre AWS CDK Entwicklungsumgebung wie unter Erste Schritte mit den Voraussetzungen beschrieben ein und installieren Sie dann die AWS CDK, AWS CDK indem Sie Folgendes eingeben:
npm install -g aws-cdk
Schritt 1: Richten Sie Ihr AWS CDK Projekt ein
Erstellen Sie zunächst ein Verzeichnis für Ihre neue AWS CDK App und initialisieren Sie das Projekt.
mkdir stepfunctions-rest-api cd stepfunctions-rest-api cdk init --language typescript
Anmerkung
Achten Sie darauf, dem Verzeichnis stepfunctions-rest-api
einen Namen zu geben. Die AWS CDK Anwendungsvorlage verwendet den Namen des Verzeichnisses, um Namen für Quelldateien und Klassen zu generieren. Wenn Sie einen anderen Namen verwenden, wird Ihre App nicht mit diesem Lernprogramm übereinstimmen.
Installieren Sie jetzt die Construct-Bibliotheksmodule für AWS Step Functions und Amazon API Gateway.
npm install @aws-cdk/aws-stepfunctions @aws-cdk/aws-apigateway
Sobald Sie die Module installiert haben, können Sie sie in Ihrer AWS CDK App verwenden, indem Sie die folgenden Pakete importieren.
@aws-cdk/aws-stepfunctions @aws-cdk/aws-apigateway
Schritt 2: Verwenden Sie die AWS CDK
, um eine API-Gateway-REST-API mit synchroner Express State Machine-Backend-Integration zu erstellen
Zunächst stellen wir die einzelnen Codeteile vor, die die Synchronous Express State Machine und die API Gateway REST API definieren, und erklären dann, wie Sie sie in Ihrer AWS CDK App zusammenfügen. Anschließend erfahren Sie, wie Sie diese Ressourcen synthetisieren und einsetzen können.
Anmerkung
Die State Machine, die wir hier zeigen werden, wird eine einfache State Machine mit einem Pass
Status sein.
Um eine Express State Machine zu erstellen
Dies ist der AWS CDK Code, der eine einfache Zustandsmaschine mit einem Pass
Status definiert.
const machineDefinition = new stepfunctions.Pass(this, 'PassState', {
result: {value:"Hello!"},
})
const stateMachine = new stepfunctions.StateMachine(this, 'MyStateMachine', {
definition: machineDefinition,
stateMachineType: stepfunctions.StateMachineType.EXPRESS,
});
Sie können in diesem kurzen Snippet sehen:
-
Die angegebene Maschinendefinition
PassState
, bei der es sich um einenPass
Status handelt. -
Der logische Name der State Machine,
MyStateMachine
. -
Die Definition der Zustandsmaschine wird als State-Machine-Definition verwendet.
-
Der Zustandsmaschinentyp ist auf eingestellt
EXPRESS
, weil erStepFunctionsRestApi
nur eine synchrone Express-Zustandsmaschine zulässt.
So erstellen Sie die API-Gateway-REST-API mit StepFunctionsRestApi
construct
Wir werden StepFunctionsRestApi
Construct verwenden, um die API-Gateway-REST-API mit den erforderlichen Berechtigungen und der standardmäßigen Eingabe-/Ausgabezuordnung zu erstellen.
const api = new apigateway.StepFunctionsRestApi(this,
'StepFunctionsRestApi', { stateMachine: stateMachine });
Um die App zu erstellen und bereitzustellen AWS CDK
Bearbeiten Sie in dem von Ihnen erstellten AWS CDK Projekt die Datei mit der Definition des Stacks so, dass sie wie im folgenden Code aussieht. Sie werden die Definitionen der Step Functions Functions-Zustandsmaschine und des API Gateway von oben erkennen.
Aktualisieren Sie lib/stepfunctions-rest-api-stack.ts
damit darauf folgendes steht.
import * as cdk from 'aws-cdk-lib';
import * as stepfunctions from 'aws-cdk-lib/aws-stepfunctions'
import * as apigateway from 'aws-cdk-lib/aws-apigateway';
export class StepfunctionsRestApiStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const machineDefinition = new stepfunctions.Pass(this, 'PassState', {
result: {value:"Hello!"},
});
const stateMachine = new stepfunctions.StateMachine(this, 'MyStateMachine', {
definition: machineDefinition,
stateMachineType: stepfunctions.StateMachineType.EXPRESS,
});
const api = new apigateway.StepFunctionsRestApi(this,
'StepFunctionsRestApi', { stateMachine: stateMachine });
Speichern Sie die Quelldatei, und geben Sie cdk synth
im Hauptverzeichnis der App heraus. Der AWS CDK führt die App aus, synthetisiert daraus eine AWS CloudFormation Vorlage und zeigt dann die Vorlage an.
Um das Amazon API Gateway und die AWS Step Functions State Machine tatsächlich für Ihr AWS-Konto bereitzustellen, geben Sie Folgendes eincdk deploy
. Sie werden aufgefordert, die von ihnen generierten IAM-Richtlinien zu genehmigen. AWS CDK
Schritt 3: Testen Sie das API Gateway
Nachdem Sie Ihre API-Gateway-REST-API mit Synchronous Express State Machine als Backend-Integration erstellt haben, können Sie das API Gateway testen.
Um das bereitgestellte API Gateway mit der API Gateway-Konsole zu testen
-
Öffnen Sie die Amazon API Gateway Gateway-Konsole
und melden Sie sich an. -
Wählen Sie Ihre REST-API mit dem Namen
StepFunctionsRestApi
. -
Wählen Sie im Bereich Ressourcen die
ANY
Methode aus. -
Wählen Sie die Registerkarte Test. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.
-
Wählen Sie für Method (Methode) die Option POST aus.
-
Kopieren Sie für den Anforderungstext die folgenden Anforderungsparameter.
{ "key": "Hello" }
-
Wählen Sie Test aus. Sie bekommen die folgenden Informationen angezeigt:
-
Request ist der Pfad der Ressource, die für die Methode aufgerufen wurde.
-
Status ist der HTTP-Statuscode der Antwort.
-
Latenz ist die Zeit, die zwischen dem Empfang der Anforderung des Aufrufers und der zurückgegebenen Antwort vergeht.
-
Antworttext ist der Text der HTTP-Antwort.
-
Antwort-Header sind die Header der HTTP-Antwort.
-
Log zeigt die simulierten Amazon CloudWatch Logs-Einträge, die geschrieben worden wären, wenn diese Methode außerhalb der API Gateway Gateway-Konsole aufgerufen worden wäre.
Anmerkung
Obwohl die CloudWatch Logs-Einträge simuliert sind, sind die Ergebnisse des Methodenaufrufs real.
-
Die Ausgabe des Antworttextes sollte etwa so aussehen:
"Hello"
Tipp
Testen Sie das API Gateway mit verschiedenen Methoden und einer ungültigen Eingabe, um die Fehlerausgabe zu sehen. Möglicherweise möchten Sie die Zustandsmaschine so ändern, dass sie nach einem bestimmten Schlüssel sucht, und während des Tests den falschen Schlüssel angeben, damit die Ausführung der Zustandsmaschine fehlschlägt und eine Fehlermeldung in der Ausgabe des Antworttextes generiert wird.
So testen Sie die bereitgestellte API mithilfe von cURL
-
Öffnen Sie ein Terminal-Fenster.
-
Kopieren Sie den folgenden cURL-Befehl und fügen Sie ihn in das Terminalfenster ein. Ersetzen Sie dabei
<api-id>
mit der API-ID Ihrer API und<region>
mit der Region, in der Ihre API bereitgestellt ist.curl -X POST\ 'https://
<api-id>
.execute-api.<region>
.amazonaws.com/prod' \ -d '{"key":"Hello"}' \ -H 'Content-Type: application/json'
Die Ausgabe des Antworttextes sollte etwa so aussehen:
"Hello"
Tipp
Testen Sie das API Gateway mit verschiedenen Methoden und einer ungültigen Eingabe, um die Fehlerausgabe zu sehen. Möglicherweise möchten Sie die Zustandsmaschine so ändern, dass sie nach einem bestimmten Schlüssel sucht, und während des Tests den falschen Schlüssel angeben, damit die Ausführung der Zustandsmaschine fehlschlägt und eine Fehlermeldung in der Ausgabe des Antworttextes generiert wird.
Schritt 4: Bereinigen
Wenn Sie mit dem Testen Ihres API-Gateways fertig sind, können Sie mit dem AWS-CDK sowohl die Zustandsmaschine als auch das API Gateway herunterfahren. Geben Sie cdk destroy
im Hauptverzeichnis Ihrer App heraus.