使用客户端加密将DynamoDB表导出到S3

时间:2015-05-10 00:16:29

标签: encryption amazon-s3 hive amazon-dynamodb elastic-map-reduce

我尝试使用数据管道将数据从Dynamo导出到s3。但是,在将文件写入s3之前,我无法弄清楚如何应用客户端加密。有没有办法用Data Pipeline做到这一点?我可以使用Data Pipeline设置除客户端加密之外的所有内容。理想的流程是发电机源节点,加密活动和S3目标节点。

我也试过Elastic MapReduce,但是我没有看到如何编写映射器和reducer,因为我没有转换任何数据 - 我只需要将它移动到s3上的加密文件。我应该能够将EMR与hive程序一起使用,但我很难理解如何在不编写自定义map / reduce代码的情况下使用EMR。理想情况下,S3中不存储任何代码。

服务器端加密不是一个选项,数据在写入s3之前需要加密。

我正在寻找有关如何做到这一点或有类似挑战的人的一些想法。

2 个答案:

答案 0 :(得分:3)

当前的数据管道解决方案目前不支持自定义预处理或后处理的挂钩。

你的桌子有多大?出口过程可以接受多长时间?

应该可以使用DynamoDB并行扫描执行此操作:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScanParallelScan

基本上,您可以编写一个程序,使用多个线程来处理并行扫描的扫描段,执行加密,并将加密的项存储在S3中。每个DynamoDB扫描页面应返回约1MB的数据,因此您可以在发布到S3之前聚合多个页面。

要恢复数据,您需要加载S3文件,解密,然后写回DynamoDB。

答案 1 :(得分:0)

如果您的用例可以接受,则可以在DynamoDB中写入数据之前进行客户端加密。然后,您可以使用数据管道将加密数据导出到S3。

我的应用程序similar setup使用了aws-labs提供的client-side encryption library。我们每天导出表以保持备份。只要使用加密元数据导出数据,就可以恢复数据。