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

如何在AWS CDK中从Stack A跨区域引用自动创建的Stack B?

从Stack A引用CDK自动创建的跨区域Stack B

要在us-east-2的Stack A中引用CDK自动创建的us-east-1区域Stack B,核心是通过目标区域资源的stack属性获取Stack B的引用,而非依赖仅指向当前Stack A的this。

具体实现步骤

  1. 当你在Stack A中配置跨区域资源(比如S3跨区域复制的目标Bucket)时,CDK会自动在目标区域生成Stack B。此时直接捕获目标资源的引用,通过它的stack属性即可拿到Stack B的实例。
  2. 使用Stack B的stackName属性替代this.stackName,就能正确引用目标栈的资源路径。

示例代码(以S3跨区域复制为例)

import { Bucket } from 'aws-cdk-lib/aws-s3';
import { NagSuppressions } from 'cdk-nag';

// Stack A(us-east-2)中的代码
const sourceBucket = new Bucket(this, 'SourceBucket', {
  region: 'us-east-2',
  // 源Bucket配置
});

// 创建跨区域复制的目标Bucket,CDK会自动在us-east-1创建Stack B
const targetBucket = new Bucket(this, 'TargetBucket', {
  region: 'us-east-1',
  // 目标Bucket配置,包含复制规则等
});

// 获取Stack B的引用
const stackB = targetBucket.stack;

// 针对Stack B中的资源添加Nag抑制规则
NagSuppressions.addResourceSuppressionsByPath(stackB, `/${stackB.stackName}/SharedInfra/...`, [
  {
    id: "AwsSolutions-S1",
    reason: "lorem ipsum",
  },
]);

关键说明

  • 所有CDK资源都绑定到所属的栈,通过资源的stack属性可直接获取其所在栈的实例,无论该栈是手动创建还是CDK自动生成的跨区域栈。
  • 避免硬编码Stack B的名称,CDK生成的栈名可能随配置变化,通过stackB.stackName动态获取更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:28:23