【发布时间】:2021-02-06 13:50:21
【问题描述】:
所以我想要做的是,我定义了一个名为 EnvType 的参数,其中包含允许的值 test 或 production。
当用户选择这些环境之一测试或生产时应该发生什么,比如说测试 那么他应该能够选择另一个名为 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 参数的允许值中容易出错,但我正在寻找替代方法。
请帮忙!!
【问题讨论】:
标签: amazon-web-services amazon-ec2 yaml amazon-cloudformation aws-cloudformation-custom-resource