Como o AWS CloudFormation funciona? - AWS CloudFormation

Como o AWS CloudFormation funciona?

Quando você cria uma pilha, o AWS CloudFormation faz chamadas do serviço subjacente para a AWS para provisionar e configurar seus recursos. O CloudFormation pode executar apenas as ações que você tem permissão para executar. Por exemplo, para criar instâncias do EC2 usando o CloudFormation, você precisa ter permissões para criar instâncias. Você precisará de permissões semelhantes para encerrar instâncias ao excluir pilhas com instâncias. Você usa o AWS Identity and Access Management (IAM) para gerenciar permissões.

As chamadas que o CloudFormation faz são todas declaradas por seu modelo. Por exemplo, suponha que você tem um modelo que descreve uma instância EC2 com um tipo de instância t2.micro. Quando você usa esse modelo para criar uma pilha, o CloudFormation chama a API de criação de instância do Amazon EC2 e especifica o tipo de instância como t2.micro. O diagrama a seguir resume o fluxo de trabalho do CloudFormation para a criação de pilhas.

  1. Use o AWS CloudFormation Designer ou seu próprio editor de texto para criar ou modificar um modelo de CloudFormation no formato JSON ou YAML. Você também pode optar por usar um modelo fornecido. O modelo de CloudFormation descreve os recursos que você deseja e suas configurações. Por exemplo, suponha que você deseje criar uma instância EC2. Seu modelo pode declarar uma instância Amazon EC2 e descrever suas propriedades, conforme mostrado no exemplo a seguir:

    exemplo JSON
    { "AWSTemplateFormatVersion": "2010-09-09", "Description": "A simple EC2 instance", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro" } } } }
    exemplo YAML
    AWSTemplateFormatVersion: 2010-09-09 Description: A simple EC2 instance Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro
  2. Salve o modelo localmente ou em um bucket do Amazon S3. Se você tiver criado um modelo, salve-o com qualquer extensão de arquivo, como .json, .yaml ou .txt.

  3. Crie uma pilha do CloudFormation especificando o local de seu arquivo de modelo, como um caminho em seu computador local ou um URL do Amazon S3. Se o modelo contiver parâmetros, você poderá especificar valores de entrada ao criar a pilha. Os parâmetros permitem que você passe valores para seu modelo, para que possa personalizar seus recursos toda vez que você criar uma pilha.

    É possível criar pilhas usando o console do CloudFormation, a operação da API CreateStack ou o comando create-stack da AWS CLI.

    nota

    Se você especificar um arquivo de modelo armazenado localmente, o CloudFormation o carregará em um bucket do S3 na sua conta da AWS. O CloudFormation cria um bucket para cada região na qual você carrega um arquivo de modelo. Os buckets são acessíveis a qualquer pessoa com permissões do Amazon Simple Storage Service (Amazon S3) na sua conta da AWS. Se um bucket criado pelo CloudFormation já estiver presente, o modelo será adicionado a esse bucket.

    É possível utilizar seu próprio bucket e gerenciar suas permissões carregando modelos manualmente no Amazon S3. Em seguida, sempre que você criar ou atualizar uma pilha, especifique o URL do Amazon S3 de um arquivo de modelo.

O CloudFormation provisiona e configura os recursos por meio de chamadas aos serviços da AWS que são descritos no seu modelo.

Depois que todos os recursos foram criados, o CloudFormation informa que sua pilha foi criada. Em seguida, você pode começar a usar os recursos de sua pilha. Se houver falha na criação da pilha, o CloudFormation reverterá as alterações excluindo os recursos que ele criou.

Atualizar uma pilha com conjuntos de alterações

Quando precisar atualizar os recursos da pilha, você poderá modificar o modelo da pilha. Você não precisa criar uma nova pilha e excluir a antiga. Para atualizar uma pilha, crie um conjunto de alterações enviando uma versão modificada do modelo da pilha original, diferentes valores de parâmetros de entrada ou ambos. O CloudFormation compara o modelo modificado com o modelo original e gera um conjunto de alterações. O conjunto de alterações lista as alterações propostas. Depois de revisar as alterações, você pode iniciar o conjunto de alterações para atualizar sua pilha ou pode criar um novo conjunto de alterações. O diagrama a seguir resume o fluxo de trabalho da atualização de uma pilha.

Importante

As atualizações podem causar interrupções. Dependendo do recurso e das propriedades que você está atualizando, uma atualização pode interromper ou até substituir um recurso existente. Para ter mais informações, consulte Atualizações de pilhas do AWS CloudFormation.

  1. Você pode modificar um modelo de pilha do CloudFormation usando o AWS CloudFormation Designer ou um editor de texto. Por exemplo, se você desejar alterar o tipo de instância de uma instância EC2, altere o valor da propriedade InstanceType no modelo original da pilha.

    Para ter mais informações, consulte Modificar um modelo de pilha.

  2. Salve o modelo do CloudFormation localmente ou em um bucket do S3.

  3. Crie um conjunto de alterações especificando a pilha que você deseja atualizar e o local do modelo modificado, como um caminho no seu computador local ou um URL do Amazon S3. Se o modelo contiver parâmetros, você poderá especificar valores ao criar o conjunto de alterações.

    Para obter mais informações sobre como criar conjuntos de alterações, consulte Atualizar pilhas usando conjuntos de alterações.

    nota

    Se você especificar um modelo armazenado em seu computador local, o CloudFormation carregará esse modelo automaticamente em um bucket do S3 na sua Conta da AWS.

  4. Visualize o conjunto de alterações para verificar se o CloudFormation executará as alterações que você espera. Por exemplo, verifique se o CloudFormation substituirá todos os recursos cruciais da pilha. Você pode criar quantos conjuntos de alterações precisar até ter incluído as alterações desejadas.

    Importante

    Os conjuntos de alterações não indicam se a atualização da pilha será bem-sucedida. Por exemplo, um conjunto de alterações não verifica se você irá ultrapassar a quota de uma conta, se você está atualizando um recurso que não oferece suporte a alterações ou se você tem permissões suficientes para modificar um recurso, o que pode provocar uma falha na atualização da pilha.

  5. Inicie o conjunto de alterações que você deseja aplicar à sua pilha. O CloudFormation atualiza a pilha atualizando apenas os recursos que você modificou e sinaliza que sua pilha foi atualizada com êxito. Se houver falha na atualização da pilha, o CloudFormation reverterá as alterações para restaurar a pilha para o estado de funcionamento conhecido mais recente.

Excluir uma pilha

Ao excluir uma pilha, você especifica a pilha a ser excluída, e o CloudFormation faz a exclusão dela e de todos os respectivos recursos. É possível excluir pilhas usando o console do CloudFormation, a operação da API DeleteStack ou o comando delete-stack da AWS CLI.

Se quiser excluir uma pilha, mas manter alguns recursos da pilha, você poderá usar uma política de exclusão para reter esses recursos.

Depois que todos os recursos forem excluídos, o CloudFormation sinalizará que a pilha foi excluída com êxito. Se o CloudFormation não puder excluir um recurso, a pilha não será excluída. Todos os recursos que não foram excluídos permanecerão até que você possa excluir a pilha com êxito.

Recursos adicionais do

  • Para mais informações sobre como criar modelos do CloudFormation, consulte Anatomia do modelo.