作为AWS众多云服务的核心成员之一,DynamoDB得到了非常广泛的应用。在DynamoDB的使用过程中,需要做好数据的备份工作。同时,也可以使用其数据导出功能。

AWS DynamoDB
AWS DynamoDB系列教程:
- AWS DynamoDB系列之一:简介
- AWS DynamoDB教程之二:主键的设计及GSI
- AWS DynamoDB系列之三:Streams
- AWS DynamoDB系列之四:在Node.js中访问DynamoDB
- AWS DynamoDB系列之五:在本地安装DynamoDB
- AWS DynamoDB教程之六:如何使用APIGateway Service Proxy访问DynamoDB数据
- AWS DynamoDB教程之七:DynamoDB的访问控制
- AWS DynamoDB教程之八:数据备份/恢复及导出
- AWS DynamoDB教程之九:性能监测和调优,Audit Table及TTL
数据导出功能
在DynamoDB中,数据导出功能非常好用。
首先,选择要导出的表,然后
- Exports and streams
- Export to S3

AWS DynamoDB教程
你可能会看到这个错误提示,只需单击”Enable PITR (point-in-time recovery)”就可以

AWS DynamoDB教程
然后选择自己的S3 bucket并单击“Export”就可以了,整个过程需要几分钟的时间。
在不同账户间复制数据
这段脚本就可以实现这个功能(Credit to Adam Owczarczyk: https://stackoverflow.com/questions/43607592/copy-dynamodb-table-to-another-aws-account-without-s3)
Python
import boto3
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='eu-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
)
pagecount = 1
for page in dynamoresponse:
print('Processing page: ' + str(pagecount))
itemcount = 1
for item in page['Items']:
print(' Processing item: ' + str(itemcount))
dynamotargetclient.put_item(
TableName=targettabname,
Item=item
)
itemcount += 1
pagecount += 1