AWS DynamoDB教程之八:数据备份/恢复及导出


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

AWS DynamoDB
AWS DynamoDB

AWS DynamoDB系列教程:

数据导出功能

在DynamoDB中,数据导出功能非常好用。

首先,选择要导出的表,然后

  • Exports and streams
  • Export to S3

AWS DynamoDB教程
AWS DynamoDB教程

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

AWS DynamoDB教程
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        

文章作者: 逻思
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 逻思 !