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

如何通过CDK为导入的DynamoDB表添加replicationRegions?

如何通过CDK为导入的DynamoDB表添加多区域复制

用Table.fromTableArn导入的表是只读引用,无法直接修改其属性(包括replicationRegions)——因为CDK的导入类仅暴露只读方法和属性,不提供修改原表配置的能力。要实现多区域复制,可采用以下两种方法:

方法一:通过CfnGlobalTable创建全局表关联

借助CDK的低级CloudFormation资源CfnGlobalTable,可以直接配置已有表的多区域复制,步骤如下:

  1. 先导入原表的引用
const importedTable = Table.fromTableArn(this, "ImportedTable", "arn:aws:dynamodb:us-east-1:123456789012:table/MyExistingTable");
  1. 创建CfnGlobalTable资源,关联原表与目标复制区域
new CfnGlobalTable(this, "MyGlobalTable", {
  globalTableName: "MyExistingTable", // 必须与原表名称完全一致
  replicas: [
    {
      region: "us-east-1", // 原表所在的源区域
      tableName: importedTable.tableName
    },
    {
      region: "eu-west-1" // 需要添加的第一个复制区域
    },
    {
      region: "ap-southeast-1" // 需要添加的第二个复制区域
    }
  ]
});

注意:原表必须满足全局表前置条件:已启用DynamoDB流,且流视图类型为NEW_AND_OLD_IMAGES、NEW_IMAGE或KEYS_ONLY。如果原表未开启流,需先在控制台或通过CDK修改配置开启。

方法二:通过CfnTable修改原表的复制配置

如果需要更精细的控制,也可以用CfnTable导入原表并添加复制配置:

const cfnTable = CfnTable.fromCfnTableArn(this, "ImportedCfnTable", "arn:aws:dynamodb:us-east-1:123456789012:table/MyExistingTable");

// 配置复制区域
cfnTable.replicas = [
  { region: "us-east-1" },
  { region: "eu-west-1" },
  { region: "ap-southeast-1" }
];

这种方法需要确保原表当前配置与CloudFormation模板定义一致,避免出现配置漂移问题。

关键注意事项

  • 导入的表必须满足全局表要求:启用DynamoDB流、使用按需或预置容量模式(全局表不支持其他模式)、表名在所有复制区域唯一。
  • 部署CDK前,建议手动验证原表的流配置是否符合要求,否则部署会失败。
  • 部署完成后,DynamoDB会自动开始同步数据到目标区域,同步时长取决于表的数据量大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:15:18