Enquanto sua pilha está em execução, dê uma olhada nas guias "Eventos" e "Recursos". Os eventos mostrarão quando o seu VPC está sendo criado e quando ele foi criado com sucesso. Quando o último recurso na sua pilha é criado, o status da pilha mudará para criado com sucesso.
Você tem algum erro? A pilha mostrará um status de criação com falha. Os problemas encontrados nesse momento são não-sintáticos, geralmente relacionados à lógica do que está tentando criar. Use a guia Eventos para encontrar o erro mais rapidamente. Eu achei a maior parte do tempo que a mensagem é clara o suficiente para me guiar para o problema, e definitivamente identifica o recurso em questão.
Um conceito importante a ser observado é que, se houver algum erro ao criar sua pilha, a pilha inteira (todos os recursos) será revertida. Esse comportamento pode ser substituído, mas geralmente é bom! Geralmente é muito mais fácil começar cada corrida em uma pista limpa.
Se sua pilha falhar, ela ainda será exibida na lista de pilhas, mesmo que não haja recursos na pilha. Isso é feito para lhe dar tempo para investigar o erro. Use a ação 'delete stack' quando tiver determinado o problema.
Caso tenha o AWS CLI instalado e já esteja configurado com sua chave de acesso e chave secreta (qualquer região) e SE seu prompt de comando estiver localizado no mesmo diretório que seu arquivo YML, poderá executar este comando:
Caso tenha algum erro sintático, ele será imediatamente apresentado. Corrija isso antes de continuar. Geralmente, os erros resultam do uso de tabs em vez de espaços, espaços em locais incomuns, = em vez de : ou caracteres especiais incorporados pelo editor que está usando.
NO ENTANTO, nem todos podem ser descobertos pelo CloudFormation imediatamente. Pode ser que encontre um erro não-sintático (por exemplo, permissões) vários minutos em uma criação de pilha. Quando isso acontecer, precisará verificar o status periodicamente para detectar problemas. Uma alternativa conveniente é aguardar que a pilha termine ou elimine erros com esta função:
Verifique o VPC: De dentro do console de gerenciamento, vá para a seção VPC. Lá encontrará o seu VPC na lista, com o nome que forneceu. Claro, não há nada neste VPC, mas vamos chegar a esse próximo. Caso esteja curioso, não há custo para este VPC, ou o uso do CloudFormation, embora isso mude abaixo (veja a seção NAT).
Antes de prosseguirmos no nosso modelo, vamos experimentar atualizar a pilha. Um dos recursos fantásticos do CloudFormation é a capacidade de modificar uma pilha com base nas alterações feitas em um modelo. Para demonstrar isso, retorne ao seu modelo e faça uma ou mais das seguintes alterações:
Selecione a pilha existente na lista e escolha a ação "Atualizar pilha". Selecione a opção para enviar seu próprio modelo e clique em próximo. Continue pressionando próximo até chegar na tela que pede para criar um conjunto de mudanças. O conjunto de mudanças é literalmente as alterações que o CloudFormation pretende aplicar aos seus recursos. O CloudFormation pode fazer algumas alterações com facilidade, mas algumas exigem que os recursos existentes sejam excluídos e recriados. Escolha a opção final para executar o conjunto de alterações e observe as alterações feitas.
Nossa pilha é pequena, então a atualização deve levar apenas alguns minutos. É possível que encontre um erro, se isso acontecer, o resultado será ainda mais fascinante, pois o CloudFormation reverte sua pilha para o formato anterior. Erros podem acontecer por vários motivos, como quando uma exclusão/recriação de um recurso afetaria outro recurso fora da pilha.
Um conceito nativo da nuvem para se sentir confortável é que os Recursos são Descartáveis. Podemos criar e excluir a pilha sempre que desejarmos agora que temos nosso modelo.
AWS::EC2::InternetGateway: Nosso VPC não poderá interagir com a internet pública sem ele. É importante notar que não precisa conectar um VPC à Internet, muitas organizações criam VPCs totalmente desconectados do mundo público, utilizando conexões VPN ou AWS Direct Connect para se conectar exclusivamente a suas redes locais existentes.
VPCGatewayAttachment: Mais interessante é o recurso AttachGateway. Este é o gancho real entre o VPC e o InternetGateway. Observe as propriedades; o VpcId faz referência ao recurso VPC definido acima e o InternetGatewayId faz referência ao nosso InternetGateway. Quando o CloudFormation executa uma pilha, ele tentará criar todos os recursos simultaneamente. No entanto, a função !Ref implica uma ordenação, o CloudFormation criará o VPC e o InternetGateway simultaneamente, mas ambos devem estar completos antes de usá-los para criar o anexo.
!Ref: Como mencionado anteriormente, essa é a função "referência" do CloudFormation incorporada. Esta é a maneira principal pela qual os recursos se referem uns aos outros.
Mais tarde, quando executar esse modelo, descobrirá que leva vários segundos para criar esses três primeiros recursos, especialmente o anexo. Esse atraso se tornará um problema mais tarde. Não poderemos fazer nenhuma interação com a Internet pública até que o anexo seja concluído. Aguarde o uso de "DependsOn" mais tarde para resolver esse problema.