我有一个简单的问题。我正在测试云形成中值的导出/导入。
问题是:如何根据来自其他堆栈的链接条件创建资源?
我想我应该从其他堆栈中导入值,但不知道如何......
这是我的" export-test-stack"
AWSTemplateFormatVersion: '2010-09-09'
Description: Export
Parameters:
EnvType:
Description: How many Instances you want to deploy?
Default: two
Type: String
AllowedValues:
- two
- three
ConstraintDescription: must specify number of deployed Instances
Conditions:
Deploy3EC2: !Equals [ !Ref EnvType, three ]
Resources:
Ec2Instance1:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
SecurityGroupIds:
- sg-5d011027
ImageId: ami-0b33d91d
Ec2Instance2:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
SecurityGroupIds:
- sg-5d011027
ImageId: ami-0b33d91d
Ec2Instance3:
Type: AWS::EC2::Instance
Condition: Deploy3EC2
Properties:
InstanceType: t2.micro
SecurityGroupIds:
- sg-5d011027
ImageId: ami-0b33d91d
Outputs:
EC2Conditions:
Description: Number of deployed instances
Value: !Ref EnvType
Export:
Name: blablabla

这是我的#34; import-test-stack"
AWSTemplateFormatVersion: '2010-09-09'
Description: Import
Resources:
Ec2Instance1:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
SecurityGroupIds:
- sg-7309dd0a
ImageId: ami-70edb016
Ec2Instance2:
Type: AWS::EC2::Instance
Condition: ?????? <<<<<<<<<
Properties:
InstanceType: t2.micro
SecurityGroupIds:
- sg-7309dd0a
ImageId: ami-70edb016
&#13;
关于跨堆栈引用,所以我想在&#34; import-test-stack&#34;中部署Ec2Instance2。只有当我选择在之前的&#34; export-test-stack&#34;中部署三个实例时。怎么做?
因此,如果我选择部署三个实例,我想在&#34; import stack&#34;中使用条件。要部署另外两个实例,如果我选择部署两个实例,它将只在&#34; import-stack&#34;
中部署一个实例我知道条件如何工作,但仍然无法找到方法,如何在交叉引用堆栈中使用。
我知道这是一个愚蠢的例子,但我只想在尽可能简单的模板上进行测试。
答案 0 :(得分:0)
您有两种选择:继续使用分隔堆栈或将它们组合以创建nested stack.
使用嵌套堆栈,您可以使用一个堆栈的输出作为另一个堆栈的输入。
如果要继续使用分隔堆栈,请使用Fn::ImportValue
函数导入从另一个堆栈导出的输出值。
Exporting Stack Output Values页面已涵盖这两个角度。此外,如果您选择使用Fn::ImportValue
,cross-stack reference walkthrough可能对您有帮助。
答案 1 :(得分:0)
这将使您导入正确的值: Fn :: ImportValue:EC2条件
您也可以使用规则。您可以根据输出值来设置规则。