Amazon web services 如何使用aws cloudformation向VPC添加RDS实例
当我手动启动RDS实例时,我能够分配我希望它成为其中一部分的VPC。我正在尝试使用AWS cloudformation创建一个堆栈,但是我没有看到API能够做到这一点。我可以在堆栈中创建我的VPC,然后为安全组(EC2和DB安全组)引用它,它们最终都是VPC的一部分,但RDS实例本身不是。是否有办法将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
{
"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" }