微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在cloudformation中为`AWS :: RDS :: DBInstance`提供变量?

如何解决如何在cloudformation中为`AWS :: RDS :: DBInstance`提供变量?

我正在使用cloudformation向AWS预置RDS aurora,并在模板中使用AWS::RDS::DBClusterAWS::RDS::DBInstance资源。我有不同的环境,例如devuatprod。每个环境在群集下具有不同数量数据库实例。如何在cloudformation模板中将数据库实例的数量设置为变量?

以下是我的AWS::RDS::DBInstance模板。如您所见,模板中有三个实例。它仅用于生产,不用于开发。如何使用参数指示实例数?例如,在dev中部署1个实例,在prod中部署3个实例。

auroraDBFirstInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBInstanceClass: ${self:provider.postgresqlInstanceClass}
      Engine: aurora-postgresql
      EngineVersion: ${self:provider.postgresqlEngineVersion}
      DBClusterIdentifier: !Ref auroraDBCluster
      PubliclyAccessible: ${self:provider.publiclyAccessible}

auroraDBSecondInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBInstanceClass: ${self:provider.postgresqlInstanceClass}
      Engine: aurora-postgresql
      EngineVersion: ${self:provider.postgresqlEngineVersion}
      DBClusterIdentifier: !Ref auroraDBCluster
      PubliclyAccessible: ${self:provider.publiclyAccessible}

auroraDBThirdInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBInstanceClass: ${self:provider.postgresqlInstanceClass}
      Engine: aurora-postgresql
      EngineVersion: ${self:provider.postgresqlEngineVersion}
      DBClusterIdentifier: !Ref auroraDBCluster
      PubliclyAccessible: ${self:provider.publiclyAccessible}

解决方法

您可以将其添加为参数并在运行堆栈时传递,甚至可以进行如下映射:

Environment:
    Type: String
    AllowedValues:
      - dev
      - uat
      - prod
Mappings:
  EnvironmentToDb
    dev: 
      Cluster: 1
    uat: 
      Cluster: 2
    prod: 
      Cluster: 3

然后您可以使用以下命令引用它: DBClusterIdentifier: !FindInMap [EnvironmentToDb,!Ref 'Environment',Cluster]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。