Tester les fonctions de l'étape et l'AWS SAMinterface de ligne de commande locale - AWS Step Functions

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.

Tester les fonctions de l'étape et l'AWS SAMinterface de ligne de commande locale

En utilisant les deux AWS Step Functions et AWS Lambda en les exécutant sur votre machine locale, vous pouvez tester votre machine d'état et les fonctions Lambda sans y déployer votre code. AWS

Pour plus d'informations, consultez les rubriques suivantes :

Étape 1 : Configurer AWS SAM

AWS Serverless Application Model (AWS SAM) CLI Local nécessite que l'AWS Command Line Interface, AWS SAM et Docker soient installés.

  1. Installez l'interface de ligne de commande AWS SAM.

    Note

    Avant d'installer l'interface de ligne de commande AWS SAM, vous devez installer l'AWS CLI et Docker. Consultez les Prérequis pour l'installation de l'interface de ligne de commande AWS SAM.

  2. Lisez la documentation AWS SAM Quick Start. Assurez-vous de suivre les étapes pour effectuer les opérations suivantes :

    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 : Test de la version locale de l'interface de ligne de commande AWS SAM

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 devriez voir un résultat semblable à 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 saisissez 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+C pour terminer l'API Lambda.

Étape 3 : Démarrage de la version locale de l'interface de ligne de commande AWS SAM

Maintenant que vous avez vérifié que la fonction est opérationnelle, démarrez la version locale de l'interface de ligne de commande AWS SAM. 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 la sortie suivante :

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

Fichier JAR

Si vous utilisez la version de .jar fichier de Step Functions Local, démarrez 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 identifiant utilisateur fictif et est répertorié sous la forme. 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

Si vous utilisez la version Docker de Step Functions Local, lancez Step Functions à l'aide de 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, consultezConfiguration de Step Functions Local (version téléchargeable) et 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 à partir du .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.

Étape 5 : Création d'une machine d'état référençant la fonction de votre version locale de l'interface de ligne de commande AWS SAM

Une fois que Step Functions Local est en cours d'exécution, créez une machine d'état qui fait référence à HelloWorldFunction celle dans Étape 1 : Configurer AWS SAM laquelle vous vous êtes initialisé.

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"

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

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

Étape 6 : Démarrer une exécution de votre machine d'état locale

Une fois que vous avez créé une machine d'état, lancez une exécution. Vous devez référencer l'ARN du point de terminaison et de la machine d'état lorsque vous utilisez la aws stepfunctions commande suivante :

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

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

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

Maintenant que Step Functions s'exécute localement, vous pouvez interagir avec elle à l'aide duAWS 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:us-east-1:123456789012:execution:HelloWorld:test

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

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