- Criação de modelos do AWS CloudFormation
- Uso de um modelo do AWS CloudFormation para criar e gerenciar uma pilha
- Uso do AWS CloudFormation Designer para criar e editar modelos
- Como trabalhar com a API do AWS CloudFormation
- Como trabalhar com recursos da AWS
- Bootstrapping de aplicativos e processamento de atualizações
- Uso pretendido e restrições
Os modelos do CloudFormation apresentam diversas vantagens:
- Trabalhe com um formato familiar: um modelo do CloudFormation é simplesmente um arquivo de texto em formato JSON (JavaScript Object Notation) ou YAML que descreve a infraestrutura da AWS necessária para executar um aplicativo ou um serviço juntamente com qualquer interconexão entre eles.
- Gerencie relações: os modelos capturam resumidamente as relações entre recursos, tais como instâncias EC2 que devem ser associadas a um load balancer do Elastic Load Balancing ou o fato de que um volume do EBS ter de estar na mesma zona de disponibilidade do EC2 que a instância à qual está associado.
- Utilize repetidamente: o uso de parâmetros no modelo permite que um único modelo seja utilizado para várias implantações da infraestrutura com diferentes valores de configuração, como quantas instâncias implantar para o aplicativo.
- Obtenha feedback útil: os modelos também fornecem propriedades de saída para comunicar resultados da implantação ou informações de configuração para o usuário. Por exemplo, quando instanciado, um modelo pode fornecer o URL do endpoint do Elastic Load Balancing que o cliente deve usar para se conectar ao aplicativo recém-instanciado.
- Evite colisões: todos os recursos da AWS em um modelo são identificados usando nomes lógicos, permitindo que várias pilhas sejam criadas a partir de um modelo sem o risco de criar colisões de nomes entre recursos na AWS.
- Escreva e execute: use qualquer método para executar uma pilha sem precisar registrar antecipadamente o modelo com o AWS CloudFormation.
- Visualize sua pilha: o CloudFormation Designer permite que você visualize seus modelos em um diagrama. Você pode visualizar os seus recursos da AWS e seus relacionamentos, e organizar seu layout de modo que o diagrama faça sentido para você. É possível editar os modelos usando a interface com a funcionalidade arrastar e soltar, e o editor integrado JSON. As modificações que você fizer no diagrama modificam automaticamente o JSON do modelo.
- Pesquise recursos: o AWS CloudFormation mantém uma cópia do modelo de pilha para que você possa utilizar o Console de Gerenciamento da AWS, as ferramentas da linha de comando ou as APIs para pesquisar as configurações de recurso exatas que foram aplicadas durante a criação da pilha.
- Automatize: você tem a opção de automatizar a geração de modelos utilizando sua linguagem de programação ou ferramenta preferida. Também é possível automatizar a criação de pilhas a partir dos modelos usando a API do CloudFormation, os AWS SDKs ou a ILC da AWS.
Um modelo tem a seguinte estrutura JSON de alto nível:
Comece a usar a AWS gratuitamente
Crie uma conta gratuitaOu faça login no console
Receba doze meses de acesso ao nível gratuito da AWS e aproveite os recursos do AWS Basic Support, como atendimento ao cliente 24x7x365 e fóruns de suporte, entre outros recursos.
{
"Description" : "A text description for the template usage",
"Parameters": {
// A set of inputs used to customize the template per deployment
},
"Resources" : {
// The set of AWS resources and relationships between them
},
"Outputs" : {
// A set of values to be made visible to the stack creator
},
"AWSTemplateFormatVersion" : "2010-09-09"
}
O modelo a seguir é um exemplo simples que mostra como criar uma instância EC2:
{
"Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",
"Parameters" : {
"KeyPair" : {
"Description" : "The EC2 Key Pair to allow SSH access to the instance",
"Type" : "String"
}
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyPair" },
"ImageId" : "ami-3b355a52"
}
}
},
"Outputs" : {
"InstanceId" : {
"Description" : "The InstanceId of the newly created EC2 instance",
"Value" : {
"Ref" : "Ec2Instance"
}
}
},
"AWSTemplateFormatVersion" : "2010-09-09"
}
Uma pilha é uma coleção de recursos resultantes da criação de uma instância de um modelo. Você cria uma pilha fornecendo um modelo e todos os parâmetros necessários ao AWS CloudFormation. Baseado no modelo e nas dependências especificadas nele, o AWS CloudFormation determina quais recursos da AWS precisam ser criados e em que ordem.
Para atualizar uma pilha, forneça um modelo com a configuração desejada de todos os recursos na pilha. É possível modificar as propriedades dos recursos existentes em sua pilha para reagir às alterações em seu ambiente ou nas novas exigências de aplicação. Por exemplo, você pode alterar os limiares de alarme em seus alarmes do AWS CloudWatch ou atualizar a execução do AMI em uma instância em sua pilha. O AWS CloudFormation se encarrega de reverter essas alterações nos diferentes recursos da pilha. Em muitos casos, as alterações serão feitas sem afetar o aplicativo em execução. Porém, se uma alteração não puder ser efetivada dinamicamente (como a atualização da AMI em uma instância do EC2), o AWS CloudFormation criará um novo recurso e o ligará novamente à pilha, apagando o recurso antigo quando o serviço determinar que a atualização completa foi bem-sucedida.
O AWS CloudFormation criará ou atualizará uma pilha completa. Se uma pilha não puder ser criada ou atualizada por inteiro, o AWS CloudFormation a reverterá. Para fins de depuração, a operação de reversão pode ser desabilitada e a criação ou atualização da pilha pode ser tentada novamente de forma manual mais tarde.
Também é possível usar o AWS CloudFormation Designer para criar ou modificar um modelo da pilha e, então, enviá-lo para o AWS CloudFormation para criar ou atualizar a pilha: O AWS CloudFormation Designer está disponível no Console de Gerenciamento da AWS.
O AWS CloudFormation pode ser facilmente acessado por meio do Console de Gerenciamento da AWS, que oferece a você uma interface da web com a funcionalidade apontar e clicar para implantar e gerenciar pilhas. Você pode criar, excluir e atualizar um aplicativo de dentro do Console de Gerenciamento da AWS em algumas etapas simples.
O AWS CloudFormation Designer é uma ferramenta visual que disponibiliza uma interface com o recurso arrastar e soltar para adicionar recursos a modelos. O CloudFormation Designer permite que você passe mais tempo projetando sua infraestrutura da AWS e menos tempo programando manualmente os seus modelos. Por exemplo, quando você adiciona ou remove recursos, o CloudFormation Designer modifica automaticamente o JSON subjacente para você. Você também pode usar o editor de texto integrado para especificar detalhes do modelo, como valores de propriedade do recurso e parâmetros de entrada. Leia a documentação para saber mais.
O AWS CloudFormation Designer faz parte do console do AWS CloudFormation. Você precisa fazer login com as suas credenciais da AWS para usar a ferramenta. Para usar o AWS CloudFormation Designer, acesse https://console.aws.amazon.com/cloudformation/designer. Os cenários a seguir destacam alguns dos recursos do AWS CloudFormation Designer.
Visualize recursos de modelo
A análise de arquivos de texto no formato JSON para entender que recursos estão no seu modelo e os relacionamentos entre eles pode ser uma tarefa difícil. Com o AWS CloudFormation Designer, você pode abrir qualquer modelo válido do AWS CloudFormation e a ferramenta visualiza todos os recursos do seu modelo como um diagrama. Você pode facilmente visualizar os recursos de modelo e como eles estão conectados sem ler o JSON. O AWS CloudFormation Designer inclui um editor de texto JSON para que você sempre consiga visualizar os detalhes do modelo, caso seja necessário.
Simplifique a criação de modelos
Quando você trabalha com recursos de modelo em um editor de texto, deve editar o JSON manualmente, o que pode ser cansativo e suscetível a erros. No AWS CloudFormation Designer, você trabalha com recursos de modo similar a como trabalha com diagramas. Você arrasta e solta novos recursos para adicioná-los ao seu modelo, e arrasta conexões entre os recursos para estabelecer relacionamentos. O AWS CloudFormation Designer modifica automaticamente o JSON. Além de visualizar seus recursos, o editor de texto integrado JSON disponibiliza um recurso de preenchimento automático para nomes de propriedade de recursos. Ao usar o AWS CloudFormation Designer, você pode passar menos tempo programando manualmente seus modelos e mais tempo projetando sua infraestrutura da AWS.
O AWS CloudFormation também fornece um conjunto simples de APIs que são fáceis de usar e muito flexíveis. Para obter uma lista completa das APIs disponíveis do AWS CloudFormation, consulte o guia de referência de APIs do AWS CloudFormation. Algumas das APIs usadas com mais frequência e suas funcionalidades estão listadas abaixo:
- CreateStack: inicia a criação de uma nova pilha. Os parâmetros de entrada para a chamada incluem o nome da pilha e um nome de arquivo (ou URL do Amazon S3) para o modelo de origem. Se o processo de criação da pilha for concluído com êxito, a pilha estará no estado CREATE_COMPLETE. Se a criação da pilha falhar, o AWS CloudFormation excluirá os recursos criados anteriormente, a menos que o usuário tenha especificado um marcador para reter esses elementos para depuração.
- ListStacks: lista todas as pilhas na conta. Você pode usá-la para visualizar o conjunto de pilhas e seus status atuais, tais como se a pilha está sendo criada ou atualizada.
- ListStackResources: lista todos os nomes de recursos da AWS e os identificadores que foram criados como parte da criação de uma pilha. Além de fornecer informações, essa chamada pode ser utilizada por um aplicativo compatível com o AWS CloudFormation para que ele compreenda o ambiente.
- DescribeStackEvents: lista todas as operações e eventos gerados pelo AWS CloudFormation em uma pilha para que você possa ver como a criação ou a exclusão estão progredindo.
- UpdateStack: inicia o processo de atualização de uma pilha existente. Os parâmetros de entrada da chamada incluem o nome da pilha e um nome de arquivo (ou URL do Amazon S3) para o modelo atualizado. Se o processo de atualização da pilha for concluído com êxito, a pilha estará no estado UPDATE_COMPLETE. Caso a atualização da pilha falhe, o AWS CloudFormation reverterá todas as alterações de recurso efetuadas para que a pilha volte ao estado descrito no modelo original.
O AWS CloudFormation também pode ser usado através dos AWS SDKs e do AWS CLI.
O AWS CloudFormation é integrado com o Amazon Simple Notification Service (Amazon SNS), permitindo que você receba notificações, à medida que a criação, atualização e a exclusão da pilha progridem. Além de fornecer o status, isso permite também que outros programas tomem conhecimento de eventos dentro do CloudFormation e respondam ou até mesmo participem do processo de configuração da pilha.
O modelo do AWS CloudFormation é projetado para potencializar sua experiência existente com a AWS. Cada recurso tem um conjunto de parâmetros com nomes idênticos aos nomes usados para criar os recursos por meio de suas APIs nativas. O trecho de modelo a seguir mostra como definir um Amazon EBS Volume. O nome lógico do volume no modelo é "myVolume" e seu tipo é "AWS::EC2::Volume". As propriedades parecerão muito familiares se os volumes do EBS tiverem sido usados anteriormente.
"myVolume" : {
"Type" : "AWS::EC2::Volume",
"Properties" : {
"Size" : "10",
"SnapshotId" : "snap-7b8fd361",
"AvailabilityZone" : "us-east-1a"
}
}
O AWS CloudFormation fornece uma série de números de scripts de auxílio que podem ser implantados às suas instâncias do EC2. Esses scripts fornecem uma maneira simples de ler metadados de recursos de sua pilha e utilizá-los para configurar seu aplicativo, implementar pacotes e arquivos à sua instância que está listada em seu modelo e reagir a atualizações de pilha como mudanças na configuração ou nas atualizações do seu aplicativo.
Os seguintes scripts estão disponíveis:
- cfn-get-metadata: recupera metadados associados aos recursos no modelo.
- cfn-init: baixa e instala os pacotes e arquivos descritos em seu modelo.
- cfn-signal: sinaliza para o fluxo de trabalho de criação da pilha que o aplicativo está operacional e pronto para receber o tráfego.
- cfn-hup: um daemon para ouvir as atualizações de pilha que foram iniciadas diretamente pelo console, pelas ferramentas da linha de comando ou pela API da AWS e executar ganchos específicos do aplicativo para reagir a essas alterações.
Você pode usar scripts do CloudFormation isoladamente ou em conjunto com o CloudInit, um recurso disponível no Amazon Linux AMI e em algumas outras AMIs com Linux. Para obter mais detalhes sobre inicialização de aplicativos e atualização de configurações, consulte os recursos do desenvolvedor do AWS CloudFormation.
O uso deste serviço está sujeito ao Acordo do Cliente da Amazon Web Services.