0

Я получаю эту ошибку на CloudFormation:Почему 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. 

У меня нет никакой особой цели для VPC и его подсети, кроме как для безопасного создания и предоставления моего приложения с помощью CloudFormation. База данных должна иметь возможность разговаривать с экземпляром 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

Я предполагаю, что это может произойти, потому что сначала вы запускаете RDS и затем создаете VPC? – error2007s

+0

Интересное предложение, но я просто заменил заказ на базу подсети подсети VPC, и это не имело значения. –

ответ

1

Мне кажется, что вы находитесь в EC2-VPC, который связан с ним по умолчанию, и все новые экземпляры DB создаются в VPC по умолчанию, если вы не указали иначе.

Перейти на страницу RDS и искать

Supported Platforms 

Если Поддерживаемые платформы указывает VPC, проверьте по умолчанию VPC.

Пожалуйста, смотрите на этой странице для детального объяснения: Check RDS VPC

Чтобы удовлетворить ваши требования, я хотел бы предложить, чтобы создать базу данных в том же VPC, как экземпляр EC2, но, возможно, в другой частной подсети, чтобы изолировать его? Или иначе попробуйте создать новую подсеть в существующем VPC по умолчанию. В конце концов, это ваш призыв к тому, как вы хотите это сделать, но чтобы добиться создания экземпляра DB в VPC, вы можете попробовать следующие вещи:

1) Создайте группу подсети базы данных и присоедините к ней подсетей. 2) Прикрепите приведенную выше группу подсети DB к экземпляру БД.

Например:

 "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" 
    }, 

Пожалуйста, дайте мне знать, если вы сталкиваетесь любые вопросы.

+0

Спасибо. Я проголосовал за ваш ответ, поскольку я думаю, что вы на правильном пути, но, к сожалению, я не могу проверить и отметить его прямо сейчас, пока я отступил от CloudFormation. Кстати, были также проблемы с недопустимыми блоками CIDR и перекрывающимися диапазонами IP-адресов. –

Смежные вопросы