【问题标题】:How to add conditions in Parameters section in AWS CloudFormation?如何在 AWS CloudFormation 的参数部分添加条件?
【发布时间】: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


    【解决方案1】:

    简单地说,这种功能在 CloudFormation (CFN) 中不可能。可悲的是,CFN 中没有其他选择。您必须为部署此类模板开发自定义解决方案。

    【讨论】:

    • 您能否指导我如何为我的用例开发自定义解决方案?
    • @SaiPranav 遗憾的是我不能。它的用例特定,没有一种解决方案可以适合所有可能的场景。
    • 好的,不用担心,无论如何感谢您的回复!
    • @SaiPranav 没问题。无论如何,如果答案有帮助,我们将不胜感激。
    猜你喜欢
    • 2021-12-16
    • 2022-01-19
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 2020-08-29
    相关资源
    最近更新 更多