amazon-web-services - 将数据传递给 step 函数 catch
问题描述
我在 AWS 上使用步进函数。考虑由 lambda 组成的状态机:
"StartAt": "Metadata",
"States": {
"Metadata": {
"Type": "Task",
"Resource": "${metadataArn}",
"Next": "StoreMetadata",
"Retry" : [
{
"ErrorEquals": [ "States.All" ],
"IntervalSeconds": 2,
"MaxAttempts": 3
}
],
"Catch": [
{
"ErrorEquals": [ "States.All" ],
"Next": "ErrorHandler"
}
]
} ...
...
如何将特定数据传递给“ErrorHandler”。例如,失败的步骤,可能是一条数据。我正在使用 nodejs,但可以推断到任何运行时。
例如,在节点中,我们可能有一个 lambda,其中:
module.exports.handler = async input => {
const ids = JSON.parse(input).ids
// try to read in data for ids.
// read fails / throws exception
}
如何让错误处理程序获取 id 数组,以便将它们标记为失败?如果这个“ErrorHandler”是多个步骤的问题,我怎么能知道哪些步骤失败了?
解决方案
我找到了答案,您可以使用ResultPath
将原始输入与错误一起传递。我想我会将步骤作为属性包含在所有输入中,以便我可以知道哪个步骤失败了。有关说明,请参阅文档。基本上要实现这一点,您只需ResultPath
像这样添加属性:
"Catch": [
{
"ErrorEquals": [ "States.All" ],
"Next": "ErrorHandler"
"ResultPath": "$.error"
}
]
推荐阅读
- mongodb - 如何解决 MongooseServerSelectionError?
- javascript - 谷歌查看器经常打开空白页
- algorithm - 如何从给定矩阵的一组矩阵中找到最小汉明距离矩阵?
- ios - 在 UIScrollView 中禁用 UIViewController 的安全区域插图。(类似 TikTok 的垂直馈送)
- powershell - 进程使用的内存量,如何获得与任务管理器相同的读数?
- python - 如何在数据框列中以连续方式查找数字总和?
- button - 我需要帮助更改按钮的大小
- javascript - 如何使用 PHP 安全地为 JavaScript 准备字符串?
- r - 火山图错误............“FUN 中的错误(X [[i]],......):找不到对象'Qval'”
- php - 搜索数据库后在电子表格中生成边框时出现致命错误