Как получить доступ к ресурсам в другом стеке с помощью aws cdk?

Мой английский может показаться странным. Если есть места, где это не имеет смысла, спросите меня.

Чего мы хотим достичь

Я хочу создать среду, используя aws cdk (python). Я хочу отделить стек vpc от стека aurora. Для этого я хочу добавить ресурс (идентификатор подсети), созданный в стеке vpc, в 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 не имеет атрибута outputSbnt01.

Что я пробовал

Я попробовал и установил outputSbnt01 в Cfnoutput, но получаю ту же ошибку. Есть аналогичный вопрос ↓, и я попробовал, но получил ту же ошибку.

AWS CDK: как ссылаться на перекрестные -stack ресурсов в одном приложении?

Спасибо за просмотр.


person Rojer Mckee    schedule 09.07.2020    source источник


Ответы (1)


Ваши вызовы в app.py будут выглядеть так же, как и у вас:

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

Убедитесь, что вы присвоили переменную outputSbnt01 в стеке vpcStack:

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

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

Теперь вы можете ссылаться на переменную как sbntid в auroraStack.

person Adam    schedule 27.02.2021