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

How can you pass variables between cdk stacks without getting cross reference error?

我需要将 INamespace 传递给 CloudMapOptions 以便 ECS 任务注册到 AWS CloudMap,我收到以下错误。我无法将它们与 CfnOutput 分离,因为我需要 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 类型的变量?

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

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

注意这样的跨区references are not supported

  1. 您提供了不同的 StackProps as 3rd parameter to Stack 构造函数

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

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