Solução de problemas do CloudFormation - AWS CloudFormation

Solução de problemas do CloudFormation

Ao usar o CloudFormation, você pode encontrar problemas ao criar, atualizar ou excluir pilhas do CloudFormation. As seções a seguir podem ajudar a solucionar alguns problemas comuns que você pode encontrar.

Para perguntas gerais sobre o CloudFormation, consulte as Perguntas frequentes sobre o AWS CloudFormation. Também é possível pesquisar respostas e postar perguntas no Fóruns do AWS CloudFormation.

Guia de solução de problemas

Se houver falha no CloudFormation ao criar, atualizar ou excluir a pilha, você pode visualizar mensagens de erro ou logs para ajudar a saber mais sobre o problema. As tarefas a seguir descrevem métodos gerais para a solução de um problema do CloudFormation. Para obter mais informações sobre erros específicos e soluções, consulte a seção Solucionar de problemas de erros.

  • Use o console do CloudFormation para visualizar o status da pilha. No console, você pode visualizar uma lista de eventos de pilha enquanto sua pilha está sendo criada, atualizada ou excluída. Nessa lista, encontre o evento de falha e, em seguida, visualize o motivo do status desse evento. O motivo do status pode conter uma mensagem de erro do CloudFormation ou de um serviço específico que pode ajudá-lo a resolver o problema. Para obter mais informações sobre a visualização de eventos de pilha, consulte Visualizar as informações da pilha do CloudFormation no console do CloudFormation.

  • Para problemas do Amazon EC2, visualize os logs do cfn e do cloud-init. Esses logs são publicados na instância do Amazon EC2, no diretório /var/log/. Esses logs capturam processos e saídas de comandos enquanto o CloudFormation está configurando sua instância. No Windows, visualize o serviço EC2Configure em %ProgramFiles%\Amazon\EC2ConfigService, EC2 Launch em %ProgramData%\Amazon\EC2-Windows\Launch\Logs, EC2 Launch v2 em %ProgramData%\Amazon\EC2Launch\log e os logs do cfn em C:\cfn\log.

    Você também pode configurar o modelo do CloudFormation para que os logs sejam publicados no Amazon CloudWatch que exibe os logs no AWS Management Console para que você não precise se conectar à sua instância do Amazon EC2. Para obter mais informações, consulte Visualizar logs do CloudFormation no console no blog de gerenciamento de aplicações.

Solucionar de problemas de erros

Ao encontrar os seguintes erros na pilha do CloudFormation, você pode usar as seguintes soluções para ajudá-lo a encontrar a origem dos problemas e corrigi-los.

Falha na exclusão da pilha

Para resolver essa situação, tente o seguinte:

  • Alguns recursos devem estar vazios para que possam ser excluídos. Por exemplo, você deve excluir todos os objetos de um bucket do Amazon S3 ou remover todas as instâncias de um grupo de segurança do Amazon EC2 para poder excluir o bucket ou o grupo de segurança.

  • Certifique-se de que você tem as permissões necessárias do IAM para excluir os recursos da pilha. Além das permissões do CloudFormation, você deve ter permissão para usar os serviços subjacentes, como o Amazon S3 ou o Amazon EC2.

  • Quando as pilhas estiverem no estado DELETE_FAILED porque o CloudFormation não pôde excluir um recurso, execute novamente a exclusão com o parâmetro RetainResources e especifique o recurso que o CloudFormation não pode excluir. O CloudFormation excluirá a pilha sem excluir o recurso retido. A retenção de recursos é útil quando você não pode excluir um recurso, como um bucket do S3 que contém objetos que você deseja manter, mas você ainda deseja excluir a pilha.

    Depois de excluir a pilha, você pode excluir os recursos retidos manualmente usando o produto da AWS associado a eles.

    Como alternativa, é possível considerar usar a opção FORCE_DELETE_STACK com o parâmetro DeletionMode. Para obter mais informações sobre a exclusão forçada de uma pilha, consulte DeleteStack.

  • Você não pode excluir pilhas que têm a proteção contra encerramento ativada. Se você tentar excluir uma pilha com proteção contra encerramento ativada, a exclusão falhará e a pilha, incluindo seu status, permanecerá inalterada. Desative a proteção contra encerramento na pilha e, em seguida, execute a operação de exclusão novamente.

    Isso inclui pilhas aninhadas cujas pilhas raiz têm proteção contra encerramento ativada. Desative a proteção contra encerramento na pilha raiz e, em seguida, execute a operação de exclusão novamente. É altamente recomendável que você não exclua pilhas aninhadas diretamente, mas as exclua apenas como parte da exclusão da pilha raiz e de todos os recursos dela.

    Para ter mais informações, consulte Proteger uma pilha contra a exclusão.

  • Para todos os outros problemas, se você tiver AWS Support, poderá criar um caso de AWS Support. Consulte Como entrar em contato com o suporte do .

Erro de dependência

Para resolver um erro de dependência, adicione um atributo DependsOn aos recursos que dependem de outros recursos em seu modelo. Em alguns casos, você deve declarar dependências explicitamente para que o CloudFormation possa criar ou excluir recursos na ordem correta. Por exemplo, se você criar um IP elástico e uma VPC com um Internet gateway na mesma pilha, o IP elástico deverá depender do anexo do Internet Gateway. Para obter informações adicionais, consulte Atributo DependsOn.

Conflitos do AWS Config e do AWS Systems Manager

O AWS Config e o AWS Systems Manager podem automatizar tarefas de gerenciamento de infraestrutura que podem causar conflitos com a implantação de uma pilha do CloudFormation. Faça o seguinte para evitar possíveis conflitos:

  • Revise a configuração do AWS Config e do Systems Manager na Conta da AWS e Região da AWS associadas.

  • Verifique se há regras ativas ou documentos de automação que possam ser acionados durante uma implantação do CloudFormation. Isso pode causar conflitos ou dependências de recursos que afetam sua implantação.

  • Verifique seu modelo do CloudFormation para ver se há recursos gerenciados pelo AWS Config e pelo Systems Manager. Verifique possíveis sobreposições ou interdependências e considere ajustar o modelo ou a configuração de automação para evitar conflitos.

  • Desative ou suspenda temporariamente quaisquer regras do AWS Config relacionadas ou automações do Systems Manager durante a implantação do CloudFormation. Lembre-se de restaurar as configurações originais após a implantação bem-sucedida para manter o nível desejado de automação e conformidade.

  • Analise os registros e as mensagens de erro do CloudFormation em busca de qualquer referência ao AWS Config e problemas relacionados ao Systems Manager para ajudar a identificar a origem do conflito.

Para obter mais informações sobre regras do AWS Config, consulte Análise de recursos com o Regras do AWS Config.

Para obter mais informações sobre as automações do Systems Manager, consulte Automação do AWS Systems Manager.

Erro ao analisar parâmetros ao passar uma lista

Ao usar a AWS Command Line Interface ou o CloudFormation para passar uma lista, adicione o caractere de escape (\) antes de cada vírgula. O exemplo a seguir mostra como você especifica um parâmetro de entrada ao usar a AWS CLI.

ParameterKey=CIDR,ParameterValue='10.10.0.0/16\,10.10.0.0/24\,10.10.1.0/24'

Permissões insuficientes do IAM

Ao trabalhar com uma pilha do CloudFormation, você não precisa só de permissões para usar o CloudFormation, você também deve ter permissão para usar os serviços subjacentes que são descritos em seu modelo. Por exemplo, se estiver criando um bucket do Amazon S3 ou iniciando uma instância do Amazon EC2, você precisa de permissões para o Amazon S3 ou para o Amazon EC2. Revise sua política do IAM e verifique se você tem as permissões necessárias antes de trabalhar com pilhas do CloudFormation. Para ter mais informações, consulte Controlar o acesso com o AWS Identity and Access Management.

Valor inválido ou propriedade de recurso sem suporte

Ao criar ou atualizar uma pilha do CloudFormation, pode haver uma falha em sua pilha devido a parâmetros de entrada inválidos, nomes de propriedades de recursos sem suporte ou valores de propriedades de recursos sem suporte. Para parâmetros de entrada, verifique se o recurso existe. Por exemplo, quando você especifica um par de chaves do Amazon EC2 ou um ID de VPC, o recurso deve existir em sua conta e na região na qual você está criando ou atualizando a pilha. Você pode usar tipos de parâmetros específicos da AWS para garantir o uso de valores válidos.

Para nomes e valores de propriedades de recursos, atualize seu modelo para usar nomes e valores válidos. Para obter uma lista de todos os recursos e seus nomes de propriedades, consulte Referência de tipos de propriedades e recursos da AWS.

Cota excedida

Verifique se você não atingiu a cota de um recurso. Por exemplo, o número máximo padrão de instâncias do Amazon EC2 On-Demand que você pode executar é 5. Se tentar criar mais instâncias sob demanda do Amazon EC2 que a cota da sua conta, haverá falha na criação da instância e você receberá o erro Status=start_failed. Para visualizar as cotas padrão da AWS por serviço, consulte Cotas de serviço da AWS, no Referência geral da AWS.

Para obter informações sobre cotas do CloudFormation e estratégias de ajuste, consulte Entender as cotas do CloudFormation.

Além disso, durante uma atualização, se um recurso for substituído, o CloudFormation criará um novo recurso antes de excluir o antigo. Essa substituição pode colocar sua conta acima da quota de recursos, o que provoca uma falha na atualização. Você pode excluir o excesso de recursos ou solicitar um aumento de cota.

As pilhas aninhadas estão paralisadas em UPDATE_COMPLETE_CLEANUP_IN_PROGRESS, UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS ou UPDATE_ROLLBACK_IN_PROGRESS

Falha na reversão de uma pilha aninhada. Devido às potenciais dependências de recursos entre pilhas aninhadas, o CloudFormation não inicia a limpeza de recursos de pilhas aninhadas até que todas as pilhas aninhadas tenham sido atualizadas ou revertidas. Quando há falha na reversão de uma pilha aninhada, o CloudFormation cancela todas as operações, independentemente do estado em que as outras pilhas aninhadas estão. Uma pilha aninhada que concluiu a atualização ou a reversão, mas não recebeu um sinal do CloudFormation para iniciar a limpeza porque houve uma falha na reversão de outras pilhas aninhadas, está em um estado UPDATE_COMPLETE_CLEANUP_IN_PROGRESS ou UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS. Uma pilha aninhada que não pôde ser atualizada, mas não recebeu um sinal para iniciar a reversão, está em um estado UPDATE_ROLLBACK_IN_PROGRESS.

Uma pilha aninhada pode não ser revertida devido a alterações que foram feitas fora do CloudFormation, quando o modelo da pilha não refletir precisamente o estado da pilha. Uma pilha aninhada também pode falhar se um grupo de Auto Scaling tinha tempo limite insuficiente para sinal de recurso quando o grupo foi criado ou atualizado.

Para corrigir a pilha, entre em contato com o AWS Support.

Nenhuma atualização a ser executada

Para atualizar uma pilha do CloudFormation, você deve enviar as alterações do modelo ou do valor do parâmetro ao CloudFormation. No entanto, o CloudFormation não reconhece algumas alterações de modelo como uma atualização, como alterações em uma política de exclusão, política de atualização, declaração de condição ou declaração de saída. Se você precisar fazer essas alterações sem fazer nenhuma outra alteração, você poderá adicionar ou modificar um atributo metadata de qualquer um de seus recursos. O atributo de metadados pode ser qualquer valor arbitrário, pois o CloudFormation não interpreta seu conteúdo.

Falha ao estabilizar recurso durante uma operação de criação, atualização ou exclusão de pilha

Um recurso não respondeu porque a operação excedeu o tempo limite do CloudFormation ou um serviço da AWS foi interrompido. Para interrupções de serviços, verifique se o produto relevante da AWS está em execução e tente novamente a operação de pilha.

Se os produtos da AWS forem executados com êxito, verifique se sua pilha contém um dos seguintes recursos:

  • AWS::AutoScaling::AutoScalingGroup para criar, atualizar e excluir operações

  • AWS::CertificateManager::Certificate para criar operações

  • AWS::CloudFormation::Stack para criar, atualizar e excluir operações

  • AWS::ElasticSearch::Domain para atualizar operações

  • AWS::RDS::DBCluster para criar e atualizar operações

  • AWS::RDS::DBInstance para criar, atualizar e excluir operações

  • AWS::Redshift::Cluster para atualizar operações

As operações para esses recursos podem demorar mais tempo que o tempo limite padrão. O tempo limite depende do recurso e das credenciais que você usa. Para estender o tempo limite, especifique uma função de serviço ao executar a operação de pilha. Se já estiver usando uma função de serviço, ou se a pilha contiver um recurso que não está listado, entre em contato com o AWS Support.

Se a sua pilha estiver no estado UPDATE_ROLLBACK_FAILED, consulte Falha na reversão da atualização.

O Grupo de segurança não existe na VPC

Verifique se o security group existe na VPC especificada. Se o security group existir, especifique o ID do security group e não o nome do security group. Por exemplo, o recurso AWS::EC2::SecurityGroupIngress tem as propriedades SourceSecurityGroupName e SourceSecurityGroupId. Para os security groups da VPC, você deve usar a propriedade SourceSecurityGroupId e especificar o ID do security group.

Falha na reversão da atualização

Um recurso dependente não pode retornar para o estado original, provocando falha na reversão (estado UPDATE_ROLLBACK_FAILED). Por exemplo, você pode ter uma pilha que está sendo revertida para uma instância de banco de dados antiga que foi excluída fora do CloudFormation. Como o CloudFormation não sabe que o banco de dados foi excluído, ele pressupõe que a instância de banco de dados ainda existe e tenta reverter, provocando falha na reversão da atualização.

Dependendo da causa da falha, você poderá corrigir o erro manualmente e continuar a reversão. Ao continuar a reversão, você pode retornar sua pilha para o estado de funcionamento (o estado UPDATE_ROLLBACK_COMPLETE) e, em seguida, tentar atualizar a pilha novamente. A lista a seguir descreve as soluções de erros comuns que provocam falhas na reversão da atualização:

  • Falha ao receber o número necessário de sinais

    Use o comando signal-resource para enviar manualmente o número necessário de sinais de êxito ao recurso que está esperando por eles e, em seguida, continue revertendo a atualização. Por exemplo, durante uma reversão de atualização, as instâncias em um grupo de Auto Scaling podem ter uma falha ao sinalizar êxito dentro do tempo limite especificado. Envie sinais de êxito manualmente ao grupo de Auto Scaling. Quando você continuar a reversão da atualização, o CloudFormation verá seus sinais e continuará com a reversão.

  • As alterações em um recurso foram feitas fora do CloudFormation

    Sincronize os recursos manualmente para que eles correspondam ao modelo da pilha original e continue a reversão da atualização. Por exemplo, se tiver excluído manualmente um recurso que o CloudFormation está tentando reverter, você deverá criar esse recurso manualmente com o mesmo nome e propriedades na pilha original.

  • Permissões insuficientes

    Verifique se você tem permissões suficientes do IAM para modificar os recursos e continue a reversão da atualização. Por exemplo, sua política de IAM pode permitir que você crie um bucket do S3, mas não que modifique o bucket. Adicione ações de modificação à sua política.

  • Token de segurança inválido

    O CloudFormation requer um novo conjunto de credenciais. Nenhuma alteração é necessária. Continue a reversão da atualização, o que atualiza as credenciais.

  • Erro de limitação

    Exclua recursos de que você não precisa ou solicite um aumento da quota e, em seguida, continue a reversão da atualização. Por exemplo, se a cota do número de instâncias sob demanda do EC2 da sua conta for 5 e a reversão da atualização exceder essa cota, haverá uma falha.

  • O recurso não estabilizou

    Um recurso não respondeu porque a operação excedeu o tempo limite do CloudFormation ou porque um serviço da AWS pode ter sido interrompido. Nenhuma alteração é necessária. Depois que operação do recurso for concluída ou que o produto da AWS entrar em operação novamente, continue revertendo a atualização.

Para continuar a reversão de uma atualização, você pode usar o console do CloudFormation ou a interface de linhas de comando da AWS (AWS CLI). Para ter mais informações, consulte Continuar revertendo uma atualização.

Se nenhuma dessas soluções funcionar, você poderá ignorar os recursos que o CloudFormation não pode reverter com êxito. Para obter mais informações, consulte o parâmetro ResourcesToSkip para a operação da API ContinueUpdateRollback na Referência da API do AWS CloudFormation. O CloudFormation define o status dos recursos especificados como UPDATE_COMPLETE e continua a reverter a pilha. Após a reversão ser concluída, o estado dos recursos ignorados será inconsistente com o estado dos recursos no modelo de pilha. Antes de executar outra atualização da pilha, você deve modificar os recursos ou atualizar a pilha para estarem consistentes entre si. Caso contrário poderá haver falha em atualizações subsequentes da pilha, e a pilha poderá se tornar irrecuperável.

A condição de espera não recebeu o número necessário de sinais de uma instância do Amazon EC2

Para resolver essa situação, tente o seguinte:

  • Verifique se a AMI que você está usando tem os scripts auxiliares do CloudFormation instalados. Se a AMI não incluir os scripts auxiliares, você também poderá baixá-los em sua instância. Para ter mais informações, consulte CloudFormation referência de scripts auxiliares.

  • Verifique se o comando cfn-signal foi executado com êxito na instância. Você pode visualizar os logs, por exemplo, /var/log/cloud-init.log ou /var/log/cfn-init.log, para ajudá-lo a depurar a execução da instância. Você pode recuperar os logs fazendo login em sua instância, mas você deve desabilitar a reversão em caso de falha ou o CloudFormation excluirá a instância depois que houver falha na criação da pilha. Você também pode publicar os logs no Amazon CloudWatch. No Windows, você pode visualizar os logs do cfn em C:\cfn\log e os logs do serviço EC2Config em %ProgramFiles%\Amazon\EC2ConfigService.

  • Verifique se a instância tem uma conexão com a Internet. Se estiver em uma VPC, a instância deverá poder se conectar à Internet por meio de um dispositivo NAT se ela estiver em uma sub-rede privada ou por meio de um Internet gateway se estiver em uma sub-rede pública. Para testar a conexão da instância com a Internet, tente acessar uma página da web pública, como http://aws.amazon.com. Por exemplo, você pode executar o seguinte comando na instância. Ele deve retornar um código de status HTTP 200.

    curl -I https://aws.amazon.com

    Para obter informações sobre como configurar um dispositivo NAT, consulte NAT no Guia do usuário da Amazon VPC.

Recurso removido da pilha, mas não excluído

Durante uma atualização de pilha, o CloudFormation removeu um recurso de uma pilha, mas não excluiu o recurso. O recurso ainda existe, mas não é mais acessível por meio do CloudFormation. Isso pode ocorrer durante atualizações de pilha nas quais:

  • O CloudFormation precisa substituir um recurso existente, então primeiramente ele cria um novo recurso e, em seguida, tenta excluir o recurso antigo.

  • Você removeu o recurso do modelo de pilha, portanto, o CloudFormation tentará excluir o recurso da pilha.

No entanto, pode haver casos em que o CloudFormation não poderá excluir o recurso. Por exemplo, se o usuário não tiver permissões para excluir um recurso de um determinado tipo.

O CloudFormation tentará excluir o recurso antigo três vezes. Se o CloudFormation não puder excluir o recurso antigo, ele removerá o recurso antigo da pilha e continuará a atualizá-la. Quando a atualização da pilha estiver concluída, o CloudFormation emitirá um evento de pilha UPDATE_COMPLETE, mas incluirá um StatusReason que declarará que não foi possível excluir um ou mais recursos. O CloudFormation também emite um evento DELETE_FAILED para o recurso específico, com um StatusReason correspondente fornecendo mais detalhes sobre o motivo pelo qual o CloudFormation não conseguiu excluir o recurso.

Para solucionar essa situação, exclua o recurso diretamente usando o console ou a API do serviço em questão.

Como entrar em contato com o suporte do

Se você tiver AWS Support, poderá criar um caso de suporte técnico em https://console.aws.amazon.com/support/home#/. Antes de entrar em contato com o suporte, reúna as seguintes informações:

  • O ID da pilha. Você pode encontrar o ID da pilha na guia Visão geral do console do CloudFormation. Para ter mais informações, consulte Visualizar as informações da pilha do CloudFormation no console do CloudFormation.

    Importante

    Não faça alterações na pilha fora do CloudFormation. Fazer alterações na pilha fora do CloudFormation pode colocar a pilha em um estado irrecuperável.

  • Todas as mensagens de erro da pilha. Para obter informações sobre como visualizar as mensagens de erro da pilha, consulte a seção Guia de solução de problemas.

  • Para problemas do Amazon EC2, reúna os logs do cfn e cloud-init. Esses logs são publicados na instância do Amazon EC2, no diretório /var/log/. Esses logs capturam processos e saídas de comandos enquanto sua instância está sendo configurada. No Windows, colete os logs do serviço EC2Configure e do cfn em %ProgramFiles%\Amazon\EC2ConfigService e C:\cfn\log.

Também é possível pesquisar respostas e postar perguntas no Fóruns do CloudFormation.