ItemsPath (Map, JSONPath only)
Managing state and transforming data
This page refers to JSONPath. Step Functions recently added variables and JSONata to manage state and transform data.
Learn about Passing data with variables and Transforming data with JSONata.
In JSONPath-based states, use the ItemsPath field to select an array within a JSON input provided to a Map state. The
Map state repeats a set of steps for each item in the array. By
default, the Map state sets ItemsPath to $,
which
selects the entire input. If the input to the Map state
is a JSON
array,
it
runs
an iteration for each item in the array, passing that item to the iteration as input.
Note
You can use ItemsPath in the Distributed Map state
only
if you use a JSON input passed from a previous state in the
workflow.
You
can use the
ItemsPath field
to
specify a location in the input
that
points to JSON array
used
for iterations. The value of ItemsPath must be a Reference Path, and
that
path must point to JSON array. For instance, consider input to a
Map state that includes two arrays, like the following example.
{
"ThingsPiratesSay": [
{
"say": "Avast!"
},
{
"say": "Yar!"
},
{
"say": "Walk the Plank!"
}
],
"ThingsGiantsSay": [
{
"say": "Fee!"
},
{
"say": "Fi!"
},
{
"say": "Fo!"
},
{
"say": "Fum!"
}
]
}In this case, you could specify which array to use for Map state
iterations by selecting
it
with ItemsPath. The following state machine definition specifies the
ThingsPiratesSay array in the input using
ItemsPath.It
then
runs
an iteration of the SayWord pass state for each item in the
ThingsPiratesSay array.
{
"StartAt": "PiratesSay",
"States": {
"PiratesSay": {
"Type": "Map",
"ItemsPath": "$.ThingsPiratesSay",
"ItemProcessor": {
"StartAt": "SayWord",
"States": {
"SayWord": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
} When processing input,
the
Map state applies
ItemsPath
after InputPath. It operates
on the effective input to the
state after
InputPath
filters
the input.
For more information on Map states, see the following: