繁体   English   中英

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

[英]How can I provide a variable for `AWS::RDS::DBInstance` in cloudformation?

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

下面是我的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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM