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.
Table des matières
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.Map
les é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 que
Map
. 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 leMode
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 duItemProcessor
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 à inclureMap
les états qui utilisent leIterator
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 leIterator
champ avec Step Functions Local.
-
-
ItemsPath
(facultatif)-
Spécifie un chemin de référence à l'aide de la JsonPath
syntaxe. 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 à inclureMap
les états qui utilisent leParameters
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, uneMaxConcurrency
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 est
0
, ce qui n'impose aucune limite à la simultanéité. Step Functions invoque des itérations aussi simultanément que possible.Une
MaxConcurrency
valeur de1
invoqueItemProcessor
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, utilisez
MaxConcurrencyPath
. 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 foisMaxConcurrency
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, votreMap
état contient deux itérations réussies et une itération échouée. Si vous avez défini leRetry
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 :