3

我正在尝试构建一个 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"}, " " ]]}
      }
    },
4

2 回答 2

4

我遇到了同样的问题,在与 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" } ]
     }
},
于 2013-12-27T15:43:24.150 回答
2

如果您映射子网 ID,您可以使用类似的方式访问它们。

        "AWSRegionSubnet":{
        "us-east-1":{
            "RDSSubnets":[
                "subnet-aaaaaaaa",
                "subnet-bbbbbbbb"
            ]

        },
        "us-west-2":{
            "RDSSubnets":[
                "subnet-cccccccc",
                "subnet-dddddddd"
            ]
        }
    }

        "RDSSubnet":{
        "Type":"AWS::RDS::DBSubnetGroup",
        "Properties":{
            "DBSubnetGroupDescription":"Some cool notes here",
            "SubnetIds":{
                "Fn::FindInMap":[
                    "AWSRegionSubnet",
                    {
                        "Ref":"AWS::Region"
                    },
                    "RDSSubnets"
                ]
            }
        }
    }
于 2014-01-29T16:50:04.407 回答