簡體   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