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 :
Rubriques
- Étape 1 : Configurer AWS SAM
- Étape 2 : Test de la version locale de l'interface de ligne de commande AWS SAM
- Étape 3 : Démarrage de la version locale de l'interface de ligne de commande AWS SAM
- Étape 4 : Démarrez 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
- Étape 6 : Démarrer une exécution de votre machine d'état locale
É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.
-
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.
-
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-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: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": "{}"
}