如何将我的 Amazon DynamoDB 表的备份还原到其他区域?

上次更新日期:2022 年 8 月 17 日

我想将我的 Amazon DynamoDB 表的备份还原到其他区域。

解决方法

要将 DynamoDB 表还原到其他区域,您可以使用以下任一方法。

使用 DynamoDB 将 DynamoDB 表还原到其他区域

  1. 打开 DynamoDB 控制台
  2. 在导航窗格中,选择 Backups(备份)。
  3. 在显示的列表中,选择要从中还原表的备份。
  4. 选择 Restore(还原)。
  5. Name of restored table(已还原表的名称)中,输入新的表名。
  6. 对于 Secondary indexes(二级索引),选择所需的选项。
  7. 对于 Destination AWS Region(目标 AWS 区域),选择 Cross-Region(跨区域)。
  8. 对于 Select the destination AWS Region(选择目标 AWS 区域),选择您选择的区域。
  9. 对于 Encryption key management(加密密钥管理),选择所需的选项。
  10. 选择 Restore(还原)。

使用 AWS Glue 将 DynamoDB 表还原到其他区域

您可以使用 AWS Glue 任务将 DynamoDB 表还原到另一个区域。AWS Glue 为还原过程提供了更大的灵活性。如果您不想将所有属性或字段还原到新区域中的目标表,则可以选择此方法。此方法仅适用于导出到 Amazon Simple Storage Service(Amazon S3)的表。

1.    使用导出到 S3 功能将 DynamoDB 表导出到 Amazon S3 后,创建一个 AWS Glue 任务。请务必在 Script(脚本)选项卡中指定以下信息:

datasource0 = glueContext.create_dynamic_frame.from_options(
    connection_type="dynamodb",
    connection_options={
        "dynamodb.export": "ddb",
        "dynamodb.tableArn": "arn:aws:dynamodb:source-region:account-number:table/TableName",
        "dynamodb.unnestDDBJson": True,
        "dynamodb.s3.bucket": "example-bucket",
        "dynamodb.s3.prefix": "dynamodb",
        "dynamodb.s3.bucketOwner": "account-number",
    }
)

注意:请务必使用转换节点 ApplyMapping,并指定目标表中必须存在的字段。此设置会根据提供的输入自动生成 PySpark 代码。

示例:

applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("resource_id", "string", "resource_id", "string")], transformation_ctx = "applymapping1")

2.    指定接收器操作以直接写入目标区域中的目标表。

示例:

glueContext.write_dynamic_frame_from_options (frame = MappedFrame, connection_type = "dynamodb", connection_options = { "dynamodb.region": "example-region", "dynamodb.output.tableName": "example_table", "dynamodb.throughput.write.percent": "1.0" })

3.    从 AWS Glue 控制台运行任务,将数据从当前区域加载到目标区域。