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