Utilisation de l'état de la carte en mode Inline dans les flux de travail 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.

Utilisation de l'état de la carte en mode Inline dans les flux de travail Step Functions

Par défaut, Map les états s'exécutent en mode Inline. En mode Inline, l'état de la carte n'accepte qu'un JSON tableau en entrée. Il reçoit ce tableau lors d'une étape précédente du flux de travail. Dans ce mode, chaque itération de l'Mapétat s'exécute dans le contexte du flux de travail qui contient l'Mapétat. Step Functions ajoute l'historique d'exécution de ces itérations à l'historique d'exécution du flux de travail parent.

Dans ce mode, l'Mapétat prend en charge jusqu'à 40 itérations simultanées.

Un Map état défini sur Inline est appelé état Inline Map. Utilisez l'Mapétat en mode Inline si l'historique d'exécution de votre flux de travail ne doit pas dépasser 25 000 entrées ou si vous n'avez pas besoin de plus de 40 itérations simultanées.

Pour une introduction à l'utilisation de l'état Inline Map, consultez le didacticielRépéter les actions avec Inline Map.

Concepts clés de cette rubrique

Mode en ligne

Mode de simultanéité limité de l'État. Map Dans ce mode, chaque itération de l'Mapétat s'exécute dans le contexte du flux de travail qui contient l'Mapétat. Step Functions ajoute l'historique d'exécution de ces itérations à l'historique d'exécution du flux de travail parent. Maples états s'exécutent en mode Inline par défaut.

Ce mode n'accepte qu'un JSON tableau en entrée et prend en charge jusqu'à 40 itérations simultanées.

État de la carte en ligne

MapÉtat défini sur le mode Inline.

Flux de travail cartographique

Ensemble d'étapes que l'Mapétat exécute pour chaque itération.

Itération de l'état de la carte

Une répétition du flux de travail défini dans l'Mapétat.

Champs d'état de la carte en ligne

Pour utiliser l'état Inline Map dans vos flux de travail, spécifiez un ou plusieurs de ces champs. Vous spécifiez ces champs en plus des champs d'état courants.

Type (Obligatoire)

Définit le type d'état, tel queMap.

ItemProcessor
(Obligatoire)

Contient les JSON objets suivants qui spécifient le mode et la définition de traitement de Map l'état.

La définition contient l'ensemble des étapes à répéter pour traiter chaque élément du tableau.

  • ProcessorConfig— JSON Objet facultatif qui spécifie le mode de traitement de l'Mapétat. Cet objet contient le Mode sous-champ. La valeur par défaut de ce champ estINLINE, qui utilise l'Mapétat en mode Inline.

    Dans ce mode, l'échec d'une itération entraîne l'échec de l'Mapétat. Toutes les itérations s'arrêtent lorsque l'Mapétat échoue.

  • StartAt— Spécifie une chaîne qui indique le premier état d'un flux de travail. Cette chaîne distingue les majuscules et minuscules et doit correspondre au nom de l'un des objets d'état. Cet état s'exécute d'abord pour chaque élément de l'ensemble de données. Toute entrée d'exécution que vous fournissez à l'Mapétat passe d'abord à l'StartAtétat.

  • States— JSON Objet contenant un ensemble d'états séparés par des virgules. Dans cet objet, vous définissez leMap workflow.

    Note
    • Les États du ItemProcessor domaine ne peuvent que passer les uns aux autres. Aucun état situé en dehors du ItemProcessor champ ne peut passer à un état situé à l'intérieur de celui-ci.

    • Le ItemProcessor champ remplace le champ désormais obsolète. Iterator Bien que vous puissiez continuer à inclure Map les états qui utilisent le Iterator champ, nous vous recommandons vivement de le remplacer parItemProcessor.

      Step Functions Local ne prend actuellement pas en charge ItemProcessor ce domaine. Nous vous recommandons d'utiliser le Iterator champ avec Step Functions Local.

ItemsPath (facultatif)

Spécifie un chemin de référence à l'aide de la JsonPathsyntaxe. Ce chemin sélectionne le JSON nœud qui contient le tableau d'éléments à l'intérieur de l'entrée d'état. Pour de plus amples informations, veuillez consulter ItemsPath (Carte).

ItemSelector
(facultatif)

Remplace les valeurs des éléments du tableau d'entrée avant qu'elles ne soient transmises à chaque itération Map d'état.

Dans ce champ, vous spécifiez une valeur valide JSON contenant une collection de paires clé-valeur. Ces paires peuvent contenir l'un des éléments suivants :

  • Valeurs statiques que vous définissez dans la définition de votre machine à états.

  • Valeurs sélectionnées à partir de l'entrée d'état à l'aide d'un chemin.

  • Valeurs accessibles depuis l'objet de contexte.

Pour de plus amples informations, veuillez consulter ItemSelector (Carte).

Le ItemSelector champ remplace le champ désormais obsolète. Parameters Bien que vous puissiez continuer à inclure Map les états qui utilisent le Parameters champ, nous vous recommandons vivement de le remplacer parItemSelector.

MaxConcurrency (facultatif)

Spécifie une valeur entière qui fournit la limite supérieure du nombre d'itérations d'Mapétats pouvant être exécutées en parallèle. Par exemple, une MaxConcurrency valeur de 10 limite l'Mapétat à 10 itérations simultanées exécutées simultanément.

Note

Les itérations simultanées peuvent être limitées. Dans ce cas, certaines itérations ne commenceront pas tant que les itérations précédentes ne seront pas terminées. La probabilité que cela se produise augmente lorsque votre tableau d'entrée comporte plus de 40 éléments.

Pour obtenir une plus grande simultanéité, considérezMode distribué.

La valeur par défaut est0, ce qui n'impose aucune limite à la simultanéité. Step Functions invoque des itérations aussi simultanément que possible.

Une MaxConcurrency valeur de 1 invoque ItemProcessor une fois pour chaque élément du tableau. Les éléments du tableau sont traités dans l'ordre de leur apparition dans l'entrée. Step Functions ne démarre pas une nouvelle itération tant qu'elle n'a pas terminé l'itération précédente.

MaxConcurrencyPath (facultatif)

Si vous souhaitez fournir une valeur de simultanéité maximale de manière dynamique à partir de l'entrée d'état à l'aide d'un chemin de référence, utilisezMaxConcurrencyPath. Une fois résolu, le chemin de référence doit sélectionner un champ dont la valeur est un entier non négatif.

Note

Un Map état ne peut pas inclure à la fois MaxConcurrency etMaxConcurrencyPath.

ResultPath (facultatif)

Spécifie l'endroit de l'entrée où stocker la sortie des itérations de l'Mapétat. L'état de la carte filtre ensuite l'entrée comme spécifié par le OutputPathchamp, le cas échéant. Ensuite, il utilise l'entrée filtrée comme sortie de l'état. Pour plus d'informations, consultez Traitement des entrées et des sorties.

ResultSelector (facultatif)

Transmettez une collection de paires clé-valeur, dont les valeurs sont soit statiques, soit sélectionnées à partir du résultat. Pour de plus amples informations, veuillez consulter ResultSelector.

Astuce

Si l'état Parallel ou Map que vous utilisez dans vos machines d'état renvoie un tableau de tableaux, vous pouvez les transformer en tableau plat avec le ResultSelector champ. Pour de plus amples informations, veuillez consulter Aplatir un tableau de tableaux.

Retry (facultatif)

Tableau d'objets, appelés Retriers, qui définit une politique de nouvelle tentative. Les États utilisent une politique de nouvelle tentative lorsqu'ils rencontrent des erreurs d'exécution. Pour de plus amples informations, veuillez consulter Exemples de machines à états utilisant Retry et Catch.

Note

Si vous définissez des récupérateurs pour l'état de la carte intégrée, la politique de nouvelles tentatives s'applique à toutes les itérations d'Mapétat, et non aux seules itérations ayant échoué. Par exemple, votre Map état contient deux itérations réussies et une itération échouée. Si vous avez défini le Retry champ correspondant à l'Mapétat, la politique de nouvelle tentative s'applique aux trois itérations d'Mapétat et non uniquement à l'itération ayant échoué.

Catch (facultatif)

Tableau d'objets, nommés Receveurs, qui définissent un état de secours. Les États exécutent un catcher s'ils rencontrent des erreurs d'exécution et s'ils n'ont pas de politique de nouvelle tentative ou si leur politique de relance est épuisée. Pour plus d'informations, consultez États de secours.

Champs déconseillés

Note

Bien que vous puissiez continuer à inclure Map les états qui utilisent les champs suivants, nous vous recommandons vivement de les Iterator remplacer par ItemProcessor et Parameters parItemSelector.

Iterator

Spécifie un JSON objet qui définit un ensemble d'étapes qui traitent chaque élément du tableau.

Parameters

Spécifie une collection de paires clé-valeur, dont les valeurs peuvent contenir l'un des éléments suivants :

  • Valeurs statiques que vous définissez dans la définition de votre machine à états.

  • Valeurs sélectionnées à partir de l'entrée à l'aide d'un chemin.

Exemple d'état d'une carte intégrée

Tenez compte des données d'entrée suivantes pour un Map état exécuté en mode Inline.

{ "ship-date": "2016-03-14T01:59:00Z", "detail": { "delivery-partner": "UQS", "shipped": [ { "prod": "R31", "dest-code": 9511, "quantity": 1344 }, { "prod": "S39", "dest-code": 9511, "quantity": 40 }, { "prod": "R31", "dest-code": 9833, "quantity": 12 }, { "prod": "R40", "dest-code": 9860, "quantity": 887 }, { "prod": "R40", "dest-code": 9511, "quantity": 1220 } ] } }

Compte tenu de l'entrée précédente, l'Mapétat de l'exemple suivant invoque un AWS Lambda fonction nommée ship-val une fois pour chaque élément du tableau dans le shipped champ.

"Validate All": { "Type": "Map", "InputPath": "$.detail", "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "Validate", "States": { "Validate": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:ship-val:$LATEST" }, "End": true } } }, "End": true, "ResultPath": "$.detail.shipped", "ItemsPath": "$.shipped" }

Chaque itération de l'Mapétat envoie un élément du tableau, sélectionné avec le ItemsPathchamp, en entrée de la fonction ship-val Lambda. Les valeurs suivantes sont un exemple d'entrée que l'Mapétat envoie à un appel de la fonction Lambda :

{ "prod": "R31", "dest-code": 9511, "quantity": 1344 }

Une fois terminé, le résultat de l'Mapétat est un JSON tableau, où chaque élément est le résultat d'une itération. Dans ce cas, ce tableau contient la sortie de la fonction ship-val Lambda.

Exemple d'état de la carte en ligne avec ItemSelector

Supposons que la fonction ship-val Lambda de l'exemple précédent ait également besoin d'informations sur le transporteur de l'expédition. Ces informations s'ajoutent aux éléments du tableau pour chaque itération. Vous pouvez inclure des informations provenant de l'entrée, ainsi que des informations spécifiques à l'itération actuelle de l'Mapétat. Notez le ItemSelector champ dans l'exemple suivant :

"Validate-All": { "Type": "Map", "InputPath": "$.detail", "ItemsPath": "$.shipped", "MaxConcurrency": 0, "ResultPath": "$.detail.shipped", "ItemSelector": { "parcel.$": "$$.Map.Item.Value", "courier.$": "$.delivery-partner" }, "ItemProcessor": { "StartAt": "Validate", "States": { "Validate": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val", "End": true } } }, "End": true }

Le ItemSelector bloc remplace l'entrée des itérations par un JSON nœud. Ce nœud contient à la fois les données de l'article actuel provenant de l'objet contextuel et les informations de messagerie provenant du delivery-partner champ de saisie de Map l'état. Voici un exemple de saisie pour une seule itération. L'Mapétat transmet cette entrée à un appel de la fonction ship-val Lambda.

{ "parcel": { "prod": "R31", "dest-code": 9511, "quantity": 1344 }, "courier": "UQS" }

Dans l'exemple d'état Inline Map précédent, le ResultPath champ produit une sortie au même format que l'entrée. Cependant, il remplace le detail.shipped champ par un tableau dans lequel chaque élément est le résultat de l'appel Lambda ship-val de chaque itération.

Pour plus d'informations sur l'utilisation de l'état de la carte intégrée et de ses champs, consultez ce qui suit.

Traitement d'entrée et de sortie d'Mapétat en ligne

Pour un Map état donné, InputPathsélectionne un sous-ensemble de l'entrée de l'état.

L'entrée d'un Map état doit inclure un JSON tableau. L'Mapétat exécute la ItemProcessor section une fois pour chaque élément du tableau. Si vous spécifiez le ItemsPathchamp, l'Mapétat sélectionne l'endroit de l'entrée où se trouve le tableau à itérer. Si elle n'est pas spécifiée, la valeur de ItemsPath est $, et la section ItemProcessor s'attend à ce que le tableau soit la seule entrée. Si vous spécifiez le ItemsPath champ, sa valeur doit être un chemin de référence. L'MapÉtat applique ce chemin à l'entrée effective après avoir appliqué leInputPath. Le ItemsPath doit identifier un champ dont la valeur est un JSON tableau.

L'entrée de chaque itération, par défaut, est un élément unique du champ du tableau identifié par la ItemsPath valeur. Vous pouvez remplacer cette valeur par le ItemSelector (Carte) champ.

Une fois terminé, le résultat de l'Mapétat est un JSON tableau, où chaque élément est le résultat d'une itération.

Pour plus d'informations sur les entrées et sorties d'état d'Inline Map, consultez les rubriques suivantes :