

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Rileva le modifiche non gestite della configurazione di stack e risorse con il rilevamento della deviazione
<a name="using-cfn-stack-drift"></a>

Anche se gestisci le tue risorse tramite CloudFormation, gli utenti possono modificare tali risorse all'esterno di CloudFormation. Gli utenti possono modificare le risorse direttamente utilizzando il servizio sottostante che ha creato la risorsa. Ad esempio, puoi utilizzare la console Amazon EC2 per aggiornare un'istanza del server creata come parte di uno CloudFormation stack. Alcune modifiche potrebbero essere accidentali mentre altre potrebbero essere apportate intenzionalmente per rispondere a eventi operativi prioritari. In ogni caso, le modifiche apportate all'esterno CloudFormation possono complicare le operazioni di aggiornamento o eliminazione dello stack. È possibile utilizzare il rilevamento delle deviazioni per identificare le risorse dello stack a cui sono state apportate modifiche alla configurazione al di fuori della gestione. CloudFormation Puoi quindi intraprendere un'azione correttiva per risincronizzare le risorse di stack con le relative definizioni nel modello di stack, ad esempio aggiornando direttamente le risorse deviate affinché corrispondano alla propria definizione di modello. La risoluzione della deviazione consente di assicurare la coerenza della configurazione e la riuscita delle operazioni di stack.

**Topics**
+ [Cos'è una deviazione?](#what-is-drift)
+ [Codici di stato del rilevamento della deviazione](#drift-status-codes)
+ [Considerazioni sul rilevamento della deviazione](#drift-considerations)
+ [Rileva la deriva su un'intera CloudFormation pila](detect-drift-stack.md)
+ [Rilevamento della deviazione su singole risorse di stack](detect-drift-resource.md)
+ [Risoluzione della deviazione con un’operazione di importazione](resource-import-resolve-drift.md)

## Cos'è una deviazione?
<a name="what-is-drift"></a>

Il rilevamento della deviazione consente di stabilire se la configurazione effettiva di uno stack differisce, o risulta *deviata*, da quella prevista. Utilizzalo CloudFormation per rilevare la deriva su un intero stack o su singole risorse all'interno dello stack. Una risorsa è considerata come deviata se uno qualsiasi dei relativi valori di proprietà effettivi differisce dai valori di proprietà previsti. Ciò include l'eventuale eliminazione della proprietà o della risorsa. Uno stack è considerato come deviato se una o più delle relative risorse risultano deviate.

Per determinare se una risorsa è andata alla deriva, CloudFormation determina i valori delle proprietà della risorsa previsti, come definiti nel modello dello stack, e tutti i valori specificati come parametri del modello. CloudFormation quindi confronta tali valori attesi con i valori effettivi di tali proprietà delle risorse così come sono attualmente presenti nello stack. Una risorsa è considerata deviata se una o più delle relative proprietà sono state eliminate o se il valore delle stesse è stato modificato.

CloudFormation genera informazioni dettagliate su ogni risorsa dello stack che è andata alla deriva.

CloudFormation rileva la deriva su quelle AWS risorse che supportano il rilevamento della deriva. Alle risorse che non supportano il rilevamento delle deviazione viene assegnato lo stato di deviazione NOT\$1CHECKED. Per un elenco di AWS risorse che supportano il rilevamento della deriva, vedere. [Supporto del tipo di risorse](resource-import-supported-resources.md)

Inoltre, CloudFormation supporta il rilevamento della deriva su tipi di risorse private che sono *disponibili*, ovvero il cui tipo di approvvigionamento è o. `FULLY_MUTABLE` `IMMUTABLE` Per eseguire un rilevamento della deviazione su una risorsa di un tipo di risorsa privata, è necessario che per la versione predefinita del tipo di risorsa registrata nell'account sia possibile effettuare il provisioning. Per ulteriori informazioni sul tipo di provisioning delle risorse, vedi il parametro `ProvisioningType` dell’operazione [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html) nella *Documentazione di riferimento all’API di AWS CloudFormation * e del comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-type.html) nella *AWS CLI Command Reference*. Per ulteriori informazioni sulle risorse private, consulta [Gestione delle estensioni con il CloudFormation registro](registry.md).

Puoi eseguire il rilevamento della deviazione su stack il cui stato è: `CREATE_COMPLETE`, `UPDATE_COMPLETE`, `UPDATE_ROLLBACK_COMPLETE` o `UPDATE_ROLLBACK_FAILED`.

Quando rileva la deriva su uno stack, CloudFormation non rileva la deriva sugli stack annidati che appartengono a quello stack. Per ulteriori informazioni, consulta [Dividi un modello in pezzi riutilizzabili usando stack nidificati](using-cfn-nested-stacks.md). È invece possibile avviare un'operazione di rilevamento della deviazione direttamente sullo stack nidificato.

**Nota**  
CloudFormation determina la deriva solo per i valori delle proprietà che sono impostati in modo esplicito, tramite il modello di stack o specificando i parametri del modello. Ciò non include i valori predefiniti delle proprietà di risorsa. Per tenere CloudFormation traccia della proprietà di una risorsa allo scopo di determinare la deriva, impostate esplicitamente il valore della proprietà, anche se la state impostando sul valore predefinito.

## Codici di stato del rilevamento della deviazione
<a name="drift-status-codes"></a>

Le tabelle di questa sezione descrivono i vari tipi di stato utilizzati con il rilevamento della deviazione:
+ Lo **stato dell'operazione di rilevamento della deviazione** descrive lo stato corrente dell'operazione.
+ **Drift status (Stato di deviazione)** 

  Per i set di stack, questo descrive lo stato di deviazione del set di stack nel suo complesso, in base allo stato di deviazione delle istanze dello stack che lo appartengono.

  Per le istanze dello stack, questo descrive lo stato di deviazione dell'istanza dello stack, in base allo stato di deviazione dello stack associato.

  Lo stato di deviazione dello stack descrive lo stato di deviazione dell'intero stack, in base allo stato di deviazione delle relative risorse.
+ Lo **stato di deviazione di risorsa** descrive lo stato di deviazione di una singola risorsa.

La tabella seguente elenca i codici di stato CloudFormation assegnati alle operazioni di rilevamento della deriva dello stack.


| Stato dell'operazione di rilevamento della deviazione | Description | 
| --- | --- | 
|  `DETECTION_COMPLETE`  |  L'operazione di rilevamento della deviazione di stack è stata completata con successo per tutte le risorse nello stack che supportano il rilevamento della deviazione.  | 
|  `DETECTION_FAILED`  |  L'operazione di rilevamento della deviazione di stack non è riuscita per almeno una risorsa nello stack. I risultati saranno disponibili per le risorse sulle quali il rilevamento della deriva è CloudFormation stato completato con successo.  | 
|  `DETECTION_IN_PROGRESS`  |  L'operazione di rilevamento della deviazione di stack è attualmente in corso.  | 

La tabella seguente elenca i codici di stato di deriva assegnati agli CloudFormation stack.


| Drift status (Stato di deviazione) | Description | 
| --- | --- | 
|  `DRIFTED`  |  Per gli stack: lo stack differisce, o risulta *deviato*, dalla configurazione di modello prevista. Uno stack è considerato come deviato se una o più delle relative risorse risultano deviate. Per le istanze dello stack: un'istanza dello stack è considerata deviata se lo stack ad esso associato è stato deviato. Per i set di stack: un set di stack è considerato deviato se una o più istanze di stack sono state deviate.  | 
|  `NOT_CHECKED`  |  CloudFormation non ha verificato se lo stack, lo stack set o l'istanza dello stack differiscono dalla configurazione del modello prevista.  | 
|  `IN_SYNC`  |  La configurazione corrente di ogni risorsa supportata corrisponde alla configurazione di modello prevista. Uno stack, un set di stack o un'istanza di stack senza risorse che supportano il rilevamento della deviazione avrà anche lo stato IN\$1SYNC.  | 

La tabella seguente elenca i codici di stato di drift assegnati alle risorse dello stack CloudFormation .


| Stato di deviazione di risorsa | Description | 
| --- | --- | 
|  `DELETED`  |  La risorsa differisce dalla relativa configurazione di modello prevista in quanto la risorsa è stata eliminata.  | 
|  `MODIFIED`  |  La risorsa differisce, o risulta deviata, dalla relativa configurazione di modello prevista.  | 
|  `NOT_CHECKED`  |  CloudFormation non ha verificato se la risorsa differisce dalla configurazione del modello prevista.  | 
|  `IN_SYNC`  |  La configurazione corrente della risorsa corrisponde alla configurazione di modello prevista.  | 

La tabella seguente elenca i codici di stato del tipo di differenza CloudFormation assegnati alle proprietà delle risorse che differiscono dalla configurazione prevista del modello.


| Tipi di differenza di proprietà | Description | 
| --- | --- | 
|  `ADD`  |  Un valore è stato aggiunto a una proprietà della risorsa che è un tipo di dati a matrice o elenco.   | 
|  `REMOVE`  |  La proprietà è stata rimossa dalla configurazione di risorsa corrente.  | 
|  `NOT_EQUAL`  |  Il valore di proprietà corrente differisce dal relativo valore previsto come definito nel modello di stack.  | 

## Considerazioni sul rilevamento della deviazione
<a name="drift-considerations"></a>

Per eseguire con successo il rilevamento della deviazione su uno stack, un utente deve disporre delle autorizzazioni seguenti:
+ Autorizzazione di lettura per ogni risorsa che supporta il rilevamento della rilevazione inclusa nello stack. Ad esempio, se lo stack include una risorsa `AWS::EC2::Instance`, devi disporre dell'autorizzazione `ec2:DescribeInstances` per eseguire il rilevamento della deviazione sullo stack.
+ `cloudformation:DetectStackDrift`
+ `cloudformation:DetectStackResourceDrift`
+ `cloudformation:BatchDescribeTypeConfigurations`

Per ulteriori informazioni sull'impostazione delle autorizzazioni in, vedere. CloudFormation [Controlla CloudFormation l'accesso con AWS Identity and Access Management](control-access-with-iam.md)

In alcuni casi estremi, CloudFormation potrebbe non essere possibile restituire sempre risultati di deriva accurati. Devi essere consapevole dell'esistenza di questi casi limite per interpretare in modo appropriato i risultati del rilevamento della deviazione.
+ In alcuni casi, gli oggetti contenuti in matrici di proprietà sono segnalati come deviazione, quando in realtà sono valori predefiniti forniti alla proprietà dal servizio sottostante responsabile della risorsa.
+ Alcune risorse hanno relazioni di collegamento con risorse correlate; una risorsa può quindi effettivamente collegare o rimuovere valori di proprietà per un'altra risorsa, definiti nello stesso modello o in un altro modello. Ad esempio, le risorse `AWS::EC2::SecurityGroupEgress` e `AWS::EC2::SecurityGroupIngress` possono essere utilizzate per collegare e rimuovere valori dalle risorse `AWS::EC2::SecurityGroup`. In questi casi, CloudFormation analizza il modello di pila per gli allegati prima di eseguire il confronto della deriva. Tuttavia, non è CloudFormation possibile eseguire questa analisi tra pile e pertanto potrebbe non restituire risultati di deriva accurati se le risorse collegate risiedono in pile diverse.

  Le risorse che supportano il rilevamento della deviazione e consentono o necessitano collegamenti da altre risorse includono:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html)
+ CloudFormation non esegue il rilevamento della deriva sulla proprietà di alcuna risorsa. `KMSKeyId` Poiché AWS KMS le chiavi possono essere referenziate da più alias, non è CloudFormation possibile garantire risultati di deriva costantemente accurati per questa proprietà.
+ Nel modello di stack è possibile specificare alcune proprietà delle risorse che, per loro stessa natura, CloudFormation non possono essere confrontate con le proprietà delle risorse dello stack risultanti. Queste proprietà non possono quindi essere incluse nei risultati del rilevamento della deviazione. Tali proprietà rientrano in due categorie generali:
  + Valori delle proprietà che CloudFormation non possono essere mappati al valore iniziale delle proprietà della risorsa nel modello dello stack.

    Ad esempio, CloudFormation non può mappare il codice sorgente di una funzione Lambda al tipo di [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-lambda-function-code.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-lambda-function-code.html)proprietà della [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-function.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-function.html)risorsa e quindi non CloudFormation può includerlo nei risultati del rilevamento della deriva. 
  + Valori di proprietà che il servizio responsabile della risorsa non restituisce.

    Esistono alcuni valori di proprietà che, per concezione, non vengono mai restituiti dal servizio a cui la risorsa appartiene. Questi valori contengono in genere informazioni riservate, come password o altri dati sensibili che non devono essere esposti. Ad esempio, il servizio IAM non restituirà mai il valore della `Password` proprietà del tipo di [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-iam-user-loginprofile.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-iam-user-loginprofile.html)proprietà e pertanto non CloudFormation potrà includerlo nei risultati del rilevamento delle deviazioni.
  + Gli oggetti in un array: possono essere in realtà impostazioni predefinite del servizio, non una deviazione aggiunta manualmente.
+ Se riscontri falsi positivi, inviaci i tuoi commenti utilizzando il link di feedback nella CloudFormation console oppure contattaci tramite [AWS re:Post](https://repost.aws/).
+ Alcune proprietà possono avere valori di input uguali ma non identici. Per evitare falsi positivi, è necessario assicurarsi che la configurazione prevista corrisponda alla configurazione effettiva.
  + Ad esempio, la configurazione prevista della proprietà della risorsa può essere 1.024 MB, mentre la configurazione effettiva della stessa proprietà può essere 1 GB. 1.024 MB e 1 GB sono valori uguali ma non identici.

    Quando su questa proprietà della risorsa viene eseguito il rilevamento delle deviazioni, verranno segnalate le deviazioni.

    Per evitare questo falso positivo, modifica la configurazione prevista della proprietà della risorsa a 1.024 MB, quindi esegui il rilevamento delle deviazioni.

# Rileva la deriva su un'intera CloudFormation pila
<a name="detect-drift-stack"></a>

L’esecuzione di un’operazione di rilevamento della deviazione su uno stack determina se quest’ultimo risulta deviato dalla relativa configurazione di modello prevista e restituisce informazioni dettagliate sullo stato di deviazione di ogni risorsa nello stack che supporta il rilevamento della deviazione.

**Per rilevare la deriva su un'intera pila utilizzando il Console di gestione AWS**

1. [Apri la CloudFormation console in /cloudformazione. https://console.aws.amazon.com](https://console.aws.amazon.com/cloudformation/)

1. Dagli elenchi di stack, selezionare lo stack su cui eseguire il rilevamento delle deviazioni. Nel riquadro dei dettagli dello stack, scegliere **Stack actions (Operazioni stack)**, quindi scegliere **Detect drift (Rileva deviazioni)**.  
![\[Il comando Detect drift for current stack (Rileva deviazione per stack corrente) selezionato nel menu Stack actions (Operazioni stack) per lo stack selezionato.\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/UserGuide/images/console-stacks-actions-detect-drift-1.png)

   CloudFormation visualizza una barra informativa che indica che il rilevamento della deriva è stato avviato per lo stack selezionato.

1. Attendere il CloudFormation completamento dell'operazione di rilevamento della deriva. Al termine dell'operazione di rilevamento della deriva, CloudFormation aggiorna **lo stato di Drift** e **l'ora di verifica dell'ultima deriva** per lo stack. Questi campi sono elencati nella sezione **Overview (Panoramica)** del riquadro **Stack info (Info stack)** della pagina dei dettagli dello stack.

   L’operazione di rilevamento della deviazione può durare vari minuti, a seconda del numero di risorse incluse nello stack. È possibile eseguire una sola operazione di rilevamento della deriva su un determinato stack alla volta. CloudFormation continua l'operazione di rilevamento della deriva anche dopo aver chiuso la barra delle informazioni.

1. Esaminare i risultati del rilevamento della deviazione per lo stack e le relative risorse. Con lo stack selezionato, dal menu **Stack actions (Operazioni stack)**, selezionare **View drift results (Visualizza risultati deviazione)**.

   CloudFormation elenca lo stato generale della deriva dello stack, oltre all'ultima volta in cui è stato avviato il rilevamento della deriva sullo stack o su una delle sue singole risorse. Uno stack è considerato come deviato se una o più delle relative risorse risultano deviate.  
![\[La pagina Deviazioni per lo stack selezionato mostra lo stato di deviazione stack globale, lo stato del rilevamento della deviazione e l’ultima volta in cui il rilevamento è stato avviato sullo stack o su una qualsiasi delle relative risorse.\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/UserGuide/images/console-stacks-drifts-overview-1.png)

   Nella sezione **Resource drift status, CloudFormation elenca ogni risorsa** dello stack, il relativo stato di deriva e l'ultima volta in cui è stato avviato il rilevamento della deriva sulla risorsa. L’ID logico e l’ID fisico di ogni risorsa sono visualizzati per consentirti di identificarla. Inoltre, per le risorse con stato **MODIFICATO**, visualizza i dettagli sulla deriva delle risorse. CloudFormation 

   È possibile ordinare le risorse in base al loro stato deviazione, utilizzando la colonna **Drift (Deviazione)**.

   1. Per visualizzare i dettagli su una risorsa modificata

     1. Con le risorse modificate selezionate, selezionare **View drift details (Visualizza dettagli deviazione)**.

       CloudFormation visualizza la pagina di dettaglio della deriva per quella risorsa. Questa pagina elenca i valori di proprietà previsti e correnti della risorsa e le differenze tra gli stessi.

       Per evidenziare una differenza, nella sezione **Differences (Differenze)** selezionare il nome della proprietà.
       + Le proprietà aggiunte vengono evidenziate in verde nella colonna **Current (Corrente)** della sezione **Details (Dettagli)**.
       + Le proprietà eliminate vengono evidenziate in rosso nella colonna **Expected (Previsti)** della sezione **Details (Dettagli)**.
       + Le proprietà il cui valore è state modificato sono evidenziate in giallo nelle colonne **Expected (Previsti)** e **Current (Correnti)**.  
![\[La sezione Stato deviazione risorsa nella pagina Dettagli deviazione, che contiene informazioni sulla deviazione per ogni risorsa nello stack che supporta il rilevamento della deviazione. I dettagli includono lo stato di deviazione e i valori di proprietà previsti e correnti.\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/UserGuide/images/console-stacks-drifts-drift-details-differences-1.png)

**Per rilevare la deriva su un'intera pila utilizzando il AWS CLI**
**Importante**  
Esamina l’**ora dell’ultima verifica della deviazione** per lo stack e conferma che sia precedente al timestamp mostrato nei risultati della deviazione delle risorse per evitare l’uso di dati non aggiornati.

Per rilevare la deriva su un'intera pila utilizzando il AWS CLI, utilizzate i seguenti comandi: AWS CLI 
+ **detect-stack-drift** per avviare un’operazione di rilevamento della deviazione su uno stack.
+ **describe-stack-drift-detection-status** per monitorare lo stato dell’operazione di rilevamento della deviazione di stack.
+ **describe-stack-resource-drifts** per esaminare i dettagli dell’operazione di rilevamento della deviazione di stack.

1. Utilizzare **detect-stack-drift** per rilevare la deviazione su un intero stack. Specificare il nome o l’ARN dello stack. È inoltre possibile specificare la logica IDs di qualsiasi risorsa specifica che si desidera utilizzare come filtri per questa operazione di rilevamento della deriva.

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

   Output:

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

1. Poiché le operazioni di rilevamento della deviazione di stack possono durare parecchio tempo, utilizzare **describe-stack-drift-detection-status** per monitorare lo stato dell’operazione di rilevamento. Questo comando utilizza l’ID rilevamento della deviazione di stack restituito dal comando **detect-stack-drift**.

   Nell’esempio seguente, abbiamo passato come parametro a **detect-stack-drift** l’ID rilevamento della deviazione di stack restituito dall’esempio **describe-stack-drift-detection-status** precedente Il parametro restituisce i dettagli dell’operazione che mostrano che l’operazione di rilevamento della deviazione è stata completata, che una singola risorsa di stack risulta deviata e che di conseguenza l’intero stack è considerato come deviato.

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

   Output:

   ```
   {
       "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. Al termine dell’operazione di rilevamento della deviazione di stack, utilizzare il comando **describe-stack-resource-drifts** per esaminare i risultati, inclusi i valori di proprietà correnti e previsti per le risorse deviate.

   L’esempio seguente utilizza l’opzione `--stack-resource-drift-status-filters` per richiedere le informazioni sulla deviazione di stack per le risorse che sono state modificate o eliminate. La richiesta restituisce informazioni sulla risorsa che è stata modificata, tra cui dettagli su due proprietà della stessa i cui valori sono stati modificati. Nessuna risorsa è stata eliminata.

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

   Output:

   ```
   {
       "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"
           }
       ]
   }
   ```

# Rilevamento della deviazione su singole risorse di stack
<a name="detect-drift-resource"></a>

Puoi rilevare la deviazione su specifiche risorse di uno stack anziché sull’intero stack. Ciò è particolarmente utile quando è necessario determinare soltanto se specifiche risorse corrispondono di nuovo alle relative configurazioni di modello previste.

Quando si esegue il rilevamento della deriva su una risorsa, aggiorna CloudFormation anche lo stato generale della deriva dello stack e l'**ora dell'ultima verifica della deriva**, se applicabile. Ad esempio, supponiamo che lo stato di deviazione di uno stack sia `IN_SYNC`. È stato CloudFormation eseguito il rilevamento della deriva su una o più risorse contenute in quella pila e CloudFormation rileva che una o più di tali risorse si sono spostate. CloudFormation aggiorna lo stato di deriva dello stack a. `DRIFTED` Supponiamo invece di disporre di uno stack il cui stato di deviazione è `DRIFTED` a causa di una singola risorsa deviata. Se ripristini i valori di proprietà previsti per la risorsa e quindi rilevi nuovamente la deriva sulla risorsa, CloudFormation aggiornerà sia lo stato di deriva della risorsa che lo stato di deriva dello stack `IN_SYNC` senza che sia necessario rilevare nuovamente la deriva sull'intero stack.

**Per rilevare la deriva su una singola risorsa utilizzando il Console di gestione AWS**

1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformazione.](https://console.aws.amazon.com/cloudformation/)

1. Dall'elenco di stack, selezionare lo stack che contiene la risorsa. CloudFormation mostra i dettagli stack per quello stack.

1. Nel riquadro di spostamento a sinistra, in **Stack**, scegliere **Azioni stack**, quindi scegliere **Rileva deriva**.

1. In **Stato deviazione risorsa**, scegliere la risorsa e quindi selezionare **Rileva deviazione per risorsa**.

   CloudFormation esegue il rilevamento della deriva sulla risorsa selezionata. In caso di successo, CloudFormation aggiorna lo stato di deriva della risorsa e lo stato generale della deriva dello stack, se necessario. CloudFormation aggiorna anche il timestamp dell'ultima volta che il rilevamento della deriva è stato eseguito sulla risorsa e sullo stack nel suo insieme. Se la risorsa è stata modificata, CloudFormation visualizza informazioni dettagliate sulla deriva sui valori delle proprietà attesi e correnti della risorsa.

1. Esaminare i risultati del rilevamento della deviazione per la risorsa.

   1. Per visualizzare i dettagli su una risorsa modificata

     1. Con le risorse modificate selezionate, selezionare **View drift details (Visualizza dettagli deviazione)**.

       CloudFormation visualizza i dettagli sulla deriva per quella risorsa, inclusi i valori delle proprietà attesi e correnti della risorsa e le eventuali differenze tra le due.

       Per evidenziare una differenza, nella sezione **Differences (Differenze)** selezionare il nome della proprietà.
       + Le proprietà aggiunte vengono evidenziate in verde nella colonna **Current (Corrente)** della sezione **Details (Dettagli)**.
       + Le proprietà eliminate vengono evidenziate in rosso nella colonna **Expected (Previsti)** della sezione **Details (Dettagli)**.
       + Le proprietà il cui valore è state modificato sono evidenziate in giallo nelle colonne **Expected (Previsti)** e **Current (Correnti)**.  
![\[La sezione Stato deviazione risorsa nella pagina Dettagli deviazione, che contiene informazioni sulla deviazione per ogni risorsa nello stack che supporta il rilevamento della deviazione. I dettagli includono lo stato di deviazione e i valori di proprietà previsti e correnti.\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/UserGuide/images/console-stacks-drifts-drift-details-differences-1.png)

**Per rilevare la deriva su una singola risorsa utilizzando il AWS CLI**
+ 
**Importante**  
Esamina l’**ora dell’ultima verifica della deviazione** per la risorsa dello stack e conferma che sia precedente al timestamp mostrato nei risultati della deviazione delle risorse per evitare l’uso di dati non aggiornati.

  Per rilevare la deriva su una singola risorsa utilizzando il AWS CLI, utilizzare il **detect-stack-resource-drift** comando. Specifica l’ID logico della risorsa, nonché lo stack che la contiene.

  L’esempio seguente esegue un’operazione di rilevamento della deviazione su una specifica risorsa di stack, `my-drifted-resource`. La risposta restituisce informazioni che confermano che la risorsa è stata modificata, tra cui dettagli su due proprietà della stessa i cui valori sono stati modificati.

  ```
  aws cloudformation detect-stack-resource-drift \
      --stack-name my-stack-with-resource-drift \
      --logical-resource-id my-drifted-resource
  ```

  Output:

  ```
  {
      "StackResourceDrift": {
          "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-26T18:54:28.462Z", 
          "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": "my-drifted-resource"
      }
  }
  ```

# Risoluzione della deviazione con un’operazione di importazione
<a name="resource-import-resolve-drift"></a>

Ci possono essere casi in cui la configurazione di una risorsa ha deviato dalla configurazione prevista e si desidera accettare la nuova configurazione come configurazione prevista. Nella maggior parte dei casi, è possibile risolvere i risultati della deviazione aggiornando la definizione della risorsa nel modello di stack con una nuova configurazione e quindi eseguire un aggiornamento dello stack. Tuttavia, se la nuova configurazione aggiorna una proprietà della risorsa che richiede la sostituzione, la risorsa verrà ricreata durante l’aggiornamento dello stack. Se si desidera mantenere la risorsa esistente, è possibile utilizzare la funzionalità di importazione delle risorse per aggiornare la risorsa e risolvere i risultati della deviazione senza causare la sostituzione della risorsa.

La risoluzione della deviazione per una risorsa tramite un’operazione di importazione consiste nelle fasi di base riportate di seguito.
+ [Aggiungi un DeletionPolicy attributo, impostato su Retain, alla risorsa](#resource-import-resolve-drift-console-step-01-update-stack). In questo modo la risorsa esistente viene mantenuta anziché eliminata quando viene rimossa dallo stack.
+ [Rimuovere la risorsa dal modello ed eseguire un’operazione di aggiornamento dello stack](#resource-import-resolve-drift-console-step-02-remove-drift). Questa operazione rimuove la risorsa dallo stack, ma non la elimina.
+ [Descrivere lo stato effettivo della risorsa nel modello di stack e quindi importare nuovamente la risorsa esistente nello stack](#resource-import-resolve-drift-console-step-03-update-template). Questa operazione aggiunge nuovamente la risorsa nello stack e risolve le differenze di proprietà che causavano i risultati di deviazione.

Per ulteriori informazioni sull’importazione delle risorse, consulta [Importazione AWS manuale delle risorse in uno CloudFormation stack](import-resources-manually.md). Per un elenco di risorse che supportano l’importazione, consulta [Supporto del tipo di risorse](resource-import-supported-resources.md).

In questo esempio, viene utilizzato il modello seguente, denominato `templateToImport.json`.

------
#### [ Example JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
         "ServiceTable":{
           "Type":"AWS::DynamoDB::Table",
           "Properties":{
              "TableName":"Service",
              "AttributeDefinitions":[
                 {
                    "AttributeName":"key",
                    "AttributeType":"S"
                 }
              ],
              "KeySchema":[
                 {
                    "AttributeName":"key",
                    "KeyType":"HASH"
                 }
              ],
              "BillingMode": "PROVISIONED",
              "ProvisionedThroughput":{
                 "ReadCapacityUnits":5,
                 "WriteCapacityUnits":1
              }
           }
        },
        "GamesTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "TableName": "Games",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PROVISIONED",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 1
                }
            }
        }
    }
}
```

------
#### [ Example YAML ]

```
AWSTemplateFormatVersion: 2010-09-09
Description: Import test
Resources:
  ServiceTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Service
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
  GamesTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Games
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
```

------

In questo esempio, supponiamo che un utente abbia modificato una risorsa esterna a CloudFormation. Dopo aver eseguito il rilevamento della deviazione, abbiamo scoperto che è `GamesTable` stato modificato da `BillingMode` in `PAY_PER_REQUEST`. Per ulteriori informazioni sul rilevamento delle deviazioni, consulta [Rileva le modifiche non gestite della configurazione di stack e risorse con il rilevamento della deviazione](using-cfn-stack-drift.md).

![\[I risultati della deviazione mostrano i risultati previsti ed effettivi nella console.\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/UserGuide/images/drift-results-gamestable.png)


Il nostro stack è ora obsoleto, le nostre risorse sono attive, ma vogliamo preservare la configurazione delle risorse desiderata. Possiamo farlo risolvendo la deviazione attraverso un’operazione di importazione, senza interrompere i servizi.

## Risolvi la deriva con un'operazione di importazione utilizzando la console CloudFormation
<a name="resource-import-resolve-drift-console"></a>

### Passaggio 1. Aggiornare lo stack con la policy di eliminazione Retain
<a name="resource-import-resolve-drift-console-step-01-update-stack"></a>

**Per aggiornare lo stack utilizzando un attributo `DeletionPolicy` con l’opzione `Retain`**

1. Accedi Console di gestione AWS e apri la CloudFormation console all'indirizzo [https://console.aws.amazon.com/cloudformazione.](https://console.aws.amazon.com/cloudformation/)

1. Nella pagina **Stack** scegliere lo stack che ha deviato.

1. Scegliere **Aggiorna**, quindi **Sostituisci modello corrente** dal riquadro dei dettagli dello stack.

1. Nella pagina **Specifica modello** fornire il modello aggiornato contenente l’attributo `DeletionPolicy` con l’opzione `Retain` utilizzando uno dei seguenti metodi:
   + Scegliere **URL Amazon S3**, quindi specificare l’URL per il tuo modello nella casella di testo.
   + Scegliere **Carica un file modello**, quindi cercare il modello.

   Quindi, seleziona **Successivo**.

1. Esaminare la pagina **Specifica dettagli stack** e scegliere **Avanti**.

1. Esaminare la pagina **Configura opzioni stack** e scegliere **Avanti**.

1. **Nella *stack-name* pagina di **revisione**, scegli Update stack.**

*Risultati*: nella pagina **Eventi** dello stack, lo stato è `UPDATE_COMPLETE`.

Per risolvere il problema della deriva derivante da un'operazione di importazione, senza interrompere i servizi, specificate a `Retain` [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html)per le risorse che desiderate rimuovere dallo stack. Nell'esempio seguente, abbiamo aggiunto un [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html)attributo, set to`Retain`, alla risorsa. `GamesTable`

------
#### [ Example JSON ]

```
    "GamesTable": {
        "Type": "AWS::DynamoDB::Table",
        "DeletionPolicy": "Retain",
        "Properties": {
            "TableName": "Games",
```

------
#### [ Example YAML ]

```
  GamesTable:
    Type: AWS::DynamoDB::Table
    DeletionPolicy: Retain
    Properties:
      TableName: Games
```

------

### Passaggio 2. Rimozione delle risorse deviate, dei parametri correlati e degli output
<a name="resource-import-resolve-drift-console-step-02-remove-drift"></a>

**Per rimuovere le risorse deviate, i parametri correlati e gli output**

1. Scegliere **Aggiorna**, quindi **Sostituisci modello corrente** dal riquadro dei dettagli dello stack.

1. Nella pagina **Specifica modello** fornire al modello aggiornato le risorse, i parametri correlati e gli output rimossi dal modello di stack utilizzando uno dei seguenti metodi:
   + Scegliere **URL Amazon S3**, quindi specificare l’URL per il tuo modello nella casella di testo.
   + Scegliere **Carica un file modello**, quindi cercare il modello.

   Quindi, seleziona **Successivo**.

1. Esaminare la pagina **Specifica dettagli stack** e scegliere **Avanti**.

1. Esaminare la pagina **Configura opzioni stack** e scegliere **Avanti**.

1. Nella *stack-name* pagina **Revisione**, scegli **Aggiorna stack**.

*Risultati*: **ID logico** `GamesTable` ha lo stato `DELETE_SKIPPED` nella pagina **Events Eventi** dello stack.

Attendi il CloudFormation completamento dell'operazione di aggiornamento dello stack. Al termine dell’operazione di aggiornamento dello stack, rimuovere la risorsa, i parametri correlati e gli output dal modello di stack. Quindi, importare il modello aggiornato. Dopo aver completato queste operazioni, il modello di esempio sarà simile al seguente.

------
#### [ Example JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
         "ServiceTable":{
           "Type":"AWS::DynamoDB::Table",
           "Properties":{
              "TableName":"Service",
              "AttributeDefinitions":[
                 {
                    "AttributeName":"key",
                    "AttributeType":"S"
                 }
              ],
              "KeySchema":[
                 {
                    "AttributeName":"key",
                    "KeyType":"HASH"
                 }
              ],
              "BillingMode": "PROVISIONED",
              "ProvisionedThroughput":{
                 "ReadCapacityUnits":5,
                 "WriteCapacityUnits":1
              }
           }
        }
    }
}
```

------
#### [ Example YAML ]

```
AWSTemplateFormatVersion: 2010-09-09
Description: Import test
Resources:
  ServiceTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Service
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
```

------

### Fase 3. Aggiornamento del modello in modo che corrisponda allo stato attivo delle risorse
<a name="resource-import-resolve-drift-console-step-03-update-template"></a>

**Per aggiornare il modello in modo che corrisponda allo stato attivo delle risorse**

1. Per importare il modello aggiornato, scegliere **Operazioni stack** quindi scegliere **Importa risorse nello stack**.  
![\[L’opzione Importa risorse nello stack nella console.\]](http://docs.aws.amazon.com/it_it/AWSCloudFormation/latest/UserGuide/images/stack-actions-import.png)

1. Esaminare la pagina **Panoramica importazione** per un elenco di elementi da fornire durante questa operazione, quindi scegliere **Avanti**.

1. Nella pagina **Specifica modello**, fornire il modello aggiornato utilizzando uno dei metodi descritti di seguito.
   + Scegliere **URL Amazon S3**, quindi specificare l’URL per il tuo modello nella casella di testo.
   + Scegliere **Carica un file modello**, quindi cercare il modello.

   Quindi, seleziona **Successivo**.

1. Nella pagina **Identifica risorse**, identifica ogni risorsa di destinazione. Per ulteriori informazioni, consulta [Identificatori di risorse](import-resources-manually.md#resource-import-identifiers-unique-ids).

   1. In **Proprietà identificatore**, scegliere il tipo di identificatore di risorsa. Ad esempio, la proprietà `TableName` identificherà la risorsa `AWS::DynamoDB::Table`.

   1. In **Valore identificatore**, immettere il valore effettivo della proprietà. Nel modello di esempio, `TableName` per la risorsa `GamesTable` è `Games`.

   1. Scegli **Successivo**.

1. Esaminare la pagina **Specifica dettagli** stack e scegliere **Avanti**.

1. Nella pagina **Panoramica importazione** esaminare le risorse importate, quindi scegliere **Importa risorse**. Questa operazione importerà il tipo di risorsa `AWS::DynamoDB::Table` nello stack.

*Risultati*: in questo esempio, è stata risolta la deviazione delle risorse attraverso un’operazione di importazione, senza interrompere i servizi. Puoi controllare lo stato di avanzamento di un'azione di importazione nella CloudFormation console nella scheda Eventi. Le risorse importate avranno uno stato `IMPORT_COMPLETE` seguito da uno stato `CREATE_COMPLETE` con **Importazione risorse completata** come motivo dello stato.

Attendi il CloudFormation completamento dell'operazione di aggiornamento dello stack. Al termine dell’operazione di aggiornamento dello stack, aggiornare il modello in modo che corrisponda allo stato effettivo di deviazione delle risorse. Ad esempio, `BillingMode` verrà impostato su `PAY_PER_REQUEST` e `ReadCapacityUnits` e `WriteCapacityUnits` saranno impostati su `0`.

------
#### [ Example JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
         "ServiceTable":{
           "Type":"AWS::DynamoDB::Table",
           "Properties":{
              "TableName":"Service",
              "AttributeDefinitions":[
                 {
                    "AttributeName":"key",
                    "AttributeType":"S"
                 }
              ],
              "KeySchema":[
                 {
                    "AttributeName":"key",
                    "KeyType":"HASH"
                 }
              ],
              "BillingMode": "PROVISIONED",
              "ProvisionedThroughput":{
                 "ReadCapacityUnits":5,
                 "WriteCapacityUnits":1
              }
           }
        },
        "GamesTable": {
            "Type": "AWS::DynamoDB::Table",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "Games",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PAY_PER_REQUEST",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 0,
                    "WriteCapacityUnits": 0
                }
            }
        }
    }
}
```

------
#### [ Example YAML ]

```
AWSTemplateFormatVersion: 2010-09-09
Description: Import test
Resources:
  ServiceTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Service
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
  GamesTable:
    Type: AWS::DynamoDB::Table
    DeletionPolicy: Retain
    Properties:
      TableName: Games
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PAY_PER_REQUEST
      ProvisionedThroughput:
        ReadCapacityUnits: 0
        WriteCapacityUnits: 0
```

------