J'ai l'état suivant défini dans ma machine à états.
"loop":{
"Type": "Pass",
"Result":{
"totalCount": "$.newFieldsResponse.body.count",
"currentCount": 0,
"step": 1
},
"ResultPath": "$.iteration",
"Next":"iterateLoop"
},
Je m'attends à ce que la production de l'État soit:
"newFieldsResponse": {
"isSuccess": true,
"error": "",
"body": {
"count": 2,
"fields": [...]
}
},
"iteration": {
"totalCount": 5,
"currentCount": 0,
"step": 1
}
}
la propriété d'itération est ajoutée à l'entrée avec la propriété totaleCount à définir sur le nombre d'articles dans les champs de champs.
Cependant, la sortie de la propriété "itération" est définie comme suit:
"iteration": {
"totalCount": "$.newFieldsResponse.body.count",
"currentCount": 0,
"step": 1
}
Il ressemble à la valeur "$ .newfieldesponse.body.compte" ne se résout pas de résolution et est sortie tel quel.
Y a-t-il quelque chose que je fais mal? Quelqu'un peut-il s'il vous plaît conseil sur la façon de le faire fonctionner?
On dirait que cela peut ne pas être possible. La solution que j'ai faite est d'utiliser la propriété "Paramètres". De la documentation AWS: "Pour les paires de clés à valeur de clé où la valeur est sélectionnée à l'aide d'un chemin, le nom de la touche doit se terminer en *. $.".
Donc résolvé ce qui précède par:
"loop":{
"Type": "Pass",
"Result":{
"currentCount": 0,
"step": 1
},
"ResultPath": "$.iteration",
"Next":"iterateLoop"
},
"iterateLoop":{
"Type":"Task",
"Resource": "arn:aws:lambda:....r",
"Parameters":{
"totalCount.$": "$.newFieldsResponse.body.count",
"currentCount.$": "$.iteration.currentCount",
"step.$": "$.iteration.step"
},
"ResultPath": "$.iteration",
"Next":"continueLoop"
},
totalCount, couranteCount et étape Tous lisent la valeur de l'utilisation d'un chemin dans l'entrée d'état. La clé doit être annexée avec un "$" à la fin.
Cela fonctionne dans une combinaison de deux des solutions ici exposées:
{
"loop": {
"Type": "Pass",
"parameters": {
"totalCount.$": "$.newFieldsResponse.body.count",
"currentCount": 0,
"step": 1
},
"ResultPath": "$.iteration",
"Next": "iterateLoop"
}
}