【发布时间】:2019-04-26 08:08:14
【问题描述】:
我在我的 dynamoDB 表上启用了流。当项目被修改时,会触发一个 lambda 函数。我想我在 lambda 触发器端、权限和 dynamodb 端都正确设置了所有内容。我还用测试数据运行了我的 lambda 函数,它成功了。但是,当表中的项目被修改时,触发器并没有启动我的 lambda 函数。相反,我收到以下错误:
批量大小:100 最后处理结果:问题:函数调用失败
知道调试此问题的最佳方法是什么吗?我继续查看 CloudWatch 日志,但没有与触发器/流关联的日志。
谢谢。
编辑:记录 lambda 函数(不是它的 dynamodb 触发器)。触发器没有生成任何日志语句。
START RequestId:3a08eedc-f0de-11e8-9008-033b48d2cb67 版本:$LATEST 18:16:28 结束请求 ID:3a08eedc-f0de-11e8-9008-033b48d2cb67 18:16:28 报告请求 ID:3a08eedc-f0de-11e8-9008-033b48d2cb67 持续时间:81.85 毫秒计费持续时间:100 毫秒内存大小:128 MB 使用的最大内存:30 MB
【问题讨论】:
-
Q1:你在哪里看到“Batch size: 100 Last processing result: PROBLEM: Function call failed”? Q2:什么是“没有与触发器/流关联的日志”。意思是? lambda 的日志在哪里(即使与触发器/流无关)?如果有,你能把它们贴出来吗? Q3:这个 lambda 是由不同的事件源调用的吗? Q4:为那个 lambda 分配了多少 RAM?
-
Q1:我在 lambda 控制台中单击 dynamodb 触发器时看到了这个消息。 Q2:实际上我不认为我用触发器设置日志。如何为触发器设置日志?谢谢。
-
@ItayMaman,我用日志语句更新了帖子。内存为 128 MB。
-
能分享一下lambda的代码吗?
-
我认为问题与 while 循环和 batchgetitems 和扫描有关。我考虑过像你说的那样进行递归或使用异步/等待。但是对于前者我不知道递归堆栈是否会引发其他问题。而对于后者,感觉真的很不直观。另一个问题是 node.js 中的 aws.documentClient 使用回调而不是承诺。因此,为了简单起见,我将切换到 Java。 Java 和 Python 没有 javascript/node.js 中的异步问题。
标签: amazon-web-services aws-lambda amazon-dynamodb