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.
-
Aggiungi un DeletionPolicy attributo, impostato su Retain, alla risorsa. 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. 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. 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 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
.
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.
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
Accedi AWS Management Console e apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformazione.
-
Nella pagina Stacks (stack) scegliere lo stack che ha deviato.
-
Scegliere Update (Aggiorna), quindi Replace current template (Sostituisci modello corrente) dal riquadro dei dettagli dello stack.
-
Nella pagina Specify template (Specifica modello) fornire il modello aggiornato contenente l'attributo
DeletionPolicy
con l'opzioneRetain
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).
-
-
Esaminare la pagina Specify stack details (Specifica dettagli stack) e scegliere Next (Avanti).
-
Esaminare la pagina Configure stack options (Configura opzioni stack) e scegliere Next (Avanti).
-
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
Fase 2: Rimozione delle risorse deviate, dei parametri correlati e degli output
Per rimuovere le risorse deviate, i parametri correlati e gli output
-
Scegliere Update (Aggiorna), quindi Replace current template (Sostituisci modello corrente) dal riquadro dei dettagli dello stack.
-
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).
-
-
Esaminare la pagina Specify stack details (Specifica dettagli stack) e scegliere Next (Avanti).
-
Esaminare la pagina Configure stack options (Configura opzioni stack) e scegliere Next (Avanti).
-
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.
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
-
Per importare il modello aggiornato, scegliere Stack actions (Operazioni stack)a quindi scegliere Import resources into stack (Importa risorse nello stack).
-
Esaminare la pagina Import overview (Panoramica importazione) per un elenco di elementi da fornire durante questa operazione, quindi scegliere Next (Avanti).
-
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).
-
-
Nella pagina Identify resources (Identifica risorse), identifica ogni risorsa di destinazione. Per ulteriori informazioni, consulta Identificatori di risorse.
-
In Identifier property (Proprietà identificatore), scegliere il tipo di identificatore di risorsa. Ad esempio, la proprietà
TableName
identificherà la risorsaAWS::DynamoDB::Table
. -
In Identifier value (Valore identificatore), immettere il valore effettivo della proprietà. Nel modello di esempio,
TableName
per la risorsaGamesTable
èGames
. -
Scegli Next (Successivo).
-
-
Esaminare la pagina Specify stack details (Specifica dettagli stack) e scegliere Next (Avanti).
-
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
.