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 caratteristica 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 di risorse, vedereImporta AWS risorse in una CloudFormation pila con un'importazione di risorse. Per un elenco di risorse che supportano l'importazione, vedereSupporto per tipi 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 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 della deriva, vedereRileva le modifiche di configurazione non gestite agli stack e alle risorse con il rilevamento della deriva.

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.

Risolvi 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. Accedi AWS Management Console e apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformazione.

  2. Nella pagina Stacks (stack) scegliere lo stack che ha deviato.

  3. Scegliere Update (Aggiorna), quindi Replace current template (Sostituisci modello corrente) dal riquadro dei dettagli dello stack.

  4. Nella pagina Specify template (Specifica modello) fornire il modello aggiornato contenente l'attributo DeletionPolicy con l'opzione Retain utilizzando uno dei seguenti metodi:

    • Scegli Amazon S3 URL, quindi specifica URL il modello nella casella di testo.

    • Scegliere Upload a template file (Carica un file modello), quindi cercare il modello.

    Quindi, seleziona Next (Successivo).

  5. Esaminare la pagina Specify stack details (Specifica dettagli stack) e scegliere Next (Avanti).

  6. Esaminare la pagina Configure stack options (Configura opzioni stack) e scegliere Next (Avanti).

  7. Nella stack-name pagina di revisione, scegli Update stack.

Risultati: nella pagina Events (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 DeletionPolicyper le risorse che desiderate rimuovere dallo stack. Nell'esempio seguente, abbiamo aggiunto un DeletionPolicyattributo, set toRetain, 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 Update (Aggiorna), quindi Replace current template (Sostituisci modello corrente) dal riquadro dei dettagli dello stack.

  2. Nella pagina Specify template (Specifica modello) fornire al modello aggiornato le risorse, i parametri correlati e gli output rimossi dal modello di stack utilizzando uno dei seguenti metodi:

    • Scegli Amazon S3 URL, quindi specifica URL il modello nella casella di testo.

    • Scegliere Upload a template file (Carica un file modello), quindi cercare il modello.

    Quindi, seleziona Next (Successivo).

  3. Esaminare la pagina Specify stack details (Specifica dettagli stack) e scegliere Next (Avanti).

  4. Esaminare la pagina Configure stack options (Configura opzioni stack) e scegliere Next (Avanti).

  5. Nella stack-name pagina di revisione, scegli Update stack.

Risultati: Logical ID (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

Per aggiornare il modello in modo che corrisponda allo stato attivo delle risorse
  1. Per importare il modello aggiornato, scegliere Stack actions (Operazioni stack)a quindi scegliere Import resources into stack (Importa risorse nello stack).

    L' opzione Importa risorse nello stack nella console.
  2. Esaminare la pagina Import overview (Panoramica importazione) per un elenco di elementi da fornire durante questa operazione, quindi scegliere Next (Avanti).

  3. Nella pagina Specify model (Specifica modello), fornire il modello aggiornato utilizzando uno dei metodi descritti di seguito.

    • Scegli Amazon S3 URL, quindi specifica URL il modello nella casella di testo.

    • Scegliere Upload a template file (Carica un file modello), quindi cercare il modello.

    Quindi, seleziona Next (Successivo).

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

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

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

    3. Scegli Next (Successivo).

  5. Esaminare la pagina Specify stack details (Specifica dettagli stack) e scegliere Next (Avanti).

  6. Nella pagina Import overview (Panoramica importazione) esaminare le risorse importate, quindi scegliere Import resources (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 Resource import complete (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