gpt4 book ai didi

node.js - Step Functions 错误处理函数参数

转载 作者:行者123 更新时间:2023-12-03 07:35:47 25 4
gpt4 key购买 nike

我正在参与这个项目,我们在其中创建一个 AWS Lambda 无服务器架构,并且这些异步函数作为 Step Functions 运行。我被告知对错误处理程序部分进行编码。基本上我们有一个云信息模板,在那里你可以清楚地看到错误处理程序基本上负责记录这些错误。所以我的问题来了,其他已经开发了其他部分的开发人员如果他们的异步 lambda 函数出现任何问题,就会抛出错误,而在 cloudformation 模板中我们得到的定义为

{
"Variable": "$.status",
"StringEquals": "FAILED",
"Next": "Handle Error"
}

对于这些功能。现在在我的 ErrorHandler Lambda 函数中,我必须获取这些错误并检查它们的类型和代码等。我不明白的是这些错误是如何传递给我的 ErrorHandler 的?另外,我如何知道哪个函数引发了该错误,以了解哪个步骤失败了?我搜索过 github、aws doc,但他们根本没有谈论代码。谢谢。

最佳答案

从你的问题来看,你似乎有一种“一个错误处理程序来统治所有”类型的错误处理。我认为你无法通过这种结构实现你所需要的。

Also how can I know which function has thrown that error to understand which step failed?

正是如此。使用单个错误处理程序就不那么简单了。

您可以做的是为每个可能失败的任务(即您关心失败的地方)配置Catch。因此,您将知道哪个任务隐式失败。

So here comes my problem, other developers who already developed other parts just throw Error if anything goes wrong in their async lambda functions

这是另一个问题。如果任务只是不加区别地抛出 Error,您就必须构建解决方法来弥补这一点。

更好的选择是针对特定故障实现特定错误并抛出它们,而不是抛出错误。像这样的东西:

function MySpecificError(message) {
this.name = 'MySpecificError';
this.message = message;
}
MySpecificError.prototype = new Error();

然后,可以返回此错误:

callback(new MySpecificError("Something specific happened."));

现在,在状态机中,您将能够区分故障原因并采取相应的行动:

               "Catch":[
{
"ErrorEquals":[
"MySpecificError"
],
"Next": "HandleSpecificError"
}
]

关于node.js - Step Functions 错误处理函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59006221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com