Tutorial: Workflows mit Step Functions und AWS SAM CLI Local testen - AWS Step Functions

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.

Tutorial: Workflows mit Step Functions und AWS SAM CLI Local testen

Step Functions Local wird nicht unterstützt

Step Functions Local bietet keine Funktionsparität und wird nicht unterstützt.

Sie könnten Lösungen von Drittanbietern in Betracht ziehen, die Step Functions zu Testzwecken emulieren.

Wenn Sie beide AWS Step Functions Optionen AWS Lambda verwenden und auf Ihrem lokalen Computer ausgeführt werden, können Sie Ihre State Machine- und Lambda-Funktionen testen, ohne Ihren Code darauf bereitstellen zu müssen AWS.

Weitere Informationen finden Sie unter den folgenden Themen:

Schritt 1: Einrichten AWS SAM

AWS Serverless Application Model (AWS SAM) CLI Local erfordert AWS Command Line Interface, dass Docker AWS SAM, und Docker installiert sind.

  1. Installieren Sie die AWS SAM CLI.

    Anmerkung

    Bevor Sie die AWS SAM CLI installieren, müssen Sie den AWS CLI und Docker installieren. Weitere Informationen finden Sie unter Voraussetzungen für die Installation der AWS SAM CLI.

  2. Gehen Sie die AWS SAM Schnellstart-Dokumentation durch. Beachten Sie die Schritte zum Ausführen folgender Aufgaben:

    Dadurch wird ein sam-app Verzeichnis erstellt und eine Umgebung erstellt, die eine Python-basierte Hello World Lambda-Funktion enthält.

Schritt 2: AWS SAM CLI Local testen

Nachdem Sie die Hello World Lambda-Funktion installiert AWS SAM und erstellt haben, können Sie die Funktion testen. Geben Sie den folgenden Befehl im Verzeichnis sam-app ein:

sam local start-api

Dadurch wird eine lokale Instanz Ihrer Lambda-Funktion gestartet. Die Ausgabe sollte folgendermaßen oder ähnlich aussehen:

2019-01-31 16:40:27 Found credentials in shared credentials file: ~/.aws/credentials 2019-01-31 16:40:27 Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET] 2019-01-31 16:40:27 You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template 2019-01-31 16:40:27 * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

Öffnen Sie einen Browser und geben Sie Folgendes ein:

http://127.0.0.1:3000/hello

Dadurch wird eine Antwort ähnlich der folgenden ausgegeben:

{"message": "hello world", "location": "72.21.198.66"}

Geben Sie STRG+C ein, um die Lambda-API zu beenden.

Schritt 3: AWS SAM CLI Local starten

Nachdem Sie getestet haben, ob die Funktion funktioniert, starten Sie AWS SAM CLI Local. Geben Sie den folgenden Befehl im Verzeichnis sam-app ein:

sam local start-lambda

Dadurch wird AWS SAM CLI Local gestartet und der zu verwendende Endpunkt bereitgestellt, ähnlich der folgenden Ausgabe:

2019-01-29 15:33:32 Found credentials in shared credentials file: ~/.aws/credentials 2019-01-29 15:33:32 Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2019-01-29 15:33:32 * Running on http://127.0.0.1:3001/ (Press CTRL+C to quit)

Schritt 4: Step Functions Local starten

JAR-Datei

Wenn Sie die .jar Dateiversion von Step Functions Local verwenden, starten Sie Step Functions und geben Sie den Lambda-Endpunkt an. Geben Sie in dem Verzeichnis, in das Sie die .jar Dateien extrahiert haben, den folgenden Befehl ein:

java -jar StepFunctionsLocal.jar --lambda-endpoint http://localhost:3001

Wenn Step Functions Local gestartet wird, überprüft es die Umgebung und dann die in Ihrer ~/.aws/credentials Datei konfigurierten Anmeldeinformationen. Standardmäßig verwendet es zunächst eine fiktive Benutzer-ID und wird als aufgeführt. region us-east-1

2019-01-29 15:38:06.324: Failed to load credentials from environment because Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)) 2019-01-29 15:38:06.326: Loaded credentials from profile: default 2019-01-29 15:38:06.326: Starting server on port 8083 with account 123456789012, region us-east-1

Docker

Wenn Sie die Docker-Version von Step Functions Local verwenden, starten Sie Step Functions mit dem folgenden Befehl:

docker run -p 8083:8083 amazon/aws-stepfunctions-local

Informationen zur Installation der Docker-Version von Step Functions finden Sie unterStep Functions lokal einrichten (herunterladbare Version) in Docker.

Anmerkung

Sie können den Endpunkt über die Befehlszeile oder durch das Setzen von Umgebungsvariablen angeben, wenn Sie Step Functions von der .jar Datei aus starten. Für die Docker-Version müssen Sie die Endpunkte und Anmeldeinformationen in einer Textdatei angeben. Siehe Konfigurationsoptionen für Step Functions lokal einrichten.

Schritt 5: Erstellen Sie eine Zustandsmaschine, die auf Ihre lokale AWS SAM CLI-Funktion verweist

Nachdem Step Functions Local ausgeführt wurde, erstellen Sie eine Zustandsmaschine, die auf die verweistHelloWorldFunction, in Schritt 1: Einrichten AWS SAM der Sie initialisiert haben.

aws stepfunctions --endpoint http://localhost:8083 create-state-machine --definition "{\ \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Local function\",\ \"StartAt\": \"HelloWorld\",\ \"States\": {\ \"HelloWorld\": {\ \"Type\": \"Task\",\ \"Resource\": \"arn:aws:lambda:us-east-1:123456789012:function:HelloWorldFunction\",\ \"End\": true\ }\ }\ }\" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"

Dadurch wird eine Zustandsmaschine erstellt und ein Amazon-Ressourcenname (ARN) bereitgestellt, mit dem Sie eine Ausführung starten können.

{ "creationDate": 1548805711.403, "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

Schritt 6: Die Ausführung des lokalen Zustandsautomaten starten

Sobald Sie eine Zustandsmaschine erstellt haben, starten Sie eine Ausführung. Sie müssen den Endpunkt und den ARN der Zustandsmaschine referenzieren, wenn Sie den folgenden aws stepfunctions Befehl verwenden:

aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld --name test

Dadurch wird eine Ausführung gestartet, die nach Ihrer test HelloWorld Zustandsmaschine benannt ist.

{ "startDate": 1548810641.52, "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test" }

Da Step Functions nun lokal ausgeführt wird, können Sie mit dem Programm interagieren AWS CLI. Um beispielsweise Informationen zu dieser Ausführung zu erhalten, verwenden Sie den folgenden Befehl:

aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test

Wenn Sie describe-execution eine Ausführung aufrufen, erhalten Sie vollständigere Informationen, die der folgenden Ausgabe ähneln:

{ "status": "SUCCEEDED", "startDate": 1549056334.073, "name": "test", "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "stopDate": 1549056351.276, "output": "{\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\", \\\"location\\\": \\\"72.21.198.64\\\"}\"}", "input": "{}" }