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

AWS-识别Lambda从DynamoDB流读取的数据

微生翼
2023-03-14

我有一个启用/配置了TTL和DynamoDB Streams的DynamoDB表。

我想实现一个lambda函数,该函数将从DynamoDB流中读取TTL删除的数据,并将其转发给Kinesis Firehose或S3(考虑到成本,我需要决定哪一个更好)。

是否有任何标志/属性有助于识别TTL删除记录已被某些lambda函数读取/处理?例如,我在DynamoDB流中有10条记录,一个lambda函数读取了5条记录并对其进行了一些处理(将其转发给Kinesis Firehose或S3)。所以,我想确定这5条被处理的记录。

共有2个答案

彭鸿畅
2023-03-14

遗憾的是,没有这样的“标志/属性”来指示给定的DynamoDb记录已经或尚未被lambda函数处理。您需要为此设计一个自定义解决方案。

一种是使用另一个DynamoDb表,只是为了跟踪已删除项目的当前状态。例如,当lambda接受一条记录时,它会将其写入表中。任何其他函数或感兴趣的进程都必须检查该记录是否存在于表中。记录的存在表明删除的项目仍在处理中。

毕嘉
2023-03-14

您可以使用流记录中的userIdentity字段来识别哪个记录来自DynamoDB的TTL删除。

查看此处的详细信息:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/time-to-live-ttl-streams.html

 类似资料:
  • 我有一个kinesis流,有一个碎片和一个用Python编写的lambda函数。我添加了kinesis流作为批量大小为5的事件源。我在kinesis中添加了数百条记录,lambda函数得到了正确的调用和执行。但是对于最后3条记录,lambda函数被无限地调用,即使函数返回是成功的。

  • 我有一个dynamodb表,它通过启用dynamodb流来触发lambda函数。这是从Dynamodb控制台设置的。然而,我希望能够将触发器指向lambda函数的特定版本/别名。大多数其他AWS服务允许您指定lambda ARN,您可以在其末尾标记版本或别名,如ARN:AWS:lambda::function::

  • 我有一个Lambda函数,将多个DynamoDB流配置为事件源,这是更大管道的一部分。在进行检查时,我在一个下游组件中发现了一些缺失的数据。我想编写一个更简单的Lambda函数,将其配置为前面提到的DynamoDB流之一的事件源。这将导致我的一个DynamoDB流有两个Lambda函数从中读取。我想知道这样可以吗?这两个Lamdba函数是否都能保证接收流中的所有记录,是否有任何需要注意的资源(读/

  • 我正在尝试读取存储在Firebase数据库中的值。这就是数据库的样子: URL: 现在,从Android端,这就是我尝试检索数据的方式:

  • 当我尝试从AWS控制台运行lambda函数时,代码工作正常。由于我想仅在添加了新的Dynamo DB记录时运行特定代码,因此我想从dymanoDB流插入事件中运行lambda函数。我尝试了以下代码,似乎lambda没有调用。 serverless.yml中的权限 dynamoDB流代码 我将非常感谢你的指导。

  • 我的任务是使用lambda向DynamoDB添加新的Cognito用户。我已经得到了一个现有的AWS Cognito用户池。到目前为止,我已经编写了一个lambda函数&用demo数据测试它,以便它可以将数据保存到Dynamodb中。但在测试时,它不会将我的数据保存到数据库中。为了获得指导,我一直在跟踪这篇文章。在这篇文章中说,在测试之后,我的DynamoDB表应该被填充。 日志输出 START.