在DynamoDB中将一个表复制到另一个表

时间:2012-09-03 01:50:56

标签: amazon-web-services amazon-dynamodb

在DynamoDB中将一个表格相同地复制到新表格的最佳方法是什么?

(我并不担心原子性)。

7 个答案:

答案 0 :(得分:16)

AWS Pipeline提供了一个可用于此目的的模板:“CrossRegion DynamoDB Copy”

请参阅:http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-crossregion-ddb-create.html

结果是一个简单的管道,如下所示:

enter image description here

虽然它被称为CrossRegion,但只要目标表名称不同,就可以轻松地将它用于同一区域(请记住,每个帐户和区域的表名都是唯一的)

答案 1 :(得分:6)

您可以使用Scan读取数据并将其保存到新表中。

在AWS论坛上,来自AWS团队的人使用EMR发布了另一种方法:How Do I Duplicate a Table?

答案 2 :(得分:5)

创建一个备份(backups选项)并使用新的表名还原该表。这样会将所有数据放入新表中。 注意:根据表的大小,会花费大量时间

答案 3 :(得分:0)

我刚刚使用了python脚本dynamodb-copy-table,确保我的凭据在某些环境变量(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY)中,并且它完美无缺。它甚至为我创建了目的地表。

python dynamodb-copy-table.py src_table dst_table

默认区域为us-west-2,请使用AWS_DEFAULT_REGION env变量进行更改。

答案 4 :(得分:0)

2017年11月29日推出了 Global Tables 。根据您的使用情况,这可能很有用,这可能与原始问题不同。以下是blog post

中的一些代码段
  

全局表 - 您现在可以创建跨两个或多个AWS区域自动复制的表,完全支持多主机写入,只需点击几下即可。这使您能够为全局用户群构建快速,大规模的应用程序,而无需管理复制过程。

     

...

     

您无需对现有代码进行任何更改。您只需将写入请求和最终一致的读取请求发送到任何指定区域中的DynamoDB端点(与强一致性读取相关联的写入应共享公共端点)。在幕后,DynamoDB实现了多主写,并确保最后一次写入特定项目。使用全局表时,每个项都将包含一个表示最近写入时间的时间戳属性。更新通过DynamoDB Streams以异步方式传播到其他区域,并且通常在一秒钟内完成(您可以使用新的 ReplicationLatency PendingReplicationCount 度量标准对此进行跟踪)。

答案 5 :(得分:0)

如上次答复中所述,数据管道模板不再存在。

在此线程中尝试了其他几个命题后,我最终编写了一个NodeJS脚本来移走数据。也许对您有用?如果您想尝试,我会记录我的方法on my blog here

答案 6 :(得分:0)

使用此节点js模块:copy-dynamodb-table