У меня есть конечный автомат с функцией шага, который запускается в параллельные лямбды, и после того, как все параллельные лямбды выполнены, выполняется последняя лямбда
Пример определения
{
"Comment": "An example of the Amazon States Language using a map state to process elements of an array with a max concurrency of 2.",
"StartAt": "Map",
"States": {
"Map": {
"Type": "Map",
"ItemsPath": "$.my_list",
"Parameters": {
"list_item.$": "$$.Map.Item.Value",
"input_1.$": "$.input_1",
"input_2.$": "$.input_2"
},
"MaxConcurrency": 2,
"Next": "Final",
"Iterator": {
"StartAt": "Parallel Step",
"States": {
"Parallel Step": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-1:<>:function:parallel-lambda:$LATEST",
"Payload": {
"Input.$": "$"
}
},
"OutputPath": "$.Payload",
"End": true
}
}
}
},
"Final": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-1:<>:function:final-lambda:$LATEST",
"Payload": {
"Input.$": "$"
}
},
"End": true
}
}
}
Выход параллельной лямбды - что-то вроде
{'statusCode': 200, 'n-successes': n_successes}
. Прямо сейчас вход в мою Final
лямбду получает список этих выходов. Который я хочу. Но есть ли способ передать некоторые входные данные, которые пошли в параллельную лямбду, в конечную лямбду?
В идеале мой последний ввод лямбды должен выглядеть примерно так:
{'input_1': input_1_val,
'input_2': input_2_val,
'parallel_outputs': [{'statusCode': 200, 'n-successes': 5}, ...]
Я знаю, что ямог бы передать его в моем параллельном выводе лямбды, но это кажется неэффективным, чтобы одни и те же входные значения повторялись так много раз в списке вывода