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 suas respectivas propriedades. Sempre que você cria uma pilha, o CloudFormation provisiona os recursos descritos no modelo.

Modelos

Um modelo do 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 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 CloudFormation para criar o que você descreveu no modelo.

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

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 } } ] } } } }

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 endereço IP elástico (EIP) e associá-lo à instância Amazon EC2, conforme mostrado no seguinte 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" } } } } }

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 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 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 seus próprios modelos com o AWS CloudFormation Designer, acesse https://console.aws.amazon.com/cloudformation/designer.

Pilhas

Ao usar o 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 CloudFormation dela. 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 CloudFormation provisiona todos esses recursos para você. Você pode trabalhar com pilhas usando o console do CloudFormation, a API ou a AWS CLI.

Para obter mais informações sobre como criar, atualizar ou excluir pilhas, consulte Como 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 CloudFormation 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.