【问题标题】:How to handle DynamoDB Global streams如何处理 DynamoDB 全局流
【发布时间】:2017-12-08 12:31:15
【问题描述】:

希望创建一个 DynamoDB 全局表来存储客户信息。我的问题是我目前的模式是监听这个表上的变化并使用 Lambda 触发器发送电子邮件更新。

即您的个人资料信息已更改。如果这不是你..

我现在是否需要在每个区域都有该 Lambda,数据复制是否意味着每个区域都会触发它?

【问题讨论】:

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


    【解决方案1】:

    我认为您可能对流有误解。

    全局表需要在表上启用流以在区域之间复制。您可以检查要求及其工作原理。

    http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables_HowItWorks.html

    如果你有触发器,你只能在一个地区拥有。无论哪个区域的 lambda 与触发器关联,都会收到更新通知。

    您获得的全局表的好处是,如果任何区域更新数据,您配置的区域中的 lambda 将被触发。只会将一个触发器发送到 lambda。

    启用流是 DynamoDB 全局表的要求之一。

    如果您在多个区域创建触发器,您需要实现具有幂等性的 Lambda,即,如果相同的数据被传递任意次数,它将只执行一次操作。

    希望对你有帮助。

    【讨论】:

    • 能否请您澄清“如果任何区域更新数据,您配置的区域中的 lambda 将被触发”,这是否意味着如果区域 A 中的表更新数据,则区域 B 中的触发器获胜没收到?
    • 它将收到它。 Lambda 与其区域相关联。
    • 这意味着您必须确保触发器 AKA lambda 执行幂等操作。在 Region A 发生写入,会触发 Lambda A,很好,但是当 Region B 获得复制时,Lambda B 应该有一些聪明地忽略该操作。您可以在文档中使用 write_region 来锁定哪个区域可以对触发器起作用。
    • 幂等的,如果你两次收到相同的事件,那么你应该保持处理后的数据相同。幂等 - 表示集合中的一个元素,当其自身相乘或以其他方式运算时,其值不变。
    • 感谢@Kannaiyan。我正在为所有区域部署一个类似的堆栈,因此更改是将基础架构作为表的代码从基础架构中拆分为 lambda 的代码,该 lambda 仅为我部署到主区域。
    猜你喜欢
    • 2019-08-17
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多