假设我定义了两个堆栈,A 和 B。
在堆栈 A 中,我定义了一个 VPC 和一个子网,并输出了该子网的 ID
t = Template()
Subnet = t.add_resource(Subnet .....)
SubnetId = t.add_output(Output('SubnetId', Value=Ref(Subnet))
在堆栈 B 中,我希望将这些实例置于堆栈 A 中定义的子网中。我该如何实现呢?
假设我定义了两个堆栈,A 和 B。
在堆栈 A 中,我定义了一个 VPC 和一个子网,并输出了该子网的 ID
t = Template()
Subnet = t.add_resource(Subnet .....)
SubnetId = t.add_output(Output('SubnetId', Value=Ref(Subnet))
在堆栈 B 中,我希望将这些实例置于堆栈 A 中定义的子网中。我该如何实现呢?
您可以使用troposphere.GetAtt
. 这是我从 VPC 堆栈传递到 Apache Airflow 堆栈VpcId
的示例:PublicSubnetId
# t is a Template, keyname_param is a Parameter
vpc_stack = t.add_resource(
Stack(
'VpcStack',
TemplateURL=vpc_template_url
)
)
airflow_stack = t.add_resource(
Stack(
'AirflowStack',
TemplateURL=airflow_stack_url,
Parameters={
'KeyName': Ref(keyname_param),
'VpcId': GetAtt(vpc_stack.title, 'Outputs.VpcId'),
'PublicSubnetId': GetAtt(vpc_stack.title, 'Outputs.PublicSubnetId')
}
)
)