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.
Step Functions intègre sa propre API en tant que service d'intégration. 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.
Principales fonctionnalités de l'intégration d'Optimized Step Functions
Le modèle Exécuter une tâche (.sync) d'intégration est disponible.
Notez qu'il n'y a aucune optimisation pour les modèles d'Attendre un rappel avec un jeton de tâcheintégration Réponse à la requête ou.
Pour plus d’informations, consultez les ressources suivantes :
Step Functions optimisées APIs
-
-
Paramètres pris en charge
Exemples de flux de travail
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 flux de travail imbriquée à 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 Context. 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 l'ajoutant .$
au nom du paramètre et en faisant référence à l'ID dans l'objet Context avec. $$.Execution.Id
Pour de plus amples informations, veuillez consulter Accès à l'objet Context.
{
"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 autorisations IAM 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:PutTargets
events:PutRule
, etevents:DescribeRule
. Si ces autorisations sont absentes de votre rôle IAM, un délai peut s'écouler avant qu'une machine d'état parent ne soit informée de la fin de l'exécution de la machine d'état enfant.
Pour une machine à états nécessitant l'exécution d'un seul flux de travail imbriqué, utilisez une politique IAM qui limite les autorisations à cette machine à états. StartExecution
Politiques IAM pour appeler des flux de travail Step Functions imbriqués
Pour une machine à états nécessitant l'exécution d'un seul flux de travail imbriqué, utilisez une politique IAM qui limite les autorisations à cette machine à états. StartExecution
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"states:StartExecution"
],
"Resource": [
"arn:aws:states:[[region]]
:[[accountId]]
:stateMachine:[[stateMachineName]]
"
]
}
]
}
Pour plus d’informations, consultez les ressources suivantes :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"states:StartExecution"
],
"Resource": [
"arn:aws:states:[[region]]
:[[accountId]]
:stateMachine:[[stateMachineName]]"
]
},
{
"Effect": "Allow",
"Action": [
"states:DescribeExecution",
"states:StopExecution"
],
"Resource": [
"arn:aws:states:[[region]]
:[[accountId]]
:execution:[[stateMachineName]]
:*"
]
},
{
"Effect": "Allow",
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:[[region]]
:[[accountId]]
:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule"
]
}
]
}
types d'ARN requis
Dans la politique relative à Synchrone, notez que cela states:StartExecution
nécessite un ARN de machine à états alors que states:DescribeExecution
cela states:StopExecution
nécessite un ARN d'exécution.
Si vous combinez par erreur les trois actions, le JSON sera valide mais la politique IAM sera incorrecte. Une politique incorrecte peut entraîner le blocage des flux de travail et/ou des problèmes d'accès lors de l'exécution du flux de travail.
Pour de plus amples informations sur les exécutions de workflows imbriqués, veuillez consulter Lancer des exécutions de flux de travail à partir d'un état de tâche dans Step Functions.