amazon-web-services - 如何在 AWS CloudFormation 的参数部分添加条件?
问题描述
所以我想要做的是,我定义了一个名为 EnvType 的参数,其中包含允许值测试或生产。
应该发生的是当用户选择其中一个环境测试或生产时,假设测试然后他应该能够选择另一个名为 InstanceType 的参数,其中允许的值将是下拉列表中的所有“t”类型实例,而创建堆栈。
如果用户选择生产作为EnvType,那么在称为InstanceType 的同一参数下允许的值必须是除't' 类型之外的所有实例类型,例如('m' 类型)。
rds 也必须如此。假设用户选择 EnvType 作为测试,则名为 DBInstanceType 的参数下允许的值必须是“db.t”类型实例,否则为“db.r”类型实例。
参数
Parameters:
EnvType:
Default: test
Type: String
AllowedValues:
- production
- test
InstanceType:
Type: String
AllowedValues: !FindInMap
- InstanceTypeMap
- !Ref EnvType
- instanceType
DBInstanceType:
Type: String
AllowedValues: !FindInMap
- InstanceTypeMap
- !Ref EnvType
- dbinstanceType
映射
InstanceTypeMap:
production:
instanceType: [m1.small, m1.medium, m1.large, m1.xlarge, m2.xlarge, m2.2xlarge, m2.4xlarge]
dbinstancetype: [db.r5.large, db.r5.xlarge]
test:
instanceType: [t1.micro, t2.nano, t2.micro, t2.small, t2.medium, t2.large]
dbinstancetype: [db.t2.small, db.t2.medium, db.t3.small]
资源
Resources:
WebServer:
Type: 'AWS::EC2::Instance'
Properties:
InstanceType: !Ref InstanceType
DBInstance:
Type: AWS::RDS::DBInstance
Properties:
DBInstanceClass: !FindInMap
- MyEnvironmentMap
- !Ref EnvType
- dbinstanceType
好吧,我知道模板无效,并且在 InstanceType 和 DBInstanceType 参数的允许值中容易出错,但我正在寻找这样做的替代方法。
请帮忙!!
解决方案
简单地说,这种功能在 CloudFormation (CFN) 中是不可能的。可悲的是,CFN 中没有其他选择。您必须为部署此类模板开发自定义解决方案。
推荐阅读
- python - 如何在这样的数据框中获得每个月的平均值?
- blockchain - 无法使用 Ganache GUI 连接到 Truffle 或 testrpc
- mysql - 数据库中的整数溢出
- python - 使用minidom python解析xml元素属性
- qt - 增加 QTcpSocket 的接收缓冲区大小
- angular - 在表单字段-Angular-ReactiveForms 中至少更改一个值之前,使用验证更新表单不起作用
- jenkins - docker 中的 jenkins 个人资料在哪里?我找不到它(/etc/sysconfig/jenkins)
- android - 我如何解决错误:无法运行 mksdcard sdk 工具。在 Windows 7 64 位
- wpf - 如何在 prism 7 中的 shell 之前显示登录屏幕?因为 app.xaml 中有 PrismApplication 而 app.xaml.cs 中没有 OnStartup() 方法
- r - 将来自 lm 的系数制成表格