Conceitos do AWS CloudFormation - AWS CloudFormation

Conceitos do AWS CloudFormation

Ao usar o AWS CloudFormation, você trabalha com modelos e pilhas. Você cria modelos para descrever os recursos da AWS e as propriedades. Sempre que você cria uma pilha, o AWS CloudFormation provisiona os recursos descritos no modelo.

Modelos

Um modelo do AWS CloudFormation é um arquivo de texto formatado em JSON ou YAML. Você pode salvar esses arquivos com qualquer extensão, por exemplo .json, .yaml, .template ou .txt. O AWS CloudFormation usa esses modelos como esquemas para a criação dos recursos da AWS. Por exemplo, em um modelo, é possível descrever uma instância do Amazon EC2, como o tipo de instância, o ID da AMI, os mapeamentos de dispositivos de blocos e o nome do par de chaves do Amazon EC2. Sempre que cria uma pilha, você também deve especificar um modelo usado pelo AWS CloudFormation para criar o que você descreveu no modelo.

Por exemplo, caso você tenha criado uma pilha usando o modelo a seguir, o AWS CloudFormation provisiona uma instância com uma ami-0ff8a91507f77f867 ID da AMI, um t2.micro tipo de instância, um testkey nome do par de chaves e um volume do Amazon EBS.

exemplo JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A sample template", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867", "InstanceType" : "t2.micro", "KeyName" : "testkey", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeType" : "io1", "Iops" : "200", "DeleteOnTermination" : "false", "VolumeSize" : "20" } } ] } } } }

exemplo YAML

AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-0ff8a91507f77f867" InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

Também é possível especificar vários recursos em um único modelo e configurar esses recursos para que funcionem juntos. Por exemplo, é possível modificar o modelo anterior para incluir um Elastic IP (EIP – IP elástico) e associá-lo à instância Amazon EC2, conforme mostrado no seguinte exemplo:

exemplo JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A sample template", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867", "InstanceType" : "t2.micro", "KeyName" : "testkey", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeType" : "io1", "Iops" : "200", "DeleteOnTermination" : "false", "VolumeSize" : "20" } } ] } }, "MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : {"Ref": "MyEC2Instance"} } } } }

exemplo YAML

AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-0ff8a91507f77f867" InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 MyEIP: Type: AWS::EC2::EIP Properties: InstanceId: !Ref MyEC2Instance

Os modelos anteriores se baseiam em uma instância do Amazon EC2 única. No entanto, os modelos do AWS CloudFormation têm recursos adicionais que é possível usar para criar conjuntos complexos de recursos e reutilizar esses modelos em vários contextos. Por exemplo, é possível adicionar parâmetros de entrada cujos valores são especificados quando você cria uma pilha do AWS CloudFormation. Em outras palavras, você pode especificar um valor como o tipo de instância ao criar uma pilha, em vez de quando cria o modelo, o que facilita a reutilização do modelo em situações diferentes.

Para obter mais informações sobre a criação e os recursos do modelo, consulte Anatomia do modelo.

Para obter mais informações sobre como declarar recursos específicos, consulte Referência de tipos de propriedades e recursos da AWS.

Para começar a projetar os próprios modelos com o AWS CloudFormation Designer, vá até https://console.aws.amazon.com/cloudformation/designer.

Pilhas

Ao usar o AWS CloudFormation, você gerencia recursos relacionados como uma unidade única chamada de pilha. Você pode criar, atualizar e excluir um conjunto de recursos criando, atualizando e excluindo pilhas. Todos os recursos em uma pilha são definidos pelo modelo do AWS CloudFormation da pilha. Suponhamos que você tenha criado um modelo que inclui um grupo do Auto Scaling, um load balancer do Elastic Load Balancing e uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS). Para criar esses recursos, você cria uma pilha enviando o modelo que criou, e o AWS CloudFormation provisiona todos esses recursos para você. Você pode trabalhar com pilhas usando o console do , a API ou a CLI da AWS.

Para obter mais informações sobre como criar, atualizar ou excluir pilhas, consulte Trabalhar com pilhas.

Conjuntos de alterações

Caso precise fazer alterações nos recursos em execução em uma pilha, você atualiza a pilha. Antes de fazer alterações nos recursos, você pode gerar um conjunto de alterações, que é o resumo das alterações propostas. Os conjuntos de alterações permitem ver como as alterações podem afetar os recursos em execução, especialmente para recursos críticos, antes de implementá-las.

Por exemplo, se você alterar o nome de uma instância de banco de dados do Amazon RDS, o AWS CloudFormation irá criar um novo banco de dados e excluir o anterior. Você perderá os dados no banco de dados anterior, a menos que já tenha feito backup deles. Se gerar um conjunto de alterações, você verá que a alteração fará o banco de dados ser substituído, e poderá planejar de acordo antes de atualizar a pilha. Para obter mais informações, consulte Atualizar pilhas usando conjuntos de alterações.