Aws lambda 读取AWS Dynamodb流
我想使用DynamoDB流在S3上进行增量DynamoDB备份。我有一个lambda,它读取dynamodb流并将文件写入S3。为了标记已读碎片,我已将ExclusiveStartShardie登录到配置文件中 我所做的是:Aws lambda 读取AWS Dynamodb流,aws-lambda,amazon-dynamodb-streams,Aws Lambda,Amazon Dynamodb Streams,我想使用DynamoDB流在S3上进行增量DynamoDB备份。我有一个lambda,它读取dynamodb流并将文件写入S3。为了标记已读碎片,我已将ExclusiveStartShardie登录到配置文件中 我所做的是: 描述流(使用记录的ExclusiveStartShardId) 获取流的碎片 对于所有关闭的(具有EndingSequenceNumber)碎片,我执行以下操作: 获取特定碎片的碎片迭代器(碎片迭代器类型:'TRIM_HORIZON') 迭代碎片并获取记录,直到NextS
- 获取特定碎片的碎片迭代器(碎片迭代器类型:'TRIM_HORIZON')
- 迭代碎片并获取记录,直到NextShardIterator变为null
我还发现了一个类似的问题:。很遗憾,我找不到问题的答案。为什么不将DynamoDB流作为Lambda函数的事件源附加?然后Lambda将负责轮询流并在必要时调用您的函数。有关详细信息,请参阅。是否已将DynamoDB流设置为Lambda函数的事件源?根据您的描述,这听起来像是您试图自己对流进行轮询。my lambda的事件源是Scheduled event:hourevent(每小时执行一次)。当lambda被执行时,我试图从某个“检查点”读取流并备份新数据。但是这样,lambda函数将在DynamoDB中的每次数据修改中执行。这意味着我应该创建许多备份文件,即使批大小很大/或者我应该在s3上读取然后写入文件,这是一个昂贵且耗时的操作。您可以将批大小控制在最大10000。因此,您的Lambda函数不一定会在每次修改时被调用。但据我所知,Lambda在每次修改/插入时都会被调用,并且当同时发生两个或多个修改时会使用批大小。换句话说,如果您在10秒内进行了修改/插入,并且批大小为100,lambda函数将在10秒内执行(忽略批大小)。@garnaat lambda轮询DynamoDB流的频率是多少。可以配置该值吗?从Lambda开始可能很容易(也是个好主意),但在规模上会变得更昂贵。