Step-Funktionen 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.

Step-Funktionen und AWS SAM CLI Local testen

Wenn Sie beide AWS Step Functions auf Ihrem lokalen Computer AWS Lambda ausführen, können Sie Ihre State-Maschine und Lambda-Funktionen testen, ohne Ihren Code darauf bereitstellen zu müssen. AWS

Weitere Informationen finden Sie unter den folgenden Themen:

Schritt 1: Einrichten von AWS SAM

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

  1. Installieren der AWS SAM-CLI.

    Anmerkung

    Bevor Sie die AWS SAM CLI installieren können, müssen Sie die AWS CLI und Docker installieren. Weitere Informationen finden Sie in den 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: Testen von AWS SAM CLI Local

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. Sie sollten eine Ausgabe sehen, die der folgenden ähnelt:

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 ausgegeben, die der folgenden ähnelt:

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

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

Schritt 3: Starten von AWS SAM CLI Local

Nachdem Sie nun 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: Starten Sie Step Functions Local

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 dem 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

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

Anmerkung

Sie können den Endpunkt über die Befehlszeile oder durch Festlegen 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 eines Zustandsautomaten, der auf die AWS SAM CLI Local-Funktion verweist

Sobald Step Functions Local ausgeführt wird, erstellen Sie eine State-Maschine, die auf HelloWorldFunction die verweist, in Schritt 1: Einrichten von 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 State-Maschine erstellt und ein Amazon Resource Name (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 State Machine erstellt haben, starten Sie eine Ausführung. Sie müssen den Endpunkt und den ARN der Statusmaschine 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 mit dem Namen test Ihrer HelloWorld State-Maschine gestartet.

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

Jetzt, da Step Functions lokal läuft, können Sie mit dem Programm interagierenAWS CLI. Verwenden Sie beispielsweise den folgenden Befehl, um Informationen zu dieser Ausführung zu erhalten:

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

Der Aufruf describe-execution zur Ausführung liefert vollständigere Details, ähnlich wie bei der folgenden Ausgabe:

{ "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": "{}" }