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.
ItemsPath (Carte, JSONPath uniquement)
Gestion de l'état et transformation des données
Cette page fait référence à JSONPath. Step Functions a récemment ajouté des variables et JSONata permet de gérer l'état et de transformer les données.
Découvrez comment transmettre des données avec des variables et transformer des données avec JSONata.
Dans les états JSONPath basés, utilisez le ItemsPath champ pour sélectionner un tableau ou un objet dans une entrée JSON fournie à un Map état. Par défaut, l'Mapétat est défini ItemsPath sur$, ce qui sélectionne l'intégralité de l'entrée.
-
Si l'entrée de l'
Mapétat est un tableau JSON, il exécute une itération pour chaque élément du tableau, en transmettant cet élément à l'itération en tant qu'entrée -
Si l'entrée de l'
Mapétat est un objet JSON, il exécute une itération pour chaque paire clé-valeur de l'objet, en transmettant la paire à l'itération en entrée
Note
Vous ne pouvez l'utiliser ItemsPath dans l'état de carte distribuée que si vous utilisez une entrée JSON transmise depuis un état précédent dans le flux de travail.
La valeur de ItemsPath doit être un chemin de référence, et ce chemin doit être évalué comme un tableau ou un objet JSON. Par exemple, imaginons l’entrée d’un état Map qui inclut deux tableaux, comme dans l'exemple suivant.
{
"ThingsPiratesSay": [
{
"say": "Avast!"
},
{
"say": "Yar!"
},
{
"say": "Walk the Plank!"
}
],
"ThingsGiantsSay": [
{
"say": "Fee!"
},
{
"say": "Fi!"
},
{
"say": "Fo!"
},
{
"say": "Fum!"
}
]
}Dans ce cas, vous pouvez spécifier le tableau à utiliser pour les itérations Map d'états en le sélectionnant avecItemsPath. La définition de machine à états suivante spécifie le ThingsPiratesSay tableau dans l'entrée à l'ItemsPathaide de .Il exécute ensuite une itération de l'état de SayWord passe pour chaque élément du ThingsPiratesSay tableau.
{
"StartAt": "PiratesSay",
"States": {
"PiratesSay": {
"Type": "Map",
"ItemsPath": "$.ThingsPiratesSay",
"ItemProcessor": {
"StartAt": "SayWord",
"States": {
"SayWord": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
} Pour les objets JSON imbriqués, vous pouvez ItemsPath les utiliser pour sélectionner un objet spécifique dans l'entrée. Tenez compte de l'entrée suivante avec des données de configuration imbriquées :
{
"environment": "production",
"servers": {
"web": {
"server1": {"port": 80, "status": "active"},
"server2": {"port": 8080, "status": "inactive"}
},
"database": {
"primary": {"host": "db1.example.com", "port": 5432},
"replica": {"host": "db2.example.com", "port": 5432}
}
}
}Pour effectuer une itération sur l'objet du serveur Web, vous devez définir ce qui suit ItemsPath : $.servers.web
{
"StartAt": "ProcessWebServers",
"States": {
"ProcessWebServers": {
"Type": "Map",
"ItemsPath": "$.servers.web",
"ItemProcessor": {
"StartAt": "CheckServer",
"States": {
"CheckServer": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
}Lors du traitement de l'entrée, l'Mapétat s'applique ItemsPath ensuite InputPath. Il agit sur l'entrée effective de l'état après avoir InputPath filtré l'entrée.
Pour plus d'informations sur les états Map, consultez les sections suivantes.