Rollback di un aggiornamento - 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à.

Rollback di un aggiornamento

A volte, quando CloudFormation tenta di ripristinare un aggiornamento dello stack, non riesce a ripristinare tutte le modifiche apportate durante il processo di aggiornamento. Questo si chiama UPDATE_ROLLBACK_FAILED stato. Ad esempio, potresti avere uno stack che inizia a tornare a una vecchia istanza di database che è stata eliminata all'esterno di CloudFormation. Poiché CloudFormation non sa che il database è stato eliminato, presume che l'istanza database sia ancora disponibile e tenta di eseguire il rollback, provocando un errore nel rollback di aggiornamento.

Uno stack nello UPDATE_ROLLBACK_FAILED stato non può essere aggiornato, ma può essere ripristinato a uno stato funzionante ()UPDATE_ROLLBACK_COMPLETE. Dopo aver riportato lo stack alle impostazioni originali, puoi provare ad aggiornarlo nuovamente.

Nella maggior parte dei casi, devi correggere l'errore che causa un guasto durante l'aggiornamento del rollback prima di poter continuare a eseguire il rollback dello stack. In altri casi, puoi continuare a eseguire il rollback dell'aggiornamento senza alcuna modifica, ad esempio quando un'operazione stack scade.

Nota

Se utilizzi gli stack nidificati, il rollback dello stack padre cercherà di eseguire il rollback anche su tutti gli stack figlio.

Per continuare il rollback di un aggiornamento (console)
  1. Accedi AWS Management Console e apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformazione.

  2. Nella barra di navigazione nella parte superiore dello schermo, scegli Regione AWS dove si trova lo stack.

  3. Nella pagina Stack, scegli lo stack che desideri aggiornare, scegli Stack actions, quindi scegli Continua il rollback degli aggiornamenti.

    Se nessuna delle soluzioni Risoluzione degli errori funziona, puoi utilizzare l'opzione avanzata per ignorare le risorse che non CloudFormation possono essere ripristinate correttamente. È necessario cercare e digitare la logica IDs delle risorse che si desidera ignorare. Specificate solo le risorse che sono state inserite nello UPDATE_FAILED stato durante UpdateRollback e non durante l'aggiornamento successivo.

    avvertimento

    CloudFormation imposta lo stato delle risorse specificate su UPDATE_COMPLETE e continua a ripristinare lo stack. Dopo aver completato il rollback, lo stato delle risorse saltate saranno incoerenti con lo stato delle risorse nel modello di stack. Prima di eseguire un altro aggiornamento dello stack, devi aggiornare lo stack o le risorse in modo che siano coerenti. Altrimenti, i successivi aggiornamenti dello stack potrebbero fallire e lo stack diventerà irrecuperabile.

    Specifica il numero minimo di risorse necessarie per eseguire il rollback dello stack. Ad esempio, un aggiornamento della risorsa non riuscito potrebbe causare errori nelle risorse dipendenti. In questo caso, potrebbe non essere necessario ignorare le risorse dipendenti.

    Per ignorare le risorse che fanno parte di stack nidificati, utilizzare il formato seguente: NestedStackName.ResourceLogicalID. Se desideri specificare l'ID logico di una risorsa stack (Type: AWS::CloudFormation::Stack) nell'elenco ResourcesToSkip, lo stack corrispondente incorporato deve essere in uno dei seguenti stati: DELETE_IN_PROGRESSDELETE_COMPLETE o DELETE_FAILED.

Per continuare il rollback di un aggiornamento (AWS CLI)
  • Utilizzo dell'continue-update-rollbackcomando con la --stack-name possibilità di specificare l'ID dello stack di cui si desidera continuare a ripristinare.

Continua il rollback dopo gli aggiornamenti dello stack annidato non riusciti

Quando sono presenti più stack annidati l'uno nell'altro, potrebbe essere necessario ignorare le risorse su più livelli nidificati per riportare l'intera gerarchia degli stack allo stato operativo.

Ad esempio, avete uno stack root chiamato WebInfra che contiene due stack più piccoli al suo interno: and. WebInfra-Compute WebInfra-Storage Questi due stack hanno anche i propri stack annidati al loro interno.

Se qualcosa va storto durante un aggiornamento e il processo di aggiornamento fallisce, l'intera gerarchia degli stack potrebbe finire UPDATE_ROLLBACK_FAILED nello stato, come illustrato nel diagramma seguente.

Un diagramma che mostra una gerarchia di stack nidificati su tre livelli.
Nota

I nomi di stack in questo esempio vengono troncati per semplicità. I nomi degli stack secondari sono in genere generati CloudFormation e contengono stringhe casuali univoche, pertanto i nomi effettivi potrebbero non essere facili da usare.

Per rendere lo stack principale utilizzabile utilizzando il continue-update-rollback comando, è necessario utilizzare l'--resources-to-skipopzione per ignorare le risorse per le quali non è stato possibile eseguire il rollback.

L'continue-update-rollbackesempio seguente riprende un'operazione di rollback da un aggiornamento dello stack precedentemente non riuscito. In questo esempio, l'--resources-to-skipopzione include i seguenti elementi:

  • myCustom

  • WebInfra-Compute-Asg.myAsg

  • WebInfra-Compute-LB.myLoadBalancer

  • WebInfra-Storage.DB

Per le risorse dello stack principale, è sufficiente fornire l'ID logico, myCustom ad esempio. Tuttavia, per le risorse contenute negli stack nidificati, è necessario fornire sia il nome dello stack nidificato che il relativo ID logico, separati da un punto. Ad esempio WebInfra-Compute-Asg.myAsg.

aws cloudformation continue-update-rollback --stack-name WebInfra \ --resources-to-skip myCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB
Per trovare il nome dello stack di uno stack nidificato

Puoi individuarlo nell'ID dello stack secondario o nell'Amazon Resource Name ()ARN.

L'ARNesempio seguente si riferisce a uno stack denominato. WebInfra-Storage-Z2VKC706XKXT

arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd
Per trovare l'ID logico di uno stack annidato

Puoi trovare l'ID logico dello stack figlio nella definizione del modello del padre. Nel diagramma, lo stack LogicalId WebInfra-Storage-DB secondario si trova DB nello stack principale. WebInfra-Storage

Nella CloudFormation console, puoi anche trovare l'ID logico nella colonna ID logico per la risorsa dello stack nella scheda Risorse o nella scheda Eventi. Per ulteriori informazioni, consulta Visualizza le informazioni sullo stack dalla console CloudFormation .