

# Uso de conjuntos de alterações sensíveis a desvios
<a name="drift-aware-change-sets"></a>

Os conjuntos de alterações sensíveis a desvios são conjuntos de alterações aprimorados do CloudFormation que permitem identificar e gerenciar o desvio de pilha de maneira segura. As pilhas se desviam da configuração de modelo esperada quando os recursos da pilha são alterados fora do CloudFormation, usando o Console de gerenciamento da AWS, a AWS CLI ou o SDK dos serviços subjacentes. Os conjuntos de alterações sensíveis a desvios comparam os modelos com o estado real dos recursos da pilha e alinham os recursos desviados com suas definições de modelo. Quando a definição do modelo de um recurso é atualizada para corresponder ao seu estado real, os conjuntos de alterações sensíveis a desvios redefinem o status de desvio do recurso sem modificar o recurso.

Os benefícios de usar conjuntos de alterações sensíveis ao desvio incluem:
+ **Pré-visualizar substituições de desvio**: detecte se uma implantação reverterá as alterações críticas fora de banda feitas durante a resposta a incidentes.
+ **Reconciliação sistemática de desvios**: alinhe com segurança os recursos desviados com as definições de modelos compatíveis, seja substituindo as propriedades desviadas pelos valores do modelo ou atualizando o modelo para corresponder ao estado real do recurso.
+ **Recursos aprimorados de reversão**: se uma implantação falhar, restaure os recursos para seu estado real de pré-implantação, não para o estado anterior do modelo.
+ **Visibilidade completa**: veja exatamente como sua implantação afetará as configurações reais dos recursos antes de fazer alterações.

Os conjuntos de alterações tradicionais fornecem uma comparação do seu novo modelo com o modelo anterior para uma pilha, mas não levam em conta o desvio da pilha. Os conjuntos de alterações sensíveis a desvios resolvem esse problema fornecendo uma comparação tripla entre:
+ **Estado real**: a configuração ativa de seus recursos. O CloudFormation lerá a configuração dos recursos em sua conta no momento da criação do conjunto de alterações por meio das APIs de serviço subjacentes.
+ **Estado de implantação anterior**: a configuração definida no modelo da sua última implantação do CloudFormation.
+ **Estado desejado**: a configuração definida em seu novo modelo.

Os conjuntos de alterações sensíveis ao desvio atualizarão o estado real de todos os recursos da pilha para corresponder ao estado desejado, mesmo que um recurso não tenha sido alterado explicitamente no modelo.

## Considerações
<a name="drift-aware-change-sets-considerations"></a>
+ **Suporte ao tipo de recurso**: os conjuntos de alterações sensíveis a desvios são compatíveis com a comparação do estado desejado com o estado real de centenas de tipos de recursos. Para tipos de recursos não compatíveis, os conjuntos de alterações sensíveis a desvios recorrem à comparação do estado de implantação anterior com o estado desejado. Para obter detalhes, consulte a seção Limitações de suporte a tipos de recursos.
+ **Propriedades somente para gravação**: para propriedades que contêm dados sensíveis (senhas, segredos), os conjuntos de alterações sensíveis a desvios se comparam aos valores de implantação anteriores, em vez dos valores reais.
+ **Propriedades gerenciadas pela AWS**: os conjuntos de alterações sensíveis a desvios preservam as alterações fora de banda feitas pelos serviços da AWS nas propriedades gerenciadas, como a capacidade desejada de um grupo do Auto Scaling. Para obter detalhes, consulte a seção de propriedades gerenciadas pela AWS.
+ **Chaves de tags externas**: conjuntos de alterações sensíveis a desvios não removem nem modificam chaves de tags que não foram especificadas no modelo, evitando conflitos com sistemas de controle de acesso por atributo (ABAC).
+ **Substituição de recursos desviados**: conjuntos de alterações sensíveis a desvios não são compatíveis com a reconciliação de desvios para propriedades imutáveis.
+ **Anexos de pilha cruzada**: alguns tipos de recursos, como `AWS::IAM::Policy`, podem influenciar o estado real de outros tipos de recursos, como `AWS::IAM::Role`. Os conjuntos de alterações sensíveis a desvios lidam com a anexação de recursos em uma pilha. Se um recurso for modificado por meio da anexação de um recurso secundário de uma pilha diferente, os conjuntos de alterações sensíveis a desvios detectarão a modificação como desvio e poderão reverter o anexo. Os recursos anexáveis conhecidos incluem `AWS::IAM::Policy`, `AWS::IAM::ManagedPolicy`, `AWS::EC2::SecurityGroupIngress` e `AWS::EC2::SecurityGroupEgress`.

## Propriedades gerenciadas pela AWS
<a name="aws-managed-properties"></a>

Você pode configurar propriedades específicas de recursos para o gerenciamento ativo da AWS. Por exemplo, é possível permitir que o Amazon Relational Database Service (Amazon RDS) atualize automaticamente a versão secundária do mecanismo de uma tabela do Amazon RDS. Essas alterações podem aparecer como um desvio de pilha no CloudFormation. Os conjuntos de alterações sensíveis a desvios reconhecem que o desvio é esperado para propriedades gerenciadas pela AWS e deixam seu valor real inalterado se você não tiver modificado a propriedade em seu modelo. Os principais exemplos de propriedades gerenciadas pela AWS são:
+ Habilitar a propriedade `AutoMinorVersionUpgrade` de uma tabela do Amazon RDS para permitir atualizações automáticas da versão do mecanismo.
+ Uso do recurso `AWS::ApplicationAutoScaling::ScalableTarget` para habilitar o ajuste de escala automático de propriedades como as unidades de capacidade de leitura/gravação de uma tabela do Amazon DynamoDB e a contagem desejada de um cluster do Amazon Elastic Container Service.
+ Uso da `AWS::AutoScaling::ScalingPolicy` para grupos do Auto Scaling.

Os conjuntos de alterações com sensíveis a desvios esclarecem as propriedades que foram identificadas como gerenciadas pela AWS. Para obter detalhes, consulte a seção da AWS CLI.

## Uso de conjuntos de alterações sensíveis a desvios (console)
<a name="drift-aware-change-sets-console"></a>

Você pode criar e gerenciar conjuntos de alterações sensíveis a desvios por meio do console do CloudFormation usando o mesmo fluxo de trabalho dos conjuntos de alterações tradicionais, com opções adicionais para modos de implantação.

### Criação de conjuntos de alterações sensíveis a desvios
<a name="drift-aware-change-sets-console-create"></a>

**Para criar um conjunto de alterações sensíveis a desvios (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Na página **Pilhas**, selecione a pilha que você deseja atualizar.

1. Escolha **Ações de pilhas** e depois **Criar conjunto de alterações para a pilha atual**.

1. Na página **Criar conjunto de alterações**, em **Tipo de conjunto de alterações**, escolha **Conjunto de alterações sensível a desvios**.

1. Escolha **Criar conjunto de alterações**.

1. Na página de detalhes do conjunto de alterações, revise a comparação tripla que mostra a implantação atual, anterior e o estado desejado para cada recurso afetado.

1. Se as alterações estiverem adequadas para você, escolha **Executar conjunto de alterações**.

### Análise de conjuntos de alterações sensíveis a desvios
<a name="drift-aware-change-sets-console-review"></a>

Ao visualizar um conjunto de alterações sensível a desvios no console, você verá informações aprimoradas em comparação com os conjuntos de alterações tradicionais:
+ **Status de desvio da pilha**: indica se a pilha foi desviada de sua última implantação.
+ **Comparação de propriedades**: mostra uma diferença JSON entre o estado real e o estado desejado de um recurso afetado.
+ **Indicadores de desvio**: marca claramente as propriedades do diferencial JSON que foram desviadas. Clique em **Visualizar desvio** para ver o valor da implantação anterior de uma propriedade.
+ **Indicadores da fonte de valor**: mostra se os valores anteriores de uma propriedade vêm do estado real ou do estado de implantação anterior.

## Uso de conjuntos de alterações sensíveis a desvios (AWS CLI)
<a name="drift-aware-change-sets-cli"></a>

Você pode criar e gerenciar conjuntos de alterações sensíveis a desvios usando a AWS CLI, adicionando o parâmetro `--deployment-mode REVERT_DRIFT` ao comando **create-change-set**.

### Criação de conjuntos de alterações sensíveis a desvios
<a name="drift-aware-change-sets-cli-create"></a>

**Para criar um conjunto de alterações sensível a desvios**  
Use o comando [create-change-set](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html) com o parâmetro `--deployment-mode REVERT_DRIFT` para criar um conjunto de alterações sensível ao desvio.

```
aws cloudformation create-change-set \
  --stack-name {{my-stack}} \
  --change-set-name {{my-drift-aware-changeset}} \
  --template-body {{file://updated-template.yaml}} \
  --deployment-mode REVERT_DRIFT \
  --capabilities {{CAPABILITY_IAM}}
```

### Análise de conjuntos de alterações sensíveis a desvios
<a name="drift-aware-change-sets-cli-review"></a>

**Para revisar os detalhes de um conjunto de alterações sensível a desvios**  
Use o comando [describe-change-set](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html) para revisar os detalhes de um conjunto de alterações sensível a desvios:

```
aws cloudformation describe-change-set \
  --change-set-name {{my-drift-aware-changeset}} \
  --stack-name {{my-stack}}
```

A resposta inclui informações aprimoradas para conjuntos de alterações sensíveis a desvios:
+ `StackDriftStatus`: mostra se a pilha foi desviada (`DRIFTED`, `IN_SYNC`, `NOT_CHECKED` ou `UNKNOWN`).
+ `ResourceDriftStatus`: mostra o status de desvio de cada recurso (`DELETED`, `MODIFIED`, `IN_SYNC` ou `NOT_CHECKED`).
+ `BeforeValueFrom`: indica se o valor anterior de uma propriedade vem de `ACTUAL_STATE` ou `PREVIOUS_DEPLOYMENT_STATE`.
+ `Drift`: contém os detalhes do desvio de uma propriedade, incluindo `PreviousValue`, `ActualValue` e `DriftDetectionTimestamp`.
+ `ResourceDriftIgnoredProperties`: contém as propriedades de um recurso para o qual o conjunto de alterações não reverterá o desvio e os motivos para ignorar o desvio.

Para obter mais informações, consulte [DescribeChangeSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeChangeSet.html) na *Referência de APIs do AWS CloudFormation*.

### Execução de conjuntos de alterações sensíveis a desvios
<a name="drift-aware-change-sets-cli-execute"></a>

**Para executar um conjunto de alterações sensível a desvios**  
Depois de analisar o conjunto de alterações, use o comando [execute-change-set](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/execute-change-set.html) para aplicar as alterações:

```
aws cloudformation execute-change-set \
  --change-set-name {{my-drift-aware-changeset}} \
  --stack-name {{my-stack}}
```

Se a implantação falhar, o CloudFormation reverterá os recursos para seu estado real de pré-implantação e preservará as alterações fora de banda feitas desde a última implantação.

## Limitações de suporte a tipos de recursos
<a name="drift-aware-change-sets-supported-resources"></a>

Os conjuntos de alterações sensíveis são compatíveis com uma comparação tripla do estado real, do estado anterior da implantação e do estado desejado para todos os [tipos de recursos](resource-import-supported-resources.md) compatíveis com a detecção de desvios, exceto os seguintes tipos de recursos:
+ `AWS::SageMaker::MlflowTrackingServer`
+ `AWS::Route53Resolver::FirewallRuleGroup`
+ `AWS::MediaLive::Multiplexprogram`
+ `AWS::VpcLattice::ResourceConfiguration`
+ `AWS::S3::StorageLensGroup`
+ `AWS::Bedrock::AgentAlias`
+ `AWS::MSK::Cluster`
+ `AWS::RDS::DBProxy`
+ `AWS::Redshift::ClusterParameterGroup`
+ `AWS::QBusiness::Index`
+ `AWS::NetworkManager::CoreNetwork`
+ `AWS::IAM::OIDCProvider`
+ `AWS::Organizations::ResourcePolicy`
+ `AWS::SNS::TopicInlinePolicy`
+ `AWS::Route53::KeySigningKey`
+ `AWS::DataZone::PolicyGrant`
+ `AWS::Transfer::Certificate`
+ `AWS::SageMaker::ImageVersion`
+ `AWS::Neptune::DBParameterGroup`
+ `AWS::ODB::CloudVmCluster`
+ `AWS::RolesAnywhere::TrustAnchor`
+ `AWS::Detective::Graph`
+ `AWS::Maester::DocumentType`
+ `AWS::SageMaker::ModelPackageGroup`
+ `AWS::S3Express::BucketPolicy`
+ `AWS::Panorama::PackageVersion`
+ `AWS::S3Tables::TableBucketPolicy`

Os conjuntos de alterações sensíveis a desvios recorrem a uma comparação do estado de implantação anterior e do estado desejado para recursos não compatíveis com a comparação tripla.