如何将其他数据传递给 Catch 任务?"/>
当 Lambda Invoke 因错误而失败时,如何将其他数据传递给 Catch 任务?
我有这个用 nodejs 编写的 lambda 函数:
exports.handler = async (event) => {
throw new CustomError('Custom error with data!', {
propA: 'A',
propB: 'B',
});
};
class CustomError extends Error {
constructor(message, data) {
super(message);
this.name = this.constructor.name;
this.data = data; // I have declared a new field which contains some useful data for handling error in other lambda function.
}
}
我已经用这个 lambda 函数制作了一个状态机作为第一个任务,并为此任务添加了一个捕捉器函数。当我启动新的执行时,我看到 Lambda Invoke 任务的以下输出(Catch 任务的输入是相同的):
{
"Error": "CustomError",
"Cause": "{\"errorType\":\"CustomError\",\"errorMessage\":\"Custom error with data!\",\"trace\":[\"CustomError: Cannot list objects\",\" at Runtime.exports.handler (/var/task/index.js:5:11)\",\" at Runtime.handleOnceNonStreaming (/var/runtime/Runtime.js:74:25)\"]}"
}
如您所见,Catch 输入中没有
data
字段。我想将 data
的 CustomError
对象传递给 Catch 任务。这可能吗?还有其他方法可以将其他错误数据传递给 Catch 任务吗?感谢任何帮助。
状态机JSON:
{
"StartAt": "SomeJob",
"States": {
"SomeJob": {
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"Next": "HandleErrorTask"
}
],
"End": true,
"Type": "Task",
"OutputPath": "$.Payload",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "...",
"Payload.$": "$"
}
},
"HandleErrorTask": {
"End": true,
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "...",
"Payload.$": "$"
}
}
},
"TimeoutSeconds": 300
}
回答如下:
更多推荐
当 Lambda Invoke 因错误而失败时,如何将其他数据传递给 Catch 任务?
发布评论