0

Je continue à obtenir cette erreur sur CloudFormation:Pourquoi CloudFormation ne crée-t-il pas ma base de données?

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. 

J'ai pas d'objectif particulier pour VPC et son sous-réseau autre que de créer en toute sécurité et à la fourniture de mon application via CloudFormation. La base de données doit pouvoir parler à l'instance EC2. Idéalement, je serai également en mesure d'accéder en toute sécurité à la base de données en utilisant PgAdmin, mais ce n'est pas un deal-breaker.

Voici les lignes pertinentes des sections de mon fichier de configuration:

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 

Toute pensée sur pourquoi il me donne ce message d'erreur frustrant?

+0

Je suppose que cela peut se produire parce que d'abord vous lancez le RDS, puis vous créez le VPC? – error2007s

+0

Suggestion intéressante mais j'ai juste échangé l'ordre à la base de données de sous-réseau de sous-réseau de VPC et cela n'a fait aucune différence –

Répondre

1

Il me semble que vous êtes dans un EC2-VPC auquel un VPC par défaut est associé et que toutes les nouvelles instances de DB sont créées dans le VPC par défaut, sauf indication contraire.

Aller à la page RDS et recherchez

Supported Platforms 

Si les plates-formes prises en charge indique VPC, vérifiez la valeur par défaut VPC.

S'il vous plaît consulter cette page pour une explication détaillée: Check RDS VPC

Pour répondre à vos besoins, je vous suggère de créer la base de données dans le même VPC que votre instance EC2, mais peut-être dans un sous-réseau privé différent de l'isoler? Sinon, essayez de créer un nouveau sous-réseau dans le VPC par défaut existant. Pour obtenir la création d'instance de base de données dans un VPC, vous pouvez essayer les choses suivantes:

1) Créez un groupe de sous-réseau DB et attachez-lui des sous-réseaux. 2) Reliez le groupe de sous-réseaux DB ci-dessus à votre instance de base de données.

Par exemple:

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

S'il vous plaît laissez-moi savoir si vous rencontrez des problèmes.

+0

Merci. J'ai voté pour votre réponse car je pense que vous êtes sur la bonne voie, mais malheureusement, je ne peux pas tester et cocher tout de suite car je suis revenu de CloudFormation pour le moment. BTW il y avait aussi des problèmes avec des blocs CIDR invalides et chevauchant des plages d'adresses IP. –