将dynamoDB表复制到另一个没有S3的aws帐户
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将dynamoDB表复制到另一个没有S3的aws帐户相关的知识,希望对你有一定的参考价值。
我想将所有dynamoDB表复制到另一个没有s3的aws帐户来保存数据。我看到了使用数据管道复制表的解决方案,但所有都使用s3来保存数据。我想跳过s3步骤,因为该表包含大量数据,因此s3写入和s3读取过程可能需要一些时间。所以我需要直接将表从一个帐户复制到另一个帐户。
如果你不介意使用Python,并添加boto3库(sudo python -m pip install boto3),那么我会这样做(我假设你知道如何分别填写代码中的键,区域和表名) :
import boto3
import os
dynamoclient = boto3.client('dynamodb', region_name='eu-west-1',
aws_access_key_id='ACCESS_KEY_SOURCE',
aws_secret_access_key='SECRET_KEY_SOURCE')
dynamotargetclient = boto3.client('dynamodb', region_name='us-west-1',
aws_access_key_id='ACCESS_KEY_TARGET',
aws_secret_access_key='SECRET_KEY_TARGET')
dynamopaginator = dynamoclient.get_paginator('scan')
tabname='SOURCE_TABLE_NAME'
targettabname='TARGET_TABLE_NAME'
dynamoresponse = dynamopaginator.paginate(
TableName=tabname,
Select='ALL_ATTRIBUTES',
ReturnConsumedCapacity='NONE',
ConsistentRead=True
)
for page in dynamoresponse:
for item in page['Items']:
dynamotargetclient.put_item(
TableName=targettabname,
Item=item
)
试试这个nodejs
module
npm i copy-dynamodb-table
使用boto对Amazon DynamoDB进行简单备份和还原
https://github.com/bchew/dynamodump
可以执行以下操作:
- 单表备份/恢复
- 多表备份/恢复
- 多表备份/恢复但在不同环境之间(例如,生产 - *表到开发 - *表)
- 备份所有表并仅还原数据(不会删除并重新创建架构)
- 转储所有表模式并创建模式(例如,在不同的AWS账户中创建空表)
- 根据AWS tag key = value备份所有表
- 根据AWS标记备份所有表,压缩并存储在指定的S3存储桶中。
- 从S3存储桶还原到指定的目标表
读取和写入S3不会成为您的瓶颈。
虽然从Dynamo扫描速度非常快,但将项目写入目标表的速度会很慢。每个分区每秒最多只能写入1000个项目。所以,我不担心中间S3存储。
但是,数据管道也不是将表复制到另一个表的最有效方法。
如果您需要快速的转移,那么您最好的选择是实施自己的解决方案。根据所需的传输吞吐量配置目标表(但要注意不需要的分区拆分),然后使用多个线程写入并行扫描,这也会写入目标表。
Java中有一个开源实现,您可以将其用作AWS实验室存储库中的起点。
https://github.com/awslabs/dynamodb-cross-region-library
您可以使用DynamoDb Streams和Lambda来实现此目的。 http://searchaws.techtarget.com/tip/DynamoDB-Streams-keep-database-tables-in-sync
以上是关于将dynamoDB表复制到另一个没有S3的aws帐户的主要内容,如果未能解决你的问题,请参考以下文章
AWS DataPipeline表示未找到DynamoDB表
使用 AWS Datapipeline 将 DynamoDB 导出到 S3 数据
使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶