Мне интересно, как получить доступ к причине моего пользовательского исключения, вызванного внутри моей лямбда-функции. Мне нужно получить к нему доступ в конце моего рабочего процесса Step Functions, как показано ниже.
Диаграмма ниже является примером неудачного выполнения. Ошибка (объект error-info
с его собственными Error
и Cause
разделами) находится в выходных данных ParseTextractOutput
, но мне интересно, как получить к нему доступ в OutputNotFound
, как показано ниже.
Диаграмма пошаговых функций
выход
Выход ParseTextractOutput
равен
{
"event"...
"error-info": {
"Error": "OutputNotFoundException",
"Cause": "{\"errorMessage\": \"Contents of Textracted file: {...}}"
}
}
}
Я бы хотел как-то получить доступ к этим данным в следующих полях (определения шага):
...
"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 Code
Вот соответствующий код для функции ParseTextractOutput
.
class OutputNotFoundException(Exception):
pass
...
try:
blocks = data['Blocks']
except KeyError as e:
raise OutputNotFoundException('Contents of Textracted file: {}'.format(data))