I have a task state that outputs the following:
"batch": {
"batch": "size",
"currentTimestamp": 1596205376
},
and a map state out outputs an array:
"batch": [
{
"batch": "product-batch-0",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-1",
"currentTimestamp": 1596205376
}
]
I would like to combine them so that the input to the state that follows the map state is this:
"batch": [
{
"batch": "Size",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-22",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-8",
"currentTimestamp": 1596205376
}
]
Is this possible using the input/output processing available in aws step functions? I want to have them contained in one array so they can be processed together in an additional map state later in the state machine.
It is possible. try this.
{
"StartAt": "getArrayOfArray",
"States": {
"getArrayOfArray": {
"Type": "Pass",
"Parameters": {
"arrayOfArray.$": "States.Array($.array, States.Array($.appendant))"
},
"Next": "mergeArray"
},
"mergeArray": {
"Type": "Pass",
"Parameters": {
"mergedArray.$": "$.arrayOfArray[*][*]"
},
"End": true
}
}
}
{
"array": [
{
"batch": "product-batch-0",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-1",
"currentTimestamp": 1596205376
}
],
"appendant": {
"batch": "size",
"currentTimestamp": 1596205376
}
}
{
"mergedArray": [
{
"batch": "product-batch-0",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-1",
"currentTimestamp": 1596205376
},
{
"batch": "size",
"currentTimestamp": 1596205376
}
]
}
You should use another Lambda function to merge the input and output because the step functions output feature cannot append the result into an array or merge the input and output as an array.
[1] : https://docs.aws.amazon.com/step-functions/latest/dg/input-output-resultpath.html#input-output-resultpath-append
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With