【问题标题】:DynamoDB not triggering lambdaDynamoDB 未触发 lambda
【发布时间】:2025-11-23 12:55:01
【问题描述】:

我正在尝试使用 dynamo db 和 lambda,但遇到以下流程的问题:

Lambda A 由 put to S3 事件触发。它获取对象(一个音频文件),计算其持续时间并在 dynamoDB 中为每 30 秒的片段写入一条记录。

Lambda B 由 dynamoDB 触发,从 S3 下载文件并对 dynamo 行中定义的 30 秒记录进行操作。

我的麻烦是,当我运行这个流程时,函数 A 通过函数 B 写入发电机所需的所有行

  • 似乎没有为发电机中的每一行触发
  • 5 分钟后超时。

配置

  • 函数 B 设置了最高内存和 5 分钟到期
  • 触发器设置为批量大小为 1,起始位置最新

我已经确认的事情

  • 当函数 B 被触发时,从 S3 下载的速度很快。这似乎不是障碍
  • 当我使用测试事件触发函数 B 时,它会完美执行。
  • 当我查看 cloudwatch 指标时,函数 B 的调用错误率接近 100%。我不知道这是否意味着他的函数被调用并出现错误或根本无法调用。

有没有人遇到过类似的问题?知道接下来要检查什么吗? 谢谢

【问题讨论】:

  • 因此,与此同时,我通过向 Sns 发布消息并以这种方式触发 lambda 来解决我的问题。完美地工作。如果有人有想法,我想知道为什么发电机触发器没有做我想做的事情。
  • 您正在计时的事实意味着您的函数正在被调用,但被卡在某个地方。问题似乎不是发电机触发器,而是您的功能本身。尝试实现一些详细的日志记录以准确找到您的函数挂起的位置。您可以在问题中包含您的来源吗?会更容易提供帮助
  • 我遇到了同样的情况,发电机有时会触发,但这是不可预测的。即使我尝试使用 AWS Dynamo Lambda 示例,也没有任何变化,仍然不缺乏。

标签: amazon-web-services amazon-dynamodb aws-lambda


【解决方案1】:

我遇到了同样的问题,解决方案是从 Lambda 中创建一个 VERSION,而不是使用 $LATEST 版本,而是使用“固定”版本。

不可能使用最新的不断变化的版本来构建触发器。

这样做的地方: Lambda / Functions / YourLambdaName / Qualifiers Dropdown on the page / Switch versions/aliases / Version Tab -> 检查您是否有版本

如果不是 -> 操作/发布新版本

【讨论】:

  • 我有许多 dynamodb 流会触发 LATEST 的 lambda,我还没有遇到这个问题。只有当 dynamodb 更新导致没有数据更改时才会触发 lambda。
  • 我遇到了同样的问题,令人惊讶的是,这有效。但是,原因(不可能使用最新的不断变化的版本)似乎与 SQS 等其他类型的触发器不一致。它们与“$LATEST”版本配合得很好。
  • 我可以确认这确实适用于 DynamoDB。但是,我的用例有点不同,因为我每次都没有从 DynamoDB 触发器接收 newImages,直到我必须在函数的命名版本上指定一个触发器。无论我在数据库上插入多少次,我都只从数据中得到 oldImages。
  • 嗨,你能看看这里吗? *.com/questions/70020731/…
【解决方案2】:

检查DynamoDB“Stream”是否在表上启用。

结帐this

5 分钟超时是 lambda 的默认设置,你可以在论坛中找到这个。

【讨论】:

  • 嗨。流启用,功能偶尔触发
最近更新 更多