我正在尝试构建一个 CLoudFormation 脚本,该脚本可同时将实例和数据库启动到 vpc 中。问题是数据库需要两个可用区,所以我创建了第二个子网,现在我只需要在“MyDBSubnetGroup”变量中引用两个子网物理 ID。我可以获得我创建的子网的逻辑 ID,但不知道如何引用这些物理 ID。有谁知道吗?谢谢!!
这是我的代码:
"MyDBSubnetGroup" : {
"Type" : "AWS::RDS::DBSubnetGroup",
"Properties" : {
"DBSubnetGroupDescription" : "Subnets available for the RDS DB Instance",
"SubnetIds" : { "Fn::Join" : [ " ", [{"Ref" : "PublicSubnetAZ1"}, ", ", {"Ref" : "PublicSubnetAZ2"}, " " ]]}
}
},
最佳答案
我遇到了同样的问题,在与 AWS 支持人员合作后,我了解到字符串列表并不意味着我们最初的想法。此外,如果您要将数据库放置在 VPC 内,则不得使用 AWS::RDS::DBSecurityGroup
对象。
这是一个完整的示例,我花了一段时间才让它工作:
"dbSubnetGroup" : {
"Type" : "AWS::RDS::DBSubnetGroup",
"Properties" : {
"DBSubnetGroupDescription" : "Availability Zones for RDS DB",
"SubnetIds" : [ { "Ref" : "subnetPrivate1" },
{ "Ref" : "subnetPrivate2" } ]
}
},
"dbInstance" : {
"Type" : "AWS::RDS::DBInstance",
"Properties" : {
"DBInstanceIdentifier" : { "Fn::Join" : [ "",
[ { "Ref" : "AWS::StackName" },
"DB" ] ] },
"DBName" : "dbname",
"DBSubnetGroupName" : { "Ref" : "dbSubnetGroup" },
"MultiAZ" : "true",
"AllocatedStorage" : "8",
"BackupRetentionPeriod" : "0",
"DBInstanceClass" : "db.m1.medium",
"Engine" : "postgres",
"MasterUserPassword" : "masteruserpassword",
"MasterUsername" : "masterusername",
"VPCSecurityGroups" : [ { "Ref" : "sgVpc" }, { "Ref" : "sgDB" } ]
}
},
关于amazon-web-services - 如何构造一串物理子网 ID 来在 cloudformation 脚本中动态创建数据库子网组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16909055/