Accès aux données d'exécution depuis l'objet Context dans Step Functions - 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.

Accès aux données d'exécution depuis l'objet Context dans Step Functions

Gestion de l'état et transformation des données

L'objet Context est une structure JSON interne disponible lors d'une exécution et contenant des informations sur votre machine à états et sur l'exécution. Le contexte fournit à vos flux de travail des informations sur leur exécution spécifique. Vos flux de travail peuvent faire référence à l'objet Context dans une JSONata expression avec$states.context.

Accès à l'objet Context

Pour accéder à l'objet Context dans JSONata

Pour accéder à l'objet Context dans JSONata les états, $states.context utilisez-le dans une JSONata expression.

{ "ExecutionID" : "{% $states.context.Execution.Id %}" }

Pour accéder à l'objet Context dans JSONPath

Pour accéder à l'objet Context dans JSONPath, vous devez d'abord l'ajouter .$ à la fin de la clé pour indiquer que la valeur est un chemin. Ajoutez ensuite la valeur avec $$. pour sélectionner un nœud dans l'objet Context.

{ "ExecutionID.$": "$$.Execution.Id" }

JSONPath les états peuvent faire référence au contexte ($$.) à partir des JSONPath champs suivants :

  • InputPath

  • OutputPath

  • ItemsPath(dans les états de la carte)

  • Variable(dans les États de Choice)

  • ResultSelector

  • Parameters

  • Opérateurs de comparaison de variables à variables

Champs d'objets contextuels

L'objet Context inclut des informations sur la machine à états, l'état, l'exécution et la tâche. Cet objet JSON inclut des nœuds pour chaque type de données, et se trouve dans le format suivant.

{ "Execution": { "Id": "String", "Input": {}, "Name": "String", "RoleArn": "String", "StartTime": "Format: ISO 8601", "RedriveCount": Number, "RedriveTime": "Format: ISO 8601" }, "State": { "EnteredTime": "Format: ISO 8601", "Name": "String", "RetryCount": Number }, "StateMachine": { "Id": "String", "Name": "String" }, "Task": { "Token": "String" } }

Lors d'une exécution, l'objet Context est renseigné avec les données pertinentes. RedriveTime L'objet de contexte n'est disponible que si vous avez redriven une exécution. Si vous avez redriven a Map Run, l'objet de RedriveTime contexte n'est disponible que pour les flux de travail enfants de type Standard. Pour un redriven Map Run avec des flux de travail enfants de type Express RedriveTime n'est pas disponible.

Le contenu d'une exécution en cours inclut des détails dans le format suivant.

{ "Execution": { "Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName", "Input": { "key": "value" }, "Name": "executionName", "RoleArn": "arn:aws:iam::123456789012:role...", "StartTime": "2019-03-26T20:14:13.192Z" }, "State": { "EnteredTime": "2019-03-26T20:14:13.192Z", "Name": "Test", "RetryCount": 3 }, "StateMachine": { "Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName", "Name": "stateMachineName" }, "Task": { "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W" } }
Note

Pour les données des objets contextuels relatives aux Map états, voirDonnées d'objets contextuels pour les états de la carte.

Données d'objets contextuels pour les états de la carte

Gestion de l'état et transformation des données

Deux éléments supplémentaires sont disponibles dans l'objet Context lors du traitement d'un Mapétat : Index etValue. Pour chaque itération d'Mapétat, Index contient le numéro d'index de l'élément du tableau en cours de traitement, tandis que Value contient l'élément du tableau en cours de traitement. Dans un Map état, l'objet Context inclut les données suivantes :

"Map": { "Item": { "Index": Number, "Value": "String" } }

Ils ne sont disponibles que dans un Map état et peuvent être spécifiés dans le ItemSelector (Carte) champ.

Note

Vous devez définir les paramètres à partir de l'objet Context dans le ItemSelector bloc de Map l'état principal, et non dans les états inclus dans la ItemProcessor section.

Étant donné qu'une machine à états utilise un JSONPath Map état, vous pouvez injecter des informations à partir de l'objet Context comme suit.

{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "ItemSelector": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }

Si vous exécutez la machine d'état précédente avec l'entrée suivante, les éléments Index et Value sont insérés dans la sortie.

[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]

Le résultat de l'exécution renvoie les valeurs de Index et Value les éléments pour chacune des trois itérations, comme suit :

[ { "ContextIndex": 0, "ContextValue": { "who": "bob" } }, { "ContextIndex": 1, "ContextValue": { "who": "meg" } }, { "ContextIndex": 2, "ContextValue": { "who": "joe" } } ]