Démarrer une nouvelle machine à AWS Step Functions états à partir d'une exécution en cours - 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.

Démarrer une nouvelle machine à AWS Step Functions états à partir d'une exécution en cours

Step Functions intègre sa propre intégration API en tant que service. Apprenez à utiliser Step Functions pour démarrer une nouvelle exécution d'une machine à états directement à partir de l'état de la tâche d'une exécution en cours. Utilisez des exécutions de workflows imbriqués pour réduire la complexité de vos principaux workflows et réutiliser les processus courants lors de la création de nouveaux workflows.

En quoi l'intégration Optimized Step Functions est différente de l' AWS SDKintégration Step Functions

Notez qu'il n'y a aucune optimisation pour les modèles d'Attendre un rappel avec le jeton de tâcheintégration Réponse à la requête ou.

Pour plus d’informations, consultez les ressources suivantes :

Step Functions APIs et syntaxe prises en charge :

L'exemple suivant inclut un état Task qui démarre l'exécution d'une autre machine d'état et attend qu'elle se termine.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.sync:2", "Parameters":{ "Input":{ "Comment": "Hello world!" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

L'exemple suivant inclut un état Task qui démarre l'exécution d'une autre machine d'état.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "Input":{ "Comment": "Hello world!" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

L'exemple suivant inclut un état Task qui implémente le modèle d'intégration de service de rappel.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken", "Parameters":{ "Input":{ "Comment": "Hello world!", "token.$": "$$.Task.Token" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

Pour associer une exécution de workflow imbriqué à l'exécution parent qui l'a démarrée, transmettez un paramètre spécialement nommé qui inclut l'ID d'exécution extrait de l'objet de contexte. Lorsque vous démarrez une exécution imbriquée, utilisez un paramètre nommé AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID. Transmettez l'ID d'exécution en ajoutant .$ au nom du paramètre et en référençant l'ID dans l'objet de contexte avec $$.Execution.Id. Pour de plus amples informations, veuillez consulter Accès à l'objet de contexte.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.sync", "Parameters":{ "Input":{ "Comment": "Hello world!", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

Les machines d'état imbriquées renvoient les éléments suivants :

Ressource Sortie
startExecution.sync Chaîne
startExecution.sync : 2 JSON

Ces deux éléments attendent que la machine d'état imbriquée se termine, mais renvoient des formats Output différents. Par exemple, si vous créez une fonction Lambda qui renvoie l'objet{ "MyKey": "MyValue" }, vous obtiendrez les réponses suivantes :

Pour startExecution .sync :

{ <other fields> "Output": "{ \"MyKey\": \"MyValue\" }" }

Pour startExecution .sync:2 :

{ <other fields> "Output": { "MyKey": "MyValue" } }

Configuration des IAM autorisations pour les machines à états imbriqués

Une machine d'état parent détermine si une machine d'état enfant a terminé son exécution à l'aide d'interrogations et d'événements. Le sondage nécessite une autorisation, states:DescribeExecution tandis que les événements envoyés EventBridge à Step Functions nécessitent des autorisations pour events:PutTargetsevents:PutRule, etevents:DescribeRule. Si ces autorisations ne sont pas associées à votre IAM rôle, il se peut qu'un délai s'écoule avant qu'une machine à état parent ne soit informée de la fin de l'exécution de la machine à état enfant.

Pour une machine à états nécessitant l'exécution d'un seul flux de travail imbriqué, utilisez une IAM politique qui limite les autorisations accordées à cette machine à états. StartExecution

Pour plus d'informations, consultez IAMles autorisations pour Step Functions.