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

AWS CDK创建多区域KMS密钥时如何指定副本生效区域

解决方案

你不需要额外找特殊构造器,CfnKey和CfnReplicaKey本身就是区域级资源,要让副本在指定区域生效,用CDK标准的多区域多栈部署模式即可:多区域KMS副本的本质是把CfnReplicaKey资源部署到你指定的目标区域,而不是在主密钥的所属区域创建其他区域的副本。

具体实现步骤如下:

步骤1:创建主密钥栈,指定部署到主区域

首先编写用于部署多区域主密钥的独立栈,实例化栈时指定部署的主区域,同时创建主密钥时必须开启multiRegion属性,这是多区域密钥的必要前提。
示例代码(TypeScript):

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

// 主密钥栈,部署到指定主区域
class PrimaryKmsStack extends cdk.Stack {
  public readonly primaryKeyArn: string;
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    // 创建多区域主密钥
    const primaryKey = new kms.CfnKey(this, 'PrimaryMultiRegionKey', {
      multiRegion: true,
      keySpec: 'SYMMETRIC_DEFAULT',
      keyUsage: 'ENCRYPT_DECRYPT',
      enabled: true
    });
    this.primaryKeyArn = primaryKey.attrArn;
  }
}

步骤2:创建副本密钥栈,指定部署到目标区域

为每个需要存放副本的区域编写独立的副本栈,实例化栈时指定对应的目标区域,栈内只需要传入主密钥ARN实例化CfnReplicaKey即可。
示例代码(TypeScript):

// 副本密钥栈,部署到指定的副本区域
class ReplicaKmsStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, primaryKeyArn: string, props?: cdk.StackProps) {
    super(scope, id, props);
    // 创建对应主密钥的区域副本
    new kms.CfnReplicaKey(this, 'RegionReplicaKey', {
      primaryKeyArn: primaryKeyArn,
      enabled: true
    });
  }
}

步骤3:入口文件实例化多区域栈

在CDK入口文件中,分别给主密钥、各个区域副本指定对应的部署账号和区域即可。
示例代码(TypeScript):

const app = new cdk.App();
const awsAccountId = '你的12位AWS账号ID';

// 实例化主密钥栈,指定部署到美东1(us-east-1)
const primaryStack = new PrimaryKmsStack(app, 'PrimaryKmsStack-us-east-1', {
  env: {
    account: awsAccountId,
    region: 'us-east-1'
  }
});

// 实例化副本栈,指定部署到新加坡(ap-southeast-1)
new ReplicaKmsStack(app, 'ReplicaKmsStack-ap-southeast-1', primaryStack.primaryKeyArn, {
  env: {
    account: awsAccountId,
    region: 'ap-southeast-1'
  }
});

// 需要新增更多区域的副本时,只需要重复实例化副本栈,指定对应region参数即可

注意事项

  • CDK会自动识别栈之间的依赖关系,优先部署主密钥栈,所有副本栈会等待主密钥创建完成后再启动部署
  • 主密钥和各个区域副本的权限策略可以单独配置,不需要完全保持一致
  • 如果你用L2层级的Key构造器,也可以直接设置multiRegion: true,用同样的多栈模式实现跨区域副本部署,不需要强制使用L1构造器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:04