【问题标题】:DynamoDB Trigger Lambda Function PROBLEM: Function call failedDynamoDB 触发器 Lambda 函数问题:函数调用失败
【发布时间】: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


【解决方案1】:

我今天遇到了这个问题。

  1. 我通过使用 lambda 主页顶部的 Test 按钮手动触发 lambda 来调试它。它显示了尝试运行我的 lambda 时的错误输出。
  2. 我出错的原因是 handler 参数,因为我有一个非标准的 javascript 函数名称,我忘记在我的 lambda 中配置它。

【讨论】:

    【解决方案2】:

    就我而言,我的 lambda 角色没有写入 SNS 的权限,而 lambda 代码正在写入 SNS。所以我向 lambda 角色添加了一个策略,授予它写入任何 SNS 主题的权限。

    【讨论】:

      【解决方案3】:

      这听起来像是Rookout 的一个可能用例,如果您需要在无法生成日志的情况下跟踪实时 Lambda 中的变量值并且在本地运行它是不会给你真实世界的事件触发数据。

      【讨论】:

        猜你喜欢
        • 2023-01-02
        • 2018-08-29
        • 2021-12-28
        • 2018-10-29
        • 2020-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多