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

如何通过AWS CDK将eu-south-2的DynamoDB副本设为主表并删除eu-west-1原表?

如何通过AWS CDK将DynamoDB副本表设为主表并删除原表

前提条件

  • 确认eu-south-2区域的副本表已完成所有数据同步(可通过AWS控制台查看表的复制状态,或执行CLI命令:aws dynamodb describe-table-replicas --table-name MyTable --region eu-west-1,确保所有副本状态为ACTIVE)。
  • 手动终止原主表(eu-west-1)与副本表(eu-south-2)的复制关系,执行CLI命令:aws dynamodb update-table --table-name MyTable --region eu-west-1 --replica-updates "[{\"Delete\": {\"RegionName\": \"eu-south-2\"}}]"。此时eu-south-2的表已成为独立的可读写表。

步骤1:将现有eu-south-2表导入CDK管理

由于该表已存在,需通过CDK的资源导入功能将其纳入栈的管理,避免CDK尝试重新创建或误删它。

以TypeScript为例,修改CDK代码:

import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
import * as cdk from 'aws-cdk-lib';

const app = new cdk.App();
const stack = new cdk.Stack(app, 'MyDynamoDBStack', {
  env: { region: 'eu-south-2' } // 将栈的目标区域设为eu-south-2
});

// 导入eu-south-2区域的现有表
const existingTable = dynamodb.TableV2.fromTableAttributes(stack, 'ExistingTable', {
  tableArn: 'arn:aws:dynamodb:eu-south-2:YOUR_ACCOUNT_ID:table/MyTable',
  partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING } // 必须与现有表的schema完全一致
});

步骤2:移除原eu-west-1主表的CDK定义

删除原代码中关于eu-west-1区域主表的所有定义(包括全局表的replicas配置)。

步骤3:部署变更并验证

  1. 执行cdk diff查看变更:确认CDK会删除eu-west-1的原表,同时接管eu-south-2的现有表。
  2. 执行cdk deploy部署变更。
  3. 验证:登录AWS控制台,确认eu-west-1的表已被删除,eu-south-2的表正常运行且支持读写操作。

注意事项

  • 数据安全:操作前务必备份eu-south-2表的数据,避免意外丢失。
  • 应用适配:确保你的应用已将DynamoDB端点切换到eu-south-2区域,避免连接失效。
  • Schema一致性:导入现有表时,fromTableAttributes中指定的分区键、排序键等schema必须与现有表完全匹配,否则会导致CDK管理异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:43:21