#amazon-web-services #aws-step-functions
Вопрос:
я знаю, что в пошаговых функциях AWS мы можем использовать resultPath
для передачи вывода текущего состояния в следующее состояние вместе с его входными данными. Допустим, у меня есть 3 состояния A, B и C, когда A завершает выполнение, он передает свои входные данные и выходные данные в B в качестве входных данных, когда B завершает, есть ли способ передать выходные данные B вместе с выходными данными A вход в C в качестве входных данных? Пожалуйста, посоветуйте, спасибо!
Комментарии:
1. Если состояния ur являются лямбдами, u сможет отправить добавленный результат в следующее состояние.
Ответ №1:
если у вас есть только a resultPath
в вашей задаче, то он добавляет результат к входящему событию этой задачи, поэтому, если задача A принимает входные данные
{ TaskAInput: Stuff }
И имеет только a resultPath: TaskAOutput
, то входные данные для задачи B будут:
{ TaskAInput: Stuff TaskAOutput: TaskAResult }
Это входит в задачу B. Если задача B имеет только a resultPath: TaskBOutput
, то
{ TaskAInput: Stuff TaskAOutput: TaskAResult TaskBOutput: TaskBesult }
и так далее по цепочке.
Примечание. Если вы присоедините an outputPath
к любому из вышеперечисленных шагов, он выведет только этот путь json из конечного комбинированного ввода и результатов. Если вы вообще используете входной путь, он сократит ввод только до этого в будущем.
Ответ №2:
Вам просто нужно сделать следующее:
Функция:
def lambda_handler(event, context): ... result = ... return { "Ainput":event, "Aoutput": result }
B функция:
def lambda_handler(event, context): ... result = ... return { "Ainput": event['Ainput'], "Aoutput": event['Aoutput'], "Boutput": result }
Функция C:
def lambda_handler(event, context): Ainput = event['Ainput'] Aoutput = event['Aoutput'] Boutput = event['Boutput']
Теперь вы можете использовать эти результаты в своей функции C по своему усмотрению.
Комментарии:
1. Это полезно в определенных ситуациях, но является ненужными накладными расходами в других случаях, когда a
resultPath
будет делать то же самое. Однако, если вам нужны новые ключи верхнего уровня в json, и ваша лямбда возвращает объект json (т. Е. диктант python), то это определенно правильный путь, так как он дает вам полный контроль над вводом/выводом из любого данного лямбда. Однако вам может потребоваться использовать комбинациюoutputPath
иresultPath
, чтобы предотвратить попадание дубликатов ключей в результаты ввода. (установите для них одинаковое значение)