

# Detectar desvio em uma pilha inteira do CloudFormation
<a name="detect-drift-stack"></a>

A realização de uma operação de detecção de desvio em uma pilha determina se essa pilha se desviou de sua configuração de modelo esperada e retorna informações detalhadas sobre o status de desvio de cada recurso na pilha que oferece suporte para a detecção de desvio.

**Para detectar o desvio em uma pilha inteira usando o Console de gerenciamento da AWS**

1. Abra o console do CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Na lista de pilhas, selecione a pilha em que deseja executar a detecção de desvio. No painel de detalhes da pilha, escolha **Stack actions (Ações da pilha)** e selecione **Detect drift (Detectar desvio)**.  
![\[O comando Detect drift for current stack (Detectar desvio da pilha atual) no menu Stack actions (Ações da pilha) da pilha selecionada.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/console-stacks-actions-detect-drift-1.png)

   O CloudFormation exibe uma barra de informações que declara que a detecção de desvio foi iniciada para a pilha selecionada.

1. Aguarde até que o CloudFormation conclua a operação de detecção de desvios. Quando a operação de detecção de desvio for concluída, o CloudFormation atualizará o **Status de desvio** e o **Tempo da última verificação de desvio** para sua pilha. Esses campos estão listados na seção **Overview (Visão geral)** do painel **Stack info (Informações da pilha)** da página de detalhes da pilha.

   A operação de detecção de desvio pode levar vários minutos, dependendo do número de recursos incluídos na pilha. Você só pode executar uma operação de detecção de desvio em uma determinada pilha ao mesmo tempo. O CloudFormation continua a operação de detecção de desvios mesmo depois de você descartar a barra de informações.

1. Revise os resultados da detecção de desvio para a pilha e seus recursos. Com a pilha selecionada, no menu **Stack actions** (Ações da pilha) selecione **View drift results** (Visualizar os resultados de desvio).

   O CloudFormation lista o status geral de desvio da pilha, bem como a última vez que a detecção de desvio foi iniciada na pilha ou em qualquer um dos recursos individuais dela. Considera-se que uma pilha foi desviada se um ou mais de seus recursos foram desviados.  
![\[A página Drifts (Desvios) da pilha selecionada, mostrando o status global de desvio da pilha, o status de detecção de desvio e a última vez em que a detecção de desvio foi iniciada na pilha ou em qualquer um de seus recursos individuais.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/console-stacks-drifts-overview-1.png)

   Na seção **Status de desvio do recurso**, o CloudFormation lista cada recurso de pilha, o status de desvio dele e a última vez em que a detecção de desvios foi iniciada no recurso. O ID lógico e o ID físico de cada recurso são exibidos para ajudar você a identificá-los. Além disso, para recursos com status **MODIFIED**, o CloudFormation exibe detalhes de desvios do recurso.

   É possível classificar os recursos com base em seus status de desvio usando a coluna **Drift status (Status de desvio)**.

   1. Para visualizar os detalhes em um recurso modificado.

     1. Com o recurso modificado selecionado, escolha **View drift details** (Visualizar detalhes de desvio).

       O CloudFormation exibe a página de detalhes de desvios desse recurso. Esta página lista os valores de propriedade esperados e atuais do recurso e quaisquer diferenças entre os dois.

       Para destacar uma diferença, na seção **Differences (Diferenças)**, selecione o nome da propriedade.
       + As propriedades adicionadas são destacadas em verde na coluna **Current (Atuais)** da seção **Details (Detalhes)**.
       + As propriedades excluídas são destacadas em vermelho na coluna **Expected (Esperadas)** da seção **Details (Detalhes)**.
       + As propriedades cujo valor foi alterado são destacadas em amarelo nas colunas **Expected (Esperadas)** e **Current (Atuais)**.  
![\[A seção Status de desvios de recursos da página Detalhes de desvios, que contém as informações de desvio para cada recurso na pilha com suporte para detecção de desvios. Os detalhes incluem o status de desvio e os valores de propriedade esperados e atuais.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/console-stacks-drifts-drift-details-differences-1.png)

**Para detectar o desvio em uma pilha inteira usando o AWS CLI**
**Importante**  
Consulte o **Horário da última verificação de desvio** da pilha e confirme se é anterior ao carimbo de data/hora mostrado nos resultados do desvio do recurso para evitar o uso de dados desatualizados.

Para detectar desvios em uma pilha inteira usando a AWS CLI, use os seguintes comandos AWS CLI:
+ **detect-stack-drift** para iniciar uma operação de detecção de desvio em uma pilha.
+ **describe-stack-drift-detection-status** para monitorar o status da operação de detecção de desvio da pilha.
+ **describe-stack-resource-drifts** para rever os detalhes da operação de detecção de desvio da pilha.

1. Use o **detect-stack-drift** para detectar o desvio em uma pilha inteira. Especifique o nome da pilha ou o ARN. Você também pode especificar os IDs lógicos de quaisquer recursos específicos que você deseja usar como filtros para essa operação de detecção de desvio.

   ```
   aws cloudformation detect-stack-drift --stack-name my-stack-with-resource-drift
   ```

   Resultado:

   ```
   {
       "StackDriftDetectionId": "624af370-311a-11e8-b6b7-500cexample"
   }
   ```

1. Como as operações de detecção de desvio de pilha podem ser de longa execução, use **describe-stack-drift-detection-status** para monitorar o status da operação de desvio. Esse comando usa o ID de detecção de desvio da pilha retornado pelo comando **detect-stack-drift**.

   No exemplo abaixo, pegamos o ID de detecção de desvio da pilha retornado pelo exemplo acima de **detect-stack-drift**e o transmitimos como um parâmetro para **describe-stack-drift-detection-status**. O parâmetro retorna detalhes da operação que mostram que a operação de detecção de desvio foi concluída, que um recurso de pilha única foi desviado e que a pilha inteira é considerada como tendo sido desviada como resultado.

   ```
   aws cloudformation describe-stack-drift-detection-status --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample
   ```

   Resultado:

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", 
       "StackDriftDetectionId": "624af370-311a-11e8-b6b7-500cexample", 
       "StackDriftStatus": "DRIFTED", 
       "Timestamp": "2018-03-26T17:23:22.279Z", 
       "DetectionStatus": "DETECTION_COMPLETE", 
       "DriftedStackResourceCount": 1
   }
   ```

1. Quando a operação de detecção de desvio de pilha estiver concluída, use o comando **describe-stack-resource-drifts** para rever os resultados, incluindo valores de propriedade reais e esperados para os recursos que se desviaram.

   O exemplo abaixo usa a opção `--stack-resource-drift-status-filters` para solicitar informações de desvio de pilha para os recursos que foram modificados ou excluídos. A solicitação retorna informações sobre o único recurso que foi modificado, incluindo detalhes sobre duas de suas propriedades cujos valores foram alterados. Nenhum recurso foi excluído.

   ```
   aws cloudformation describe-stack-resource-drifts --stack-name my-stack-with-resource-drift --stack-resource-drift-status-filters MODIFIED DELETED
   ```

   Resultado:

   ```
   {
       "StackResourceDrifts": [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", 
               "ActualProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":120,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":12},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", 
               "ResourceType": "AWS::SQS::Queue", 
               "Timestamp": "2018-03-26T17:23:34.489Z", 
               "PhysicalResourceId": "https://sqs.us-east-1.amazonaws.com/099908667365/my-stack-with-resource-drift-Queue-494PBHCO76H4", 
               "StackResourceDriftStatus": "MODIFIED", 
               "ExpectedProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":20,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":10},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", 
               "PropertyDifferences": [
                   {
                       "PropertyPath": "/DelaySeconds", 
                       "ActualValue": "120", 
                       "ExpectedValue": "20", 
                       "DifferenceType": "NOT_EQUAL"
                   }, 
                   {
                       "PropertyPath": "/RedrivePolicy/maxReceiveCount", 
                       "ActualValue": "12", 
                       "ExpectedValue": "10", 
                       "DifferenceType": "NOT_EQUAL"
                   }
               ], 
               "LogicalResourceId": "Queue"
           }
       ]
   }
   ```