Como especificar a VPC e a sub-rede necessárias no modelo do AWS CloudFormation

4

Sou novo nos serviços da Amazon e particularmente no CloudFormation.

Então, comecei a ler em "Introdução ao CloudFormation", no site link do site e agora estou tentando iniciar o exemplo de link do CloudFormation como introdução do wiki descrito.

Mas antes eu removi o VPC padrão e adicionei um novo (10.0.0.0/16) e criei uma nova sub-rede - 10.0.0.0/24. De acordo com a AWS docs, não posso definir meu próprio VPC como padrão e agora o modelo do CloudFormation, que descrevi acima, não pode ser iniciado e vejo esse erro:

DeacordocomapáginadaAWS link , posso corrigir esse problema descrevendo meu novo VPC, mas não sei porque fazer isso correto.

Talvez você possa me ajudar?

    
por ipeacocks 23.10.2015 / 11:19

1 resposta

7

Se você quiser continuar usando a VPC padrão excluída, entre em contato com o suporte da AWS para criá-la novamente. Os recursos da AWS do modelo que você está usando dependem dele.

Caso contrário, você terá que personalizar um pouco para que possa ser usado com seus VPCs não padrão. Há alterações sugeridas:

0) Passe seu ID de VPC e seus IDs de sub-rede como parâmetros do CloudFormation:

    "myVPC": {
        "Description" : "Id of my VPC",
        "Type"        : "String",
        "Default"     : "vpc-XXXXXXXX"
    },

    "MySubnet": {
        "Description" : "My subnet from my VPC",
        "Type": "String",
        "Default": "subnet-YYYYYYYY"
    },      

    "RDSSubnets": {
        "Description" : "RDS subnets from my VPC",
        "Type": "CommaDelimitedList",
        "Default": "subnet-YYYYYYY1,subnet-YYYYYY2"
    },      

1) Os grupos de segurança precisam ser criados em sua nova VPC, identificados pelo ID da VPC:

"DBSecurityGroup": {
  "Type": "AWS::RDS::DBSecurityGroup",
  "Properties": {
===>>> "EC2VpcId" : { "Ref" : "myVPC" }, <<<====
       "DBSecurityGroupIngress": { "EC2SecurityGroupName": { "Ref": "WebServerSecurityGroup"} },
       "GroupDescription"      : "Frontend Access"
  }
},

"WebServerSecurityGroup" : {
  "Type" : "AWS::EC2::SecurityGroup",
  "Properties" : {
===>>> "VpcId" : {"Ref" : "myVPC"}, <<<====
       "GroupDescription" : "Enable HTTP access via port 80 and SSH access",
       "SecurityGroupIngress" : [
         {"IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0"},
         {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation"}}
       ]
  }
}

2) altere sua instância do EC2 para usar sua sub-rede VPC1:

"WebServer": {
  "Type": "AWS::EC2::Instance",
  ...
  "Properties": {
     "SubnetId": { "Ref": "MySubnet1" },
  ...

3) Crie o grupo de sub-redes RDS DB com suas sub-redes VPC dedicadas para RDS (você precisa criar uma sub-rede na VPC em pelo menos duas das Zonas de disponibilidade da região onde a VPC existe):

"MyDBSubnetGroup" : {
  "Type" : "AWS::RDS::DBSubnetGroup",
  "Properties" : {
    "DBSubnetGroupDescription" : "Subnets available for the RDS DB Instance",
    "SubnetIds" : { "Ref" : "RDSSubnets" },
  }
},

4) altere sua instância do RDS para usar sua sub-rede e grupo de segurança de VPC (substitua o parâmetro DBSecurityGroups por VPCSecurityGroups ):

"DBInstance" : {
  "Type": "AWS::RDS::DBInstance",
  "Properties": {
      "DBSubnetGroupName" : { "Ref" : "MyDBSubnetGroup" },
      "VPCSecurityGroups" : [ { "Ref" : "DBSecurityGroup" } ],
      ...

Você pode encontrar mais detalhes sobre parâmetros usados na documentação da AWS:

por 23.10.2015 / 12:37