Amazon web services 如何使用aws cloudformation向VPC添加RDS实例

Amazon web services 如何使用aws cloudformation向VPC添加RDS实例,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,当我手动启动RDS实例时,我能够分配我希望它成为其中一部分的VPC。我正在尝试使用AWS cloudformation创建一个堆栈,但是我没有看到API能够做到这一点。我可以在堆栈中创建我的VPC,然后为安全组(EC2和DB安全组)引用它,它们最终都是VPC的一部分,但RDS实例本身不是。是否有办法将VPC分配给RDS实例 以下是我的模板: { "AWSTemplateFormatVersion": "2010-09-09", "Metadata": { "AWS::CloudF

当我手动启动RDS实例时,我能够分配我希望它成为其中一部分的VPC。我正在尝试使用AWS cloudformation创建一个堆栈,但是我没有看到API能够做到这一点。我可以在堆栈中创建我的VPC,然后为安全组(EC2和DB安全组)引用它,它们最终都是VPC的一部分,但RDS实例本身不是。是否有办法将VPC分配给RDS实例

以下是我的模板:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Metadata": {
    "AWS::CloudFormation::Designer": {
      "30e03bfc-b61a-4d6c-89db-1b62b258a305": {
        "size": {
          "width": 80,
          "height": 80
        },
        "position": {
          "x": 700,
          "y": 170
        },
        "z": 0,
        "embeds": []
      }
    }
  },

  "Parameters": {

    "DBPreferredBkupWindow": {
      "Description"                 : "The daily time range (in UTC) during which automated backups are created, ideally off peak-hours.",
      "Type"                        : "String",
      "MinLength"                   : "1",
      "MaxLength"                   : "11",
      "AllowedPattern"              : "\\d[0-23]:\\d[0-59]-\\d[0-23]:\\d[0-59]",
      "Default"                     : "01:00-02:00"
    }
  },

  "Resources": {

    "VPC": {
      "Type": "AWS::EC2::VPC",
      "Properties": {
        "CidrBlock"                 : "172.16.0.0/16",
        "EnableDnsSupport"          : true
      }
    },

    "DB": {
      "Type": "AWS::RDS::DBInstance",
      "Properties": {
        "DBName"                    : "ems",
        "Engine"                    : "postgres",
        "EngineVersion"             : "9.4.7",
        "DBInstanceClass"           : "db.t1.micro",
        "DBInstanceIdentifier"      : "rltdb",
        "MasterUsername"            : "pgadmin",
        "MasterUserPassword"        : "pgadmin1",
        "AllocatedStorage"          : "100",
        "Iops"                      : "1000",
        "BackupRetentionPeriod"     : "7",
        "PreferredBackupWindow"     : { "Ref" : "DBPreferredBkupWindow" },
        "MultiAZ"                   : true,
        "PubliclyAccessible"        : false,
        "AutoMinorVersionUpgrade"   : false,
        "VPCSecurityGroups"         : [{ "Ref" : "SecurityGroup" } ]
      },

      "Metadata": {
        "AWS::CloudFormation::Designer": {
          "id": "30e03bfc-b61a-4d6c-89db-1b62b258a305"
        }
      }
    },

    "DBSecurityGroup": {
      "Type": "AWS::RDS::DBSecurityGroup",
      "Properties": {
        "EC2VpcId"                  : { "Ref" : "VPC" },
        "DBSecurityGroupIngress"    : { "EC2SecurityGroupName": { "Ref": "SecurityGroup"} },
        "GroupDescription"          : "Database Access"
      }
    },

    "SecurityGroup" : {
      "Type" : "AWS::EC2::SecurityGroup",
      "Properties" : {
        "VpcId"                     : { "Ref" : "VPC" },
        "GroupDescription"          : "Enable database access for application",
        "SecurityGroupIngress"      : [
          {"IpProtocol" : "tcp", "FromPort" : "5432", "ToPort" : "5432", "CidrIp" : "0.0.0.0/0"}
        ]
      }
    }
  }
}
您需要包括:

要与DB实例关联的DB子网组

如果没有DB子网组,则为非VPC DB实例

在VPC中使用子网创建一个连接,然后将其连接到DBInstance:

"DBSubnetGroupName": { "Ref": "MySubnetGroup" }

您必须在CloudFormation模板中创建一个
DBSubnetGroup
和至少两个子网

"subnet-1" : {
   "Type" : "AWS::EC2::Subnet",
   "Properties" : {
      "CidrBlock" : "172.16.1.0/24",
      "VpcId" : { "Ref" : "VPC" }
   }
},     

"subnet-2" : {
   "Type" : "AWS::EC2::Subnet",
   "Properties" : {
      "CidrBlock" : "172.16.2.0/24",
      "VpcId" : { "Ref" : "VPC" }
   }
},     

"DBSubnetGroup" : {
   "Type" : "AWS::RDS::DBSubnetGroup",
   "Properties" : {
      "SubnetIds" : [
          { "Ref" : "subnet-1" },
          { "Ref" : "subnet-2" }
      ],
   }
},
最后,您必须将DBSubnetGroup包含在“DB”对象中

"DBSubnetGroupName": { "Ref": "DBSubnetGroup" }