Как отключить (или перенаправить) ведение журнала в функции шага AWS, которая вызывает параллельные лямбда-функции - PullRequest
1 голос
/ 01 ноября 2019

Я выполняю пошаговую функцию AWS с параллельными ветвями выполнения.

Каждая ветвь завершается успешно индивидуально, однако общая функция завершается ошибкой со следующей ошибкой:

States.DataLimitExceeded -Состояние / задача вернули результат с размером, превышающим максимально допустимый предел обслуживания.

Затем я нашел в AWS статью, в которой описывается эта проблема и предлагается обходной путь:

https://docs.aws.amazon.com/step-functions/latest/dg/connect-lambda.html

Эта статья гласит:

API вызова Lambda включает журналы в ответ по умолчанию. Многократные лямбда-вызовы в рабочем процессе могут вызывать ошибки States.DataLimitExceeded. Чтобы избежать этого, включайте "LogType" = "None" в качестве параметра при вызове ваших лямбда-функций.

Мой вопрос: где точно мне поставить? Я попытался поместить его в разные места в определении конечного автомата, однако я получаю следующую ошибку:

Поле 'LogType' не поддерживается пошаговыми функциями

Эта ошибка, кажется, противоречит статье поддержки, поэтому, возможно, я делаю это неправильно!

Любой совет приветствуется, заранее спасибо!

Приветствия

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Я столкнулся с точно такой же проблемой, что и вы недавно. Вы не сказали, что ваши лямбды делают или возвращают, однако я обнаружил, что AWS относится к ограничениям, которые имеют задачи в рамках выполнения https://docs.aws.amazon.com/step-functions/latest/dg/limits.html#service-limits-task-executions.

Что я обнаружил, так это то, что моя конкретная лямбда имела очень длинный ответ с 10 стысячи персонажей. Исправив это так, чтобы ответ от лямбды был более разумным, обошел ошибку в функции шага.

0 голосов
/ 15 ноября 2019

У меня была проблема неделю назад. Я решил, как показано ниже:

Вы можете определить, какая часть результата передается на следующий шаг.

Для этого вы должны использовать

"OutputPath": "$ .part2",

В вашем вводе json у вас есть

"part1":{"часть1": {"процедура": "Delete_X"
}, "часть2": {"процедура": "Load_X"}},

"часть2": {"часть1": {"процедура ":" Удалить_Y "
}," часть2 ": {" процедура ":" Load_Y "}}

После обработки части 1 необходимо убедиться, что часть 1 не отправлена ​​в выходной файл и путь к результатусвязано с этим. Просто часть 2, которая необходима для следующих шагов, отправляется для следующих шагов. С этим: «OutputPath»: «$ .part2»,

, дайте мне знать, если это поможет

...