Risoluzione della deviazione con un’operazione di importazione - AWS CloudFormation

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à.

Risoluzione della deviazione con un’operazione di importazione

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.

Per ulteriori informazioni sull’importazione delle risorse, consulta Importazione manuale delle risorse AWS in uno stack CloudFormation. Per un elenco di risorse che supportano l’importazione, consulta Supporto del tipo di risorse.

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 al di fuori di 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.

I risultati della deviazione mostrano i risultati previsti ed effettivi nella console.

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.

Risolvere la deriva con un’operazione di importazione utilizzando la console CloudFormation

Fase 1: Aggiornare lo stack con la policy di eliminazione Retain

Per aggiornare lo stack utilizzando un attributo DeletionPolicy con l’opzione Retain
  1. Accedere alla Console di gestione AWS e aprire la console di CloudFormation all’indirizzo https://console.aws.amazon.com/cloudformation.

  2. Nella pagina Stack scegliere lo stack che ha deviato.

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

  4. 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.

  5. Esaminare la pagina Specifica dettagli stack e scegliere Avanti.

  6. Esaminare la pagina Configura opzioni stack e scegliere Avanti.

  7. Nella pagina Esamina nome stack scegliere Aggiorna stack.

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

Per risolvere la deviazione attraverso un’operazione di importazione, senza interrompere i servizi, specificare un attributo DeletionPolicy Retain per le risorse che si desidera rimuovere dallo stack. Nell’esempio seguente è stato aggiunto un attributo DeletionPolicy impostato su 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

Fase 2: Rimozione delle risorse deviate, dei parametri correlati e degli output

Per rimuovere le risorse deviate, i parametri correlati e gli output
  1. Scegliere Aggiorna, quindi Sostituisci modello corrente dal riquadro dei dettagli dello stack.

  2. 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.

  3. Esaminare la pagina Specifica dettagli stack e scegliere Avanti.

  4. Esaminare la pagina Configura opzioni stack e scegliere Avanti.

  5. Nella pagina Esamina nome stack scegliere Aggiorna stack.

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

Attendere fino a che CloudFormation completa l’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

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.
  2. Esaminare la pagina Panoramica importazione per un elenco di elementi da fornire durante questa operazione, quindi scegliere Avanti.

  3. 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.

  4. Nella pagina Identifica risorse, identifica ogni risorsa di destinazione. Per ulteriori informazioni, consulta Identificatori di risorse .

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

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

    3. Scegli Successivo.

  5. Esaminare la pagina Specifica dettagli stack e scegliere Avanti.

  6. 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. È possibile controllare lo stato di avanzamento di un’operazione di importazione nella console CloudFormation 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.

Attendere fino a che CloudFormation completa l’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