gpt4 book ai didi

aws-lambda - AWS 步骤函数 - 嵌套映射类型

转载 作者:行者123 更新时间:2023-12-05 07:13:33 26 4
gpt4 key购买 nike

我是 AWS 步骤函数的新手,我正在尝试嵌套多个 Map 类型的 Lambda 任务。不过,我的方法遇到了意想不到的行为。 get_item_list 输出要输入到 get_item_pages 映射中的项目列表。 get_item_pages Map 遍历 get_info。然后我想将 get_info 的每个输出传递给另一个 Map 类型 get_more_info。我使用 Map 函数的原因是我可以利用扇出功能。第一个 Map 类型 get_item_pages 按预期散开。在 Lambda CloudWatch 日志中,我可以看到 10 多个日志流开始。 get_more_info 状态似乎并没有以同样的方式散开。我经常在 Lambda CloudWatch 中看到嵌套 map 状态的单个日志流。

我是否在实现过程中遗漏了一些明显的东西,或者我是否以完全错误的方式进行了处理?

{
"Comment": "A nested map example",
"StartAt": "get_item_list",
"States": {
"get_item_list": {
"Type": "Task",
"Resource": "arn:aws:lambda:...",
"Next": "get_item_pages",
"ResultPath": "$.data"
},
"get_item_pages": {
"Type": "Map",
"ItemsPath": "$.data.all_items",
"MaxConcurrency": 100,
"Iterator": {
"StartAt": "get_info",
"States": {
"get_info": {
"Type": "Task",
"Resource": "arn:aws:lambda:...",
"ResultPath": "$.data",
"Next": "get_more_info"
},
"get_more_info": {
"Type": "Map",
"ItemsPath": "$.data.all_data",
"MaxConcurrency": 100,
"Iterator": {
"StartAt": "get_detailed_info",
"States": {
"get_detailed_info": {
"Type": "Task",
"Resource": "arn:aws:lambda:...",
"End": true
}
}
},
"End": true
}
}
},
"End": true
}
}
}

最佳答案

这是一个老问题,但我想我会为其他人回答。我不能肯定地说,但您似乎正在经历这种情况,因为 "End": true (表示 map 已完成)应该处于任务级别,而不是 map 级别。将 "End": true 放在映射级别表示状态机结束。

确切的结果可能是不确定的,因为 AWS 不会确切地告诉您迭代将如何流经 map ,只是会根据您设置的并发数(即 100)来完成。即便如此,所有迭代 (最多 100 个)不能保证同时在 map 中移动。

因此,可能发生的情况是第一次迭代流经 get_more_info(嵌套)映射,然后触发“End”:true,从而结束整个状态机。

关于aws-lambda - AWS 步骤函数 - 嵌套映射类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60152112/

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