Мне интересно, как получить доступ к причине моего пользовательского исключения, возникшего внутри моей лямбда-функции. Мне нужно получить к нему доступ в конце моего рабочего процесса Step Functions, как показано ниже.
На приведенной ниже диаграмме показан пример неудачного выполнения. Ошибка (объект error-info
со своими собственными разделами Error
и Cause
) обнаружена в выводе ParseTextractOutput
, но мне интересно, как получить к ней доступ в OutputNotFound
, как показано ниже.
Диаграмма ступенчатых функций
Выход
Выход ParseTextractOutput
{
"event"...
"error-info": {
"Error": "OutputNotFoundException",
"Cause": "{\"errorMessage\": \"Contents of Textracted file: {...}}"
}
}
}
Я хотел бы как-то получить доступ к этим данным в этих полях (определения Step Functions):
...
"States": {
"OutputNotFound": {
"Type": "Fail",
"Error": "<useful stuff here, like $.error-info.Error or something>",
"Cause": "<useful stuff here, like $.error-info.Cause or something>"
},
...
"ParseTextractOutput": {
"Type": "Task",
"Resource": "functionARN",
"Catch": [
{
"ErrorEquals": ["OutputNotFoundException"],
"ResultPath": "$.error-info",
"Next": "OutputNotFound"
}
],
"End": true
}
Код Python
Вот соответствующий код для функции ParseTextractOutput
.
class OutputNotFoundException(Exception):
pass
...
try:
blocks = data['Blocks']
except KeyError as e:
raise OutputNotFoundException('Contents of Textracted file: {}'.format(data))
Type
иComments
. Поскольку вам нужноInputPath
для доступа к переменным из предыдущего состояния. Вы можете найти обходной путь, создав состояние Choice после ParseTextractOutput на основе результата, который вы можете либо перейти в состояние Fail, либо в состояние Succeed. - person frosty   schedule 21.08.2020