我一直在CloudFormation上收到此错误:
Cannot create a db.t2.small database instance because no subnets exist
in availability zones with sufficient capacity for VPC and storage
type : standard for db.t2.small.
Please first create at least one new subnet; choose from these
availability zones: us-west-2b, us-west-2a, us-west-2c.
除了通过CloudFormation安全地创建和配置我的应用程序之外,我没有为VPC及其子网设定特定目标。数据库必须能够与EC2实例通信。理想情况下,我也可以使用PgAdmin安全地访问数据库,但这不是一个交易破坏者。
以下是配置文件各部分的相关行:
DatabaseInstance:
Type: AWS::RDS::DBInstance
Properties:
AllocatedStorage: 1
DBInstanceClass: db.t2.small
PubliclyAccessible: no
VirtualPrivateNetwork:
Type: "AWS::EC2::VPC"
Properties:
CidrBlock: 10.0.0.0/16
PrivateSubnet:
Type: "AWS::EC2::Subnet"
Properties:
AvailabilityZone: us-west-2b
CidrBlock: 10.0.1.0/24
VpcId:
Ref: VirtualPrivateNetwork
PublicSubnet:
Type: "AWS::EC2::Subnet"
Properties:
AvailabilityZone: us-west-2b
CidrBlock: 10.0.0.1/24
VpcId:
Ref: VirtualPrivateNetwork
有关为什么它会给我这个令人沮丧的错误消息的任何想法?
答案 0 :(得分:1)
在我看来,你在EC2-VPC中有一个与之关联的默认VPC,除非你另有说明,否则所有新数据库实例都是在默认的VPC中创建的。
转到RDS页面并查找
Supported Platforms
如果支持的平台指示VPC,请检查默认VPC。
请查看此页面以获取详细说明:Check RDS VPC
为了满足您的要求,我建议您在与EC2实例相同的VPC中创建数据库,但可能在不同的私有子网中隔离它?或者尝试在现有的默认VPC中创建新子网。最后,您可以了解如何进行此操作,但要在VPC中实现数据库实例创建,您可以尝试以下方法:
1)创建数据库子网组并为其附加子网。 2)将上面的数据库子网组连接到数据库实例。
例如:
"PrivateSubnet2":{
"Type":"AWS::EC2::Subnet",
"Properties":{
"VpcId":{
"Ref":"VirtualPrivateNetwork"
},
"CidrBlock":"10.0.3.0/24"
"AvailabilityZone":"us-west-2c"
}
},
"myDBSubnetGroup":{
"Type":"AWS::RDS::DBSubnetGroup",
"Properties":{
"DBSubnetGroupDescription":"RDS subnet group",
"SubnetIds":[
{
"Ref":"PrivateSubnet"
},
{
"Ref":"PrivateSubnet2"
}
]
}
},
DatabaseInstance:
Type: AWS::RDS::DBInstance
Properties:
AllocatedStorage: 1
DBInstanceClass: db.t2.small
PubliclyAccessible: no
"DBSubnetGroupName":{
"Ref":"myDBSubnetGroup"
},
如果您遇到任何问题,请与我们联系。