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. Observe que o AWS CloudFormation pode executar apenas as ações que você tem permissão para executar. Por exemplo, para criar instâncias EC2 usando o AWS 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 AWS 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 t1.micro. Quando você usa esse modelo para criar uma pilha, o AWS CloudFormation chama a API de criação de instância do Amazon EC2 e especifica o tipo de instância como t1.micro. O diagrama a seguir resume o fluxo de trabalho do AWS CloudFormation para a criação de pilhas.

  1. Você pode projetar um modelo do AWS CloudFormation (um documento em formato JSON ou YAML) no AWS CloudFormation Designer ou escrever um em um editor de texto. Você também pode optar por usar um modelo fornecido. O modelo descreve os recursos que você deseja e suas configurações. Por exemplo, suponha que você deseje criar uma instância EC2. O modelo pode declarar uma instância EC2 e descrever suas propriedades, conforme mostrado no exemplo a seguir:

    exemplo Sintaxe do JSON

    { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A simple EC2 instance", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867", "InstanceType" : "t1.micro" } } } }

    exemplo Sintaxe do YAML

    AWSTemplateFormatVersion: '2010-09-09' Description: A simple EC2 instance Resources: MyEC2Instance: Type: AWS::EC2::Instance Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t1.micro
  2. Salve o modelo localmente ou em um bucket do 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 AWS 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.

    Você pode criar pilhas usando o console do AWS CloudFormation, a API ou a CLI da AWS.

    nota

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

    Você pode usar seu próprio bucket e gerenciar suas permissões fazendo upload manual dos modelos para o Amazon S3. Em seguida, sempre que você criar ou atualizar uma pilha, especifique a URL do Amazon S3 de um arquivo de modelo.

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

Depois que todos os recursos foram criados, o AWS 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 AWS 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 AWS 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 executar o conjunto de alterações para atualizar sua pilha ou 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 obter mais informações, consulte Atualizações de pilhas do AWS CloudFormation.

  1. Você pode modificar um modelo de pilha do AWS 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 obter mais informações, consulte Modificar um modelo de pilha.

  2. Salve o modelo do AWS 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 uma 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 AWS CloudFormation fará upload de seu modelo automaticamente para um bucket do S3 em sua conta da AWS.

  4. Visualize o conjunto de alterações para verificar se o AWS CloudFormation executará as alterações que você espera. Por exemplo, verifique se o AWS CloudFormation substituirá todos os recursos críticos 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 o limite 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, e tudo isso pode provocar uma falha na atualização da pilha.

  5. Execute o conjunto com as alterações que deseja aplicar à pilha. O AWS 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 AWS CloudFormation reverterá as alterações para restaurar a pilha para o estado de funcionamento mais recente conhecido.

Excluir uma pilha

Ao excluir uma pilha, você especifica a pilha a ser excluída, e o AWS CloudFormation exclui a pilha e todos os recursos da pilha. Você pode excluir pilhas usando o console do AWS CloudFormation, a API ou a CLI da AWS.

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 foram excluídos, o AWS CloudFormation sinaliza que a pilha foi excluída com êxito. Se o AWS 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

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

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