当前位置: 首页 > 知识库问答 >
问题:

DynamoDB上的批处理触发器Lambda

孟意致
2023-03-14

我有一张如下的桌子

Key                                 | Value
---------------------------------------------------
Client_123_UNIQUE_ID                | s3://abc.txt
Client_123_UNIQUE_ID                | s3://xyz.txt
Client_456_UNIQUE_ID                | s3://qaz.txt              
Client_456_UNIQUE_ID                | s3://qwe.txt
Client_789_UNIQUE_ID                | s3://asd.txt
Client_789_UNIQUE_ID                | s3://zxc.txt

数据将从AWS Lambda函数一致地插入到此表中。(可能是数百万个项目)

我有一个用例,当表中有100个可用项时,我需要有一个触发器来执行一些批处理。换句话说,一旦我们在这个表中创建了100个新项目,我希望有一个Lambda触发器函数来对100个项目执行批处理。

当我研究时,DynamoDB流似乎可以支持批处理,但根据文档我不太清楚。

Lambda分批读取记录,并调用函数处理批次中的记录。

Lambda以每秒4次的基本速率轮询DynamoDB Streams流中的分片以查找记录。当记录可用时,Lambda会调用您的函数并等待结果。如果处理成功,Lambda会继续轮询,直到收到更多记录。

如果函数返回错误,Lambda将重试批处理,直到处理成功或数据过期。在问题解决之前,不会处理碎片中的任何数据。处理代码中的任何记录处理错误,以避免碎片停滞和潜在的数据丢失。

您能帮我澄清文档或建议我使用DynamoDB流的方法是否适合这个用例?

如果我解释我的问题不够好,请发表评论,这样我可以澄清更多。

共有1个答案

应向晨
2023-03-14

您可以在声明流和Lambda之间的映射时设置BatchSize。最大大小为10000个项目。

 类似资料:
  • 我们有一个作业,它使用cron表达式在下午1点到5点之间每隔M-F轮询一次文件和数据库。在此期间,如果文件到达,它将下载文件并调用作业。这很好,我们使用了spring集成和批处理。 现在,我们需要一些定制,其中我们有多个作业,其中job1应该像上面一样轮询。一旦文件处理成功,它应该停止轮询。 第二个要求是,若在轮询期间并没有收到文件,我们希望向ops团队发送一些通知,以便他们可以采取一些行动。

  • 我有一个dynamoDb表,它设置为两个区域之间的全局(2019版)。 我在表上分配了一个lambda函数作为触发器。当一条记录插入到表的东版本中时,就会触发lambda的东版本。然后将记录复制到表的西版本,并触发lambda的西版本。 我想要一个λ触发。但是我也希望两个触发器都启用,以防一个区域出现故障。 我怎样才能做到这一点?我宁愿不使触发器逻辑幂等。

  • 我正在试验Dynamo db和lambda,并且在以下流程中遇到问题: Lambda A由put to S3事件触发。它获取对象(一个音频文件),计算其持续时间,并在dynamoDB中为每30秒的段写入一条记录。 Lambda B由DynamoDB触发,从S3下载文件并对Dynamo行中定义的30秒记录进行操作。 我的问题是,当我运行这个流时,函数A通过函数B写入Dynamo所需的所有行 似乎没有

  • 我正在尝试使用DynamoDB流和AWS Lambda创建DynamoDB触发器。我做了很多研究,但在Java 8中找不到任何读取和处理DynamoDB流事件的方法。我对这两种技术都是新手,所以不知道如何使用它。 本质上,我想做的是每当在表A中创建记录时,都在表B中创建一条记录。 你们谁能给我指出一个在Java中处理这个用例的代码或帖子吗? 谢谢:)

  • 我已经到处找了,我一辈子也找不到服务器来安装dynamodb触发器。 我使用了: 我尝试了一个硬编码的arn,没有发生任何事情,我可以在aws控制台上看到。我是新服务器。如果你有任何建议,请张贴。

  • 我希望能够用REST控制器开始我的作业,然后当作业开始时,它应该在计划的基础上运行,直到我用REST再次停止它。