我需要使用amazon数据管道将我的dynamoDB表数据备份到S3。
我的问题是 - 我可以使用单个数据管道将多个dynamoDB表备份到S3,还是我必须为每个表创建一个单独的管道?
另外,由于我的表有一个year_month前缀(ex-2014_3_tableName),我想在月份更改后使用datapipeline SDK更改管道定义中的表名。这会有效吗?有没有替代/更好的方法?
谢谢!
答案 0 :(得分:8)
如果要通过DynamoDB控制台的“导入/导出”按钮设置数据管道,则必须为每个表创建一个单独的管道。如果直接使用Data Pipeline(通过Data Pipeline API或通过Data Pipeline控制台),则可以在同一管道中导出多个表。对于每个表,只需添加一个额外的DynamoDBDataNode,并使用EmrActivity将该数据节点链接到输出S3DataNode。
关于你的year_month前缀用例,使用数据管道sdk定期更改表名似乎是最好的方法。另一种方法可能是制作script that export EmrActivity is running的副本(您可以在活动的“步骤”下看到脚本位置),而是通过检查当前日期来改变hive脚本确定表名的方式。您需要复制此脚本并在您自己的S3存储桶中托管修改后的脚本,并将EmrActivity指向该位置而不是默认位置。我之前没有尝试过任何一种方法,但两者在理论上都是可行的。
有关导出DynamoDB表的更多常规信息,请参阅DynamoDB Developer Guide,更详细的信息可在AWS Data Pipeline developer guide中找到。
答案 1 :(得分:1)
这是一个老问题,但我在最后几天寻找答案。 添加多个DynamoDBDataNode时,您仍然可以使用单个S3DataNode,如输出。只需通过在EmrActivity Step字段中指定不同的output.directoryPath来区分S3存储桶中的文件夹。
像这样: #{output.directoryPath} / newFolder
将在s3存储桶中自动创建每个新文件夹。