DynamoDB Streams 和 Amazon Lambda 触发器
主题
Amazon DynamoDB 与 Amazon Lambda 集成,使您能够创建触发器,自动响应 DynamoDB Streams 中的事件的代码片段。利用触发器,您可以创建应对 DynamoDB 表中的数据修改的应用程序。
如果您在表中启用 DynamoDB Streams,则可以将流 Amazon Resource Name (ARN) 与您编写的 Amazon Lambda 函数关联起来。然后,对该 DynamoDB 表执行的所有变更操作都可以作为流中的项目捕获。例如,您可以设置触发器。这样,在修改了表中的某个项目时,该表的流中会立即出现一条新记录。
Amazon Lambda 服务每秒轮询四次流来查找新记录。在有新的流记录可用时,将同步调用您的 Lambda 函数。同一个 DynamoDB 流上最多只能有两个 Lambda 函数订阅。
Lambda 函数可以发送通知、启动工作流或执行您指定的任意操作。您可以编写一个仅将每个流记录复制到持久性存储(如 Amazon S3 文件网关 (Amazon S3))中的 Lambda 函数,从而为您表中的写入活动创建永久审计跟踪。或者,假设您有一个写入到 GameScores
表的移动游戏应用程序。每当更新 TopScore
表的 GameScores
属性时,一个相应的流记录将被写入该表的流。然后,此事件会触发一个 Lambda 函数,该函数会在社交媒体网络上发布一条祝贺消息。此函数也可以编写为忽略以下任何流记录:不是对 GameScores
的更新,或者未修改 TopScore
属性。
如果您的函数返回错误,则 Lambda 将重试批处理,直到它成功处理或数据过期。还可以将 Lambda 配置为以较小批处理进行重试、限制重试次数、在记录变得过旧时丢弃以及其它选项。
作为性能最佳实践,Lambda 函数需要短时间运行。为避免引入不必要的处理延迟,它也不应执行复杂的逻辑。特别是对于高速流,最好是触发异步后处理 Step Function 工作流,而不是长时间运行的 Lambda 函数。
有关 Amazon Lambda 的更多信息,请参阅 Amazon Lambda 开发人员指南。