You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用boto3.resource备份DynamoDB并改写备份、恢复代码

使用boto3.resource操作DynamoDB备份与恢复

一、用boto3.resource实现DynamoDB备份

和boto3.client的低层级API调用不同,boto3.resource提供了更面向对象的操作方式,用起来更直观。要实现备份,你只需要先获取对应的DynamoDB资源对象,定位到目标表后调用create_backup()方法即可。

改写后的代码(替换client为resource)

原来基于client的代码:

client = boto3.client('dynamodb', region_name='us-west-2')
response = client.create_backup(
    TableName='test',
    BackupName='backup_test'
)

换成boto3.resource的实现版本:

import boto3

# 初始化DynamoDB资源对象
dynamodb = boto3.resource('dynamodb', region_name='us-west-2')
# 获取目标表的对象实例
table = dynamodb.Table('test')
# 调用create_backup方法创建备份
response = table.create_backup(BackupName='backup_test')

# 打印备份关键信息,方便后续恢复使用
print(f"备份ARN: {response['BackupDetails']['BackupArn']}")
print(f"备份创建时间: {response['BackupDetails']['BackupCreationDateTime']}")

这种写法更贴合面向对象的思路,因为已经通过Table对象指定了目标表,无需再重复传入TableName参数。

二、用boto3.resource恢复DynamoDB表

恢复操作同样可以通过boto3.resource完成,核心是需要用到备份的ARN(也就是上面打印的BackupArn)。具体步骤是先初始化DynamoDB资源,然后调用restore_table_from_backup()方法,指定备份ARN和恢复后的目标表名即可。

恢复代码示例

import boto3

dynamodb = boto3.resource('dynamodb', region_name='us-west-2')

# 执行恢复操作,替换为你的实际备份ARN和目标表名
restore_response = dynamodb.meta.client.restore_table_from_backup(
    TargetTableName='test_restored',  # 恢复后的新表名
    BackupArn='arn:aws:dynamodb:us-west-2:123456789012:table/test/backup/01689999999999-abcdefgh'
)

# 打印恢复任务的状态信息
print(f"恢复任务状态: {restore_response['TableDescription']['TableStatus']}")
print(f"恢复中的表名: {restore_response['TableDescription']['TableName']}")

恢复注意事项

  • 若要恢复到原表名,必须先删除原表,否则会触发「表已存在」的报错。
  • 恢复是异步操作,可以通过Table对象的load()方法轮询表状态,当状态变为ACTIVE时,说明恢复完成。
  • 备份ARN可以从创建备份的返回结果中获取,也能在AWS控制台的DynamoDB备份列表里找到。

内容的提问来源于stack exchange,提问作者Nitin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:22:57