【问题标题】:What is done with the output of an AWS Lambda function that's triggered by a DynamoDB stream?由 DynamoDB 流触发的 AWS Lambda 函数的输出如何处理?
【发布时间】:2018-10-05 02:10:32
【问题描述】:

我正在编写一个处理来自 DynamoDB 流的事件的 Lambda 函数。

DynamoDB Streams and AWS Lambda Triggers 上的这个页面说:

AWS Lambda 会在检测到新的流记录时轮询流并同步调用您的 Lambda 函数。

为什么是同步而不是异步?

具体来说,处理 DynamoDB 流事件的 Lambda 函数的输出会发生什么情况?它只是被丢弃了,还是有什么东西真正消耗了这个值?

【问题讨论】:

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


    【解决方案1】:

    为什么是同步而不是异步?

    因为它需要等到新的流记录完成写入 DynamoDB 后再调用 Lambda。这就是为什么它是同步的。

    特别是 Lambda 函数的输出会发生什么 处理 DynamoDB 流事件?它只是被丢弃了,还是被丢弃了 有什么东西真正消耗了这个值?

    取决于您的 Lambda 做什么,输出可能存储在 S3 中或作为输入传递给另一个 lamdba 或由其他服务使用。

    【讨论】:

    • 是什么决定了输出的去向?以防万一,“输出”是指我的 Lambda 函数中处理程序的返回值。
    • 您是说 DynamoDB 表的流事件是在 表写入之前创建的吗?我认为流事件是在写入 DynamoDB 之后创建的。
    • @dsharp 我想你会发现这是因为它们需要按顺序处理。使用异步 Lambda 调用,无法保证排序。 Synchronous 将负担交给调用者(巧合的是,这里是 Lambda 服务本身的一个组件)来检查错误并重试,同时保留已建立的事件顺序。输出仍然被丢弃,但您可能会说它被丢弃到不同的位桶中。
    • @Michael-sqlbot 好的,由于(每个分片)排序约束,它们是同步的,但返回值基本上被忽略了。听起来对吗?
    • @LaurenceGonsalves 是的,确实如此。
    猜你喜欢
    • 2016-10-19
    • 2020-02-27
    • 2016-12-07
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2019-12-02
    相关资源
    最近更新 更多