簡體   English   中英

如何使用 aws cdk 訪問不同堆棧中的資源?

[英]How to accessing resources in a different stack using aws cdk?

我的英語可能很奇怪。 如果有不明白的地方請追問。

我們想要達到的目標

我想使用 aws cdk(python) 構建一個環境。 我想將 vpc 堆棧與 aurora 堆棧分開。 為此,我想將在 vpc 的堆棧上創建的資源(子網 ID)添加到 aurora 我想在堆棧中引用它。

問題

#!/usr/bin/env python3
from aws_cdk import core
from test.aurora import auroraStack
from test.vpc import vpcStack
app = core.App()
prod = core.Environment(account="123456789012", region="us-east-1")
vpcStack(app, "Vpc", env=prod)
auroraStack(app, "Aurora", env=prod, sbntid=vpcStack.outputSbnt01)
app.synth()

我已經根據↓文檔編寫了代碼,但是運行時出現錯誤。

https://docs.aws.amazon.com/cdk/latest/guide/resources.html#resource_stack

我已經確認我將使用 vpcStack 進行部署,僅 auroraStack。 但是,我收到以下錯誤。 AttributeError:“vpcStack”object 沒有屬性“outputSbnt01”

我試過的

我嘗試了它並在 Cfnoutput 中設置了 outputSbnt01,但我得到了同樣的錯誤。 有一個類似的問題↓我試過了,但我得到了同樣的錯誤。

AWS CDK:如何在同一應用程序中引用跨堆棧資源?

感謝收看。

你在 app.py 中的調用看起來和你一樣:

vpcStack(app, "Vpc", env=prod)
auroraStack(app, "Aurora", env=prod, sbntid=vpcStack.outputSbnt01)

驗證您是否已在堆棧vpcStack中分配了outputSbnt01變量:

class vpcStack(core.Stack):
    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)
        outputSbnt01 = ec2.Subnet()
        self.outputSbnt01 = outputSbnt01

接受 auroraStack 中的auroraStack

class auroraStack(core.Stack):
    def __init__(self, scope: core.Construct, id: str, sbntid, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

您現在可以在auroraStack sbntid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM