当存储类型:io1 时在 cloudformation 中使用 Iops 属性,当存储类型:gp2 时不使用

Use Iops property in cloudformation when StorageType : io1 and donot use when Storage type : gp2

我创建了一个模板来使用 Cloudformation 配置 RDS。在创建 RDS 时我们有两个选项 io1,gp2 当我们使用 gp2 时我们不需要定义 iops 但当使用 io1 时我们需要定义 iops。 我可以使用 io1,但 gp2 显示错误:-

遇到 属性 Iops

的非数值

我的模板片段

  StorageType:

    Description: choose the storage type gp2 for 'General purpose SSD' & io1 for 'IOPS SSD'. 

    Default: "gp2"

    Type: String

    AllowedValues: ["gp2","io1"]

  Conditions:

      iops: !Equals [!Ref StorageType, "io1"]

      gp2: !Equals [!Ref StorageType, "gp2"]

  DB:

    Type: AWS::RDS::DBInstance

    Properties:

      DBInstanceIdentifier: !Sub ${AWS::StackName} 

      DBName: !Ref 'DBName'

      AllocatedStorage: !Ref 'Storage'

      DBInstanceClass: !Ref 'InstanceType'

      StorageType: !Ref StorageType

      ****Iops: !If [iops, !Ref iops, "AWS::NoValue"]****  

      StorageEncrypted: !Ref Encryption 

      Engine: postgres

      EngineVersion: 11.2

      Port: !Ref PortNo

      MasterUsername: !Ref DBUser

      MasterUserPassword: !Ref DBPassword

      DBSubnetGroupName: !Ref RDSSubnetGroup

      VPCSecurityGroups: [!Ref SecurityGroup]

      DBParameterGroupName: !Ref RDSParamGroup

      MultiAZ: !Ref MultiAz

      PubliclyAccessible: !Ref PublicAccessibelity

提前致谢

正确的语法是:

Iops: !If [iops, !Ref iops, !Ref "AWS::NoValue"]

文档: