如何在cdk堆栈之间传递变量而不会出现交叉引用错误



我需要将INamespace传递给CloudMapOptions,以便ECS任务注册到AWS CloudMap,我得到以下错误。我无法将它们与CfOutput解耦,因为我需要ECS cloudMapOptions:中的命名空间

Stack "users" cannot consume a cross reference from stack "servicediscovery". Cross stack references are only supported for stacks deployed to the same environment or between nested stacks and their parent stack.

我试过这个:https://bobbyhadz.com/blog/aws-cdk-share-vpc-between-stacks,但没有取得任何成功。如何在堆栈之间传递INamespace类型的变量?

这个"交叉引用";错误也可能是由于缺少super()的第三个参数造成的。

export class MyStack extends cdk.Stack {
constructor(scope: Construct, id: string, props: cdk.StackProps) {
super(scope, id); // Missing third argument
}
}

如果执行以下操作之一,则可能会发生此错误:

  1. 您试图在定义为位于两个不同区域的堆栈之间创建引用

请注意,不支持这种跨区域引用

  1. 您提供不同的StackProps作为Stack构造函数的第三个参数

为了解决此问题,请确保在StackProps中传递相同的env值,例如

class MyStack extends Stack {
constructor(scope: Construct){
super(scope, "MyStack", {
env: { 
account: '123456789', 
region: 'eu-central-1'
}
})
}
}

最新更新