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

Uno stack entra nello UPDATE_ROLLBACK_FAILED stato in cui non è AWS CloudFormation possibile ripristinare tutte le modifiche durante un aggiornamento. 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, presuppone che l'istanza del database esista ancora e tenta di ripristinarla, causando il fallimento del rollback dell'aggiornamento.

Quando uno stack è nello stato UPDATE_ROLLBACK_FAILED, puoi continuare a eseguire il rollback a uno stato attivo (UPDATE_ROLLBACK_COMPLETE). Non puoi aggiornare uno stack che si trova nello stato UPDATE_ROLLBACK_FAILED. Tuttavia, puoi continuare a eseguire il rollback, puoi restituire lo stack alle impostazioni originali e provare ad aggiornarlo di nuovo.

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. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.

  2. Selezionare lo stack che desideri aggiornare, quindi Actions (Operazioni) e in seguito Continue Update Rollback (Continua rollback aggiornamento).

    Se nessuna delle soluzioni Risoluzione degli errori funziona, puoi utilizzare l'opzione avanzata per ignorare le risorse che non CloudFormation possono essere ripristinate correttamente. Devi ricercare e digitare gli ID logici delle risorse che desideri 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 di ResourcesToSkip per recuperare una gerarchia di stack nidificati.

Il seguente diagramma mostra una gerarchia di stack nidificati nello stato UPDATE_ROLLBACK_FAILED. In questo esempio, lo stack root WebInfra ha due stack nidificati: WebInfra-Compute e WebInfra-Storage che dispongono di uno o più stack nidificati.

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 fare in modo che lo stack root abbia uno stato operabile utilizzando continue-update-rollback, devi utilizzare il parametro resources-to-skip per saltare le risorse per le quali non è riuscito il rollback. In questo esempio, resources-to-skip deve includere i seguenti elementi:

  1. myCustom

  2. WebInfra-Compute-asg.myasg

  3. WebInfra-Calcola-LB. myLoadBalancer

  4. WebInfra-Storage.DB

L'esempio seguente è il AWS CLI comando completo:

$ aws cloudformation continue-update-rollback --stack-name WebInfra \ --resources-to-skip myCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB

Abbiamo specificato risorse da stack nidificati utilizzando il formato NestedStackName.ResourceLogicalID, ma per le risorse dello stack root, ad esempio myCustom, abbiamo specificato solo l'ID logico.

Trovare il nome dello stack di uno stack nidificato

Puoi trovare un nome dello stack figlio nell'ID dello stack o nel nome ARN (Amazon Resource Name). Nell'esempio seguente, il nome dello stack è WebInfra-storage-Z2VKC706XKXT:

arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd

Trovare l'ID logico di uno stack nidificato

Puoi trovare l'ID logico dello stack figlio nella definizione del modello del padre. Nel diagramma, LogicalId di WebInfra-Storage-DB dello stack figlio è DB nel WebInfra-Storage padre.

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.