gpt4 book ai didi

amazon-web-services - AWS-CDK:在 AWS-CDK 中的多区域(跨区域)堆栈之间传递跨堆栈引用属性

转载 作者:行者123 更新时间:2023-12-03 07:10:30 25 4
gpt4 key购买 nike

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

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

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

1- 第一次尝试:使用 cfnOutput

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

2-第二次尝试:使用 StackProps

  • 在父堆栈中创建一个继承自 StackProps 的接口(interface),设置公共(public)属性并将 ARN 值放入其中

来自 lib/mystack 文件

export interface myStackProps extends cdk.StackProps {
principalKeyArn: string
}
  • 将值作为 props 以及包含区域的 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 中使用不同区域的堆栈之间传递跨堆栈引用的问题?

[已编辑]此问题的一种解决方案是使用 SSM,如下所述。

提前致谢

最佳答案

使用参数存储值 CustomResource .

This answer有跨区域引用的完整 Typescript CDK 示例。

(我最初将其作为评论发布,因为我认为这个问题可能是重复的。但经过反射(reflection),我发现链接的问题标签仅提到了 CloudFormation ,而不是 CDK。似乎社区从保留这个问题中获得了最大的利益)。

关于amazon-web-services - AWS-CDK:在 AWS-CDK 中的多区域(跨区域)堆栈之间传递跨堆栈引用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70113760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com