Opções de falha de pilha - AWS CloudFormation

Opções de falha de pilha

Você pode desenvolver suas aplicações iterativamente quando forem encontradas falhas de provisionamento, começando do ponto de falha sem reverter os recursos provisionados com êxito. Ao especificar opções de falha de pilha, você pode solucionar problemas de recursos em um status CREATE_FAILED ou UPDATE_FAILED. Você pode provisionar opções de falha para todas as implantações de pilha e operações de conjunto de alterações.

  • Criar operações definidas como Preservar recursos provisionados com êxito preserva o estado dos recursos bem-sucedidos, enquanto os recursos com falha permanecerão em um estado de falha até que a próxima operação de atualização seja executada.

  • As operações de atualização e conjunto de alterações definidas como Preservar recursos provisionados com êxito preservam o estado dos recursos bem-sucedidos enquanto revertem os recursos com falha para o último estado estável conhecido. Os recursos com falha estarão em um estado UPDATE_FAILED. Recursos sem um último estado estável conhecido serão excluídos na próxima operação de pilha.

Consulte as seções a seguir para obter mais detalhes sobre como pausar a reversão de recursos com falha:

Visão geral das opções de falha de pilha

Antes de emitir uma operação do console do AWS CloudFormation, da API ouAWS Command Line Interface (AWS CLI), especifique o comportamento para falha de recurso provisionado. Em seguida, prossiga com o processo de implantação dos seus recursos sem outras modificações. Em caso de uma falha operacional, o CloudFormation vai parar na primeira falha em cada caminho de provisionamento independente. O CloudFormation identificará dependências entre recursos para paralelizar ações de provisionamento independentes. Em seguida, ele passará a provisionar recursos em cada caminho de provisionamento independente até encontrar uma falha. Uma falha em um caminho não afeta outros caminhos de provisionamento. O CloudFormation continuará a provisionar os recursos até a conclusão ou parada em uma falha diferente.

Corrija todos os problemas para continuar o processo de implantação. O CloudFormation executa as atualizações necessárias antes de tentar novamente as ações de provisionamento em recursos que não puderam ser provisionados com êxito antes. Você corrige problemas enviando operações Repetir, Atualizar ou Reverter. Por exemplo, se você estiver provisionando uma instância do Amazon EC2 e a instância do EC2 falhar durante uma operação de criação, investigue o erro, em vez de reverter o recurso com falha imediatamente. Você pode revisar verificações de status do sistema e verificações de status de instâncias e, em seguida, selecionar a operação Repetir assim que os problemas forem resolvidos.

Quando uma operação de pilha falhar e você especificar Preservar recursos provisionados com êxito no menu Opções de falha de pilha, será possível selecionar as opções a seguir.

  • Repetir – Tenta novamente a operação de provisionamento em recursos com falha e continua provisionando o modelo até a conclusão bem-sucedida da operação de pilha ou a próxima falha. Selecione essa opção se o provisionamento do recurso falhar devido a um problema que não requer modificações de modelo, como uma permissãoAWS Identity and Access Management (IAM).

  • Atualizar – Recursos que foram provisionados são atualizados nas atualizações do modelo. Os recursos que não puderam ser criados ou atualizados serão tentados novamente. Selecione essa opção se o provisionamento do recurso falhar devido a erros de modelo e você tiver modificado o modelo. Ao atualizar uma pilha que está em um estado FAILED, você deve selecionar Preservar recursos provisionados com êxito para as Opções de falha de pilha para continuar atualizando sua pilha.

  • Reverter – CloudFormation reverte a pilha para o último estado estável conhecido.

Condições para pausar a reversão da pilha

Para pausar a reversão de recursos com falha na pilha, as seguintes condições devem ser atendidas.

  • Você deve especificar o parâmetro Preservar recursos provisionados com êxito durante uma operação de pilha. Para obter mais informações sobre o comportamento de reversão, consulte Configuração de opções de pilha do AWS CloudFormation.

  • Uma operação de pilha deve ter um status de pilha de CREATE_FAILED ou UPDATE_FAILED. Para obter informações sobre o status da pilha, consulte Códigos de status da pilha.

nota

Tipos de atualização imutáveis não são compatíveis.

Preservar recursos provisionados com êxito (console)

Create stack

Para preservar recursos provisionados com êxito durante uma operação de criação de pilha

  1. Faça login no AWS Management Console e abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

  2. Escolha Criar pilha e selecione Com novos recursos (padrão).

  3. Na página Especificar modelo, escolha um modelo de pilha usando uma das seguintes opções:

    • Template is ready (O modelo está pronto)

    • Use a sample template (Usar um modelo de amostra)

    • Create template in Designer (Criar modelo no Designer)

    Aceite suas configurações e selecione Avançar.

  4. Na página Especificar detalhes da pilha, digite o nome de uma pilha na caixa Nome da pilha.

  5. Na seção Parâmetros, especifique os parâmetros que são definidos no modelo da pilha.

    Você pode usar ou alterar todos os parâmetros com valores padrão.

  6. Quando você estiver satisfeito com os valores dos parâmetros, escolha Avançar.

  7. Na página Configurar opções de pilha, você pode definir opções adicionais para a sua pilha.

  8. Para opções de falha de pilha, selecione Preservar recursos provisionados com êxito.

  9. Quando você estiver satisfeito com as opções de pilha, escolha Avançar.

  10. Revise sua pilha na página Revisar e selecione Criar pilha.

Resultados: recursos que não conseguiram criar a transição do status da pilha para CREATE_FAILED para evitar que a pilha seja revertida quando a operação de pilha encontrar uma falha. Os recursos provisionados com êxito estão em um estado CREATE_COMPLETE. Você pode monitorar a pilha na guia Eventos de pilha.

Update stack

Para preservar recursos provisionados com êxito durante uma operação de atualização de pilha

  1. Faça login no AWS Management Console e abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

  2. Selecione a pilha que você deseja atualizar e escolha Atualizar.

  3. Na página Atualizar pilha, escolha um modelo de pilha usando uma das seguintes opções:

    • Usar o modelo atual

    • Substituir o modelo atual

    • Criar modelo no Designer

    Aceite suas configurações e selecione Avançar.

  4. Na página Especificar detalhes da pilha, especifique os parâmetros definidos no modelo de pilha.

    Você pode usar ou alterar todos os parâmetros com valores padrão.

  5. Quando você estiver satisfeito com os valores dos parâmetros, escolha Avançar.

  6. Na página Configurar opções de pilha, você pode definir opções adicionais para a sua pilha.

  7. Para o Comportamento na falha de provisionamento, selecione Preservar recursos provisionados com êxito.

  8. Quando você estiver satisfeito com as opções de pilha, escolha Avançar.

  9. Revise sua pilha na página Revisar e selecione Atualizar pilha.

Resultados: recursos cuja atualização falhou fazem a transição do status da pilha para UPDATE_FAILED e são revertidos para o último estado estável conhecido. Recursos sem um último estado estável conhecido serão excluídos por CloudFormation na próxima operação de pilha. Os recursos provisionados com êxito estão em um estado CREATE_COMPLETE ou UPDATE_COMPLETE. Você pode monitorar a pilha na guia Eventos de pilha.

Change set
nota

Você pode iniciar um conjunto de alterações para uma pilha com um status deCREATE_FAILED ouUPDATE_FAILED, mas não para um status de UPDATE_ROLLBACK_FAILED.

Para preservar recursos provisionados com êxito durante uma operação de conjunto de alterações

  1. Faça login no AWS Management Console e abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

  2. Selecione a pilha que contém o conjunto de alterações que você deseja iniciar e escolha a guia Conjuntos de alterações.

  3. Selecione o conjunto de alterações e escolha Executar.

  4. Para Executar conjunto de alterações, selecione a opção Preservar recursos provisionados com êxito.

  5. Selecione Executar conjunto de alterações.

Resultados: recursos cuja atualização falhou fazem a transição do status da pilha para UPDATE_FAILED e são revertidos para o último estado estável conhecido. Recursos sem um último estado estável conhecido serão excluídos por CloudFormation na próxima operação de pilha. Os recursos provisionados com êxito estão em um estado CREATE_COMPLETE ou UPDATE_COMPLETE. Você pode monitorar a pilha na guia Eventos de pilha.

Preservar recursos provisionados com êxito (AWS CLI)

Create stack

Para preservar recursos provisionados com êxito durante uma operação de criação de pilha

Especifique a opção disable-rollback ou a enumeração on-failure DO_NOTHING durante uma operação create-stack.

  1. Forneça um nome de pilha e um modelo para o comando create-stack com a opção disable-rollback.

    aws cloudformation create-stack --stack-name myteststack --template-body file://DOC-EXAMPLE-BUCKET.json -–disable-rollback

    O comando retorna a saída a seguir.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  2. Descreva o estado da pilha usando a opção describe-stacks.

    aws cloudformation describe-stacks --stack-name myteststack

    O comando retorna a saída a seguir.

    {
        "Stacks":  [
            {
                "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
                "Description": "AWS CloudFormation Sample Template",
                "Tags": [],
                "Outputs": [],
                "StackStatusReason": “The following resource(s) failed to create: [MyBucket]”,
                "CreationTime": "2013-08-23T01:02:15.422Z",
                "Capabilities": [],
                "StackName": "myteststack",
                "StackStatus": "CREATE_FAILED",
                "DisableRollback": true
            }
        ]
    }
Update stack

Para preservar recursos provisionados com êxito durante uma operação de atualização de pilha.

Especifique a opção disable-rollback ou a enumeração on-failure DO_NOTHING durante uma operação update-stack.

  1. Forneça um nome de pilha e um modelo existentes para o comando update-stack com a opção disable-rollback.

    aws cloudformation update-stack --stack-name myteststack --template-url DOC-EXAMPLE-BUCKET.template --disable-rollback

    O comando retorna a saída a seguir.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  2. Descreva o estado da pilha usando a opção describe-stacks ou describe-stack-events.

    aws cloudformation describe-stacks --stack-name myteststack

    O comando retorna a saída a seguir.

    {
        "Stacks":  [
            {
                "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
                "Description": "AWS CloudFormation Sample Template",
                "Tags": [],
                "Outputs": [],
                "CreationTime": "2013-08-23T01:02:15.422Z",
                "Capabilities": [],
                "StackName": "myteststack",
                "StackStatus": "UPDATE_COMPLETE",
                "DisableRollback": true
            }
        ]
    }
Change set
nota

Você pode iniciar um conjunto de alterações para uma pilha com um status de CREATE_FAILED ou UPDATE_FAILED, mas não para um status de UPDATE_ROLLBACK_FAILED.

Para preservar recursos provisionados com êxito durante uma operação de conjunto de alterações

Especifique a opção disable-rollback ou a enumeração on-failure DO_NOTHING durante uma operação execute-change-set.

  1. Forneça um nome de pilha e um modelo para o comando execute-change-set com a opção disable-rollback.

    aws cloudformation execute-change-set --stack-name myteststack --change-set-name my-change-set --template-body file://template.yaml

    O comando retorna a saída a seguir.

    {
     "Id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/my-change-set/bc9555ba-a949-xmpl-bfb8-f41d04ec5784",
     "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  2. Inicie o conjunto de alterações com a opção disable-rollback.

    aws cloudformation execute-change-set --stack-name myteststack --change-set-name my-change-set -–disable-rollback
  3. Determine o status da pilha usando a opção describe-stacks ou describe-stack-events.

    { "StackEvents": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "EventId": "49c966a0-7b74-11ea-8071-024244bb0672", "StackName": "myteststack", "LogicalResourceId": " MyBucket", "PhysicalResourceId": "MyBucket", "ResourceType": "AWS::S3::Bucket", "Timestamp": "2020-04-10T21:43:17.015Z", "ResourceStatus": "UPDATE_FAILED" "ResourceStatusReason": "User XYZ is not allowed to perform S3::UpdateBucket on MyBucket" } }
  4. Corrija erros de permissões e tente novamente a operação.

    aws cloudformation update-stack --stack-name myteststack --use-previous-template --disable-rollback

    O comando retorna a saída a seguir.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  5. Descreva o estado da pilha usando a opção describe-stacks ou describe-stack-events.

    aws cloudformation describe-stacks --stack-name myteststack

    O comando retorna a saída a seguir.

    {
        "Stacks":  [
            {
                "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
                "Description": "AWS CloudFormation Sample Template",
                "Tags": [],
                "Outputs": [],
                "CreationTime": "2013-08-23T01:02:15.422Z",
                "Capabilities": [],
                "StackName": "myteststack",
                "StackStatus": "UPDATE_COMPLETE",
                "DisableRollback": true
            }
        ]
    }

Reverter pilha

Para reverter uma pilha do status de pilha CREATE_FAILED ou UPDATE_FAILED

Especifique a operação rollback-stack para reverter uma pilha para seu último estado estável.

  • Inicie uma reversão com a operação rollback-stack e especifique o nome da pilha.

    aws cloudformation rollback-stack --stack-name myteststack

    O comando retorna a saída a seguir.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
nota

A operação rollback-stack excluirá uma pilha se ela não contiver um último estado estável conhecido.