繁体   English   中英

AWS-CDK:在 AWS-CDK 中的多区域(跨区域)堆栈之间传递跨堆栈引用道具

[英]AWS-CDK: Passing cross-stack references props between multi region (cross-region) stacks in AWS- CDK

我必须部署一个堆栈,我们称它为一个区域的父堆栈 他们需要在另一个区域部署第二个堆栈(子堆栈)。 第二个堆栈(子堆栈)的区域不能包括部署父级的区域。 第二个堆栈可以部署在多个区域中。

但是,第二个堆栈需要来自第一个堆栈的道具。 具体来说,它需要一个 ARN 值。 默认区域是us-east-1 这就是父堆栈将被部署的地方。

为了解决这个问题,我尝试了以下

1-第一次尝试

  • 在父级和子级中创建了一个cfnOutput我使用cdk.Fn.ImportValue()捕获值
  • 结果:出现错误,因为 cfnOutput 无法在不同区域的堆栈之间使用,如 CloudFormation 用户指南中所述

2-第二次尝试

  • 在从 StackProps 继承的父堆栈中创建一个接口,设置一个公共属性并将 ARN 值放在那里

来自 lib/mystack 文件

export interface myStackProps extends cdk.StackProps {
 principalKeyArn: string
}
  • 将值与包含区域的 env 键一起作为道具传递到第二个堆栈,如下所示:

来自 bin/myapp 文件

const app = new cdk.App();
const regions = ["us-east-2"]

const primaryMRKey = new KmsMultiregionPrincipalKey(app, 'KmsMultiregionKeyStack')

for (let region of regions){
 const envToDeploy = {region: region, account: "123456789123"}
 new  KmsReplicaKey(app, 'KmsReplicaKey-' + region, {env: envToDeploy, principalKeyArn: primaryMRKey.principalKeyArn  } )

}

结果:仅部署到同一环境或嵌套堆栈与其父堆栈之间的堆栈支持跨堆栈引用

问题

  • 如何解决在 CDK 中使用不同区域的堆栈之间传递跨堆栈引用的问题?

提前致谢

将 Parameter Store 值与CustomResource一起使用。

这个答案有一个完整的 Typescript CDK 跨区域参考示例。

(我最初将此作为评论发布,因为我认为这个问题可能是重复的。但经过反思,我发现链接的问题标签只提到 CloudFormation,而不是 CDK。似乎社区从保持这个问题的活力中获得了最大的好处)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM