

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriel : Test des flux de travail à l'aide de Step Functions et de AWS SAM CLI Local
<a name="sfn-local-lambda"></a>

**Step Functions Local n'est pas pris en charge**  
Step Functions Local n'**assure pas** la parité des fonctionnalités et n'est **pas pris en charge**.  
Vous pouvez envisager des solutions tierces qui émulent Step Functions à des fins de test.  
Comme alternative à Step Functions Local, vous pouvez utiliser l' TestState API pour tester la logique de votre machine à états avant de la déployer sur votre AWS compte. Pour plus d'informations, consultez la section [Tester les machines à états avec TestState l'API](https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html).

Avec les deux AWS Step Functions et AWS Lambda en les exécutant sur votre machine locale, vous pouvez tester votre machine à états et les fonctions Lambda sans y déployer votre code. AWS

Pour plus d’informations, consultez les rubriques suivantes :
+ [Tester des machines à états avec Step Functions Local (non pris en charge)](sfn-local.md)
+ [Configuration AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html)

## Étape 1 : Configuration AWS SAM
<a name="install-sam"></a>

AWS Serverless Application Model (AWS SAM) CLI Local nécessite l'installation de AWS Command Line Interface AWS SAM, et de Docker. 

1. [Installez la AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html).
**Note**  
Avant d'installer la AWS SAM CLI, vous devez installer Docker AWS CLI et. Consultez les [conditions préalables à](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) l'installation de la AWS SAM CLI.

1. Lisez la documentation [AWS SAM Quick Start](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html). Assurez-vous de suivre les étapes pour effectuer les opérations suivantes :

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

   1.  [Tester l'application localement](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html#gs-ex1-test-locally) 

   

   Cela crée un `sam-app` répertoire et crée un environnement qui inclut une fonction Lambda Hello World basée sur Python.

   

## Étape 2 : Tester la AWS SAM CLI locale
<a name="test-local-lambda"></a>

Maintenant que vous avez installé AWS SAM et créé la fonction Lambda Hello World, vous pouvez la tester. Dans le répertoire `sam-app`, entrez la commande suivante :

```
sam local start-api
```

Cela lance une instance locale de votre fonction Lambda. Vous devez voir des résultats similaires à ce qui suit :

```
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)
```

Ouvrez un navigateur et entrez les informations suivantes :

```
http://127.0.0.1:3000/hello
```

Cela produira une réponse similaire à la suivante :

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

Entrez **CTRL\$1C** pour terminer l'API Lambda.

## Étape 3 : démarrer la AWS SAM CLI locale
<a name="start-local-lambda"></a>

Maintenant que vous avez testé le fonctionnement de la fonction, lancez AWS SAM CLI Local. Dans le répertoire `sam-app`, entrez la commande suivante :

```
sam local start-lambda
```

Cela démarre AWS SAM CLI Local et fournit le point de terminaison à utiliser, comme dans le résultat suivant :

```
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)
```

## Étape 4 : Démarrez Step Functions Local
<a name="start-stepfunctions-local"></a>

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

Si vous utilisez la version `.jar` fichier de Step Functions Local, lancez Step Functions et spécifiez le point de terminaison Lambda. Dans le répertoire où vous avez extrait les `.jar` fichiers, entrez la commande suivante :

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

Lorsque Step Functions Local démarre, il vérifie l'environnement, puis les informations d'identification configurées dans votre `~/.aws/credentials` fichier. Par défaut, il commence par utiliser un nom d'utilisateur fictif et est répertorié sous le nom. `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>

Si vous utilisez la version Docker de Step Functions Local, lancez Step Functions avec la commande suivante :

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

Pour plus d'informations sur l'installation de la version Docker de Step Functions, consultez[Configuration de Step Functions en local (version téléchargeable) dans Docker](sfn-local.md#sfn-local-docker).

**Note**  
Vous pouvez spécifier le point de terminaison via la ligne de commande ou en définissant des variables d'environnement si vous lancez Step Functions depuis le `.jar` fichier. Pour la version Docker, vous devez spécifier les points de terminaison et les informations d'identification dans un fichier texte. Consultez [Configuration des options de configuration pour Step Functions Local](sfn-local.md#sfn-local-config-options).

## Étape 5 : créer une machine à états qui fait référence à votre fonction locale AWS SAM CLI
<a name="create-local-statemachine"></a>

Une fois que Step Functions Local est en cours d'exécution, créez une machine à états qui fait référence à `HelloWorldFunction` celle dans [Étape 1 : Configuration AWS SAM](#install-sam) laquelle vous l'avez initialisée.

```
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"
```

Cela créera une machine à états et fournira un Amazon Resource Name (ARN) que vous pourrez utiliser pour démarrer une exécution.

```
{
    "creationDate": 1548805711.403, 
    "stateMachineArn": "arn:aws:states:region:account-id:stateMachine:HelloWorld"
}
```

## Étape 6 : Démarrer une exécution de votre machine d'état locale
<a name="run-local-statemachine"></a>

Une fois que vous avez créé une machine à états, lancez une exécution. Vous devez faire référence au point de terminaison et à l'ARN de la machine à états lorsque vous utilisez la **aws stepfunctions** commande suivante :

```
aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:region:account-id:stateMachine:HelloWorld --name test
```

Cela lance une exécution nommée `test` de votre machine `HelloWorld` d'état.

```
{
    "startDate": 1548810641.52, 
    "executionArn": "arn:aws:states:region:account-id:execution:HelloWorld:test"
}
```

Maintenant que Step Functions est exécuté localement, vous pouvez interagir avec celui-ci à l'aide du AWS CLI. Par exemple, pour obtenir des informations sur cette exécution, utilisez la commande suivante :

```
aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:region:account-id:execution:HelloWorld:test
```

L'`describe-execution`appel à une exécution fournit des détails plus complets, similaires à la sortie suivante :

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