

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
<a name="sfn-local-lambda"></a>

**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.  
Als Alternative zu Step Functions Local können Sie die TestState API verwenden, um Ihre State-Machine-Logik vor der Bereitstellung in Ihrem AWS Konto auf Unit-Tests zu testen. Weitere Informationen finden Sie unter [Testen von Zustandsmaschinen mit TestState API](https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html).

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:
+ [Testen von Zustandsmaschinen mit Step Functions Local (nicht unterstützt)](sfn-local.md)
+ [Richten Sie ein AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html)

## Schritt 1: Einrichten AWS SAM
<a name="install-sam"></a>

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](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html).
**Anmerkung**  
Bevor Sie die AWS SAM CLI installieren, müssen Sie den AWS CLI und Docker installieren. Weitere Informationen finden Sie unter [Voraussetzungen](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) für die Installation der AWS SAM CLI.

1. Gehen Sie die [AWS SAM Schnellstart](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html)-Dokumentation durch. Beachten Sie die Schritte zum Ausführen folgender Aufgaben:

   1. [Initialisieren der Anwendung](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html#gs-ex1-setup-local-app)

   1.  [Lokales Testen der Anwendung](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html#gs-ex1-test-locally) 

   

   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
<a name="test-local-lambda"></a>

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
<a name="start-local-lambda"></a>

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
<a name="start-stepfunctions-local"></a>

### JAR-Datei
<a name="start-local-jar"></a>

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 {{account-id}}, region us-east-1
```

### Docker
<a name="start-local-docker"></a>

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 unter[Step Functions lokal einrichten (herunterladbare Version) in Docker](sfn-local.md#sfn-local-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](sfn-local.md#sfn-local-config-options).

## Schritt 5: Erstellen Sie eine Zustandsmaschine, die auf Ihre lokale AWS SAM CLI-Funktion verweist
<a name="create-local-statemachine"></a>

Nachdem Step Functions Local ausgeführt wurde, erstellen Sie eine Zustandsmaschine, die auf die verweist`HelloWorldFunction`, in [Schritt 1: Einrichten AWS SAM](#install-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:{{region}}:{{account-id}}: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:{{region}}:{{account-id}}:stateMachine:HelloWorld"
}
```

## Schritt 6: Die Ausführung des lokalen Zustandsautomaten starten
<a name="run-local-statemachine"></a>

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:{{region}}:{{account-id}}: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:{{region}}:{{account-id}}: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:{{region}}:{{account-id}}: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:{{region}}:{{account-id}}:execution:HelloWorld:test", 
    "stateMachineArn": "arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld", 
    "stopDate": 1549056351.276, 
    "output": "{\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\", \\\"location\\\": \\\"72.21.198.64\\\"}\"}", 
    "input": "{}"
}
```