3

我正在尝试从 DynamoDB 表设置 ElasticSearch 导入过程。我已经创建了 AWS Lambda 并启用了带有触发器的 DynamoDB 流,该触发器为每个添加/更新的记录调用我的 lambda。现在我想执行初始种子操作(将当前在我的 DynamoDB 表中的所有记录导入到 ElasticSearch)。我怎么做?有没有办法让表中的所有记录都被“重新处理”并添加到流中(这样它们就可以被我的 lambda 处理)?还是编写一个单独的函数来手动读取表中的所有数据并将其发送到 ElasticSearch 更好——所以基本上有 2 个 lambda:一个用于初始数据迁移(仅执行一次并由我手动触发),另一个用于同步新记录(由 DynamoDB 流事件触发)?

感谢所有的帮助:)

4

2 回答 2

2

根据您的数据集有多大,您将无法在 Lambda 中播种数据库,因为最大超时为300 秒(编辑:现在是 15 分钟,感谢@matchish)。

您可以启动 EC2 实例并使用 SDK 执行DynamoDB 扫描操作并批量写入 Elasticsearch 实例。

您还可以使用Amazon EMR执行 Map Reduce 作业以导出到 S3并从那里处理您的所有数据。

于 2017-08-07T14:32:57.623 回答
0

我会编写一个脚本来触及 dynamodb 中的每条记录。对于 dynamodb 中的每个项目,添加一个名为 migratedAt 的新属性或任何你想要的。添加此属性将触发 dynamodb 流,进而触发您的 lambda 处理程序。根据您的问题,您的 lambda 处理程序已经处理了更新,因此那里没有任何更改。

于 2021-10-11T07:56:13.163 回答