Come faccio a risolvere l'errore "Il volume vol-xxxxxxxxxx non può essere modificato nello stato di modifica OPTIMIZING" in CloudFormation quando provo ad aggiornare il mio tipo di volume Amazon EBS (AWS::EC2::Volume)?

5 minuti di lettura
0

Ricevo l'errore "Il volume vol-xxxxxxxxxx non può essere modificato nello stato di modifica OPTIMIZING" o un errore simile in AWS CloudFormation. Questo errore si verifica quando provo ad aggiornare il tipo di volume Amazon Elastic Block Store (Amazon EBS). Il mio volume EBS (AWS::EC2::Volume) rimane bloccato nello stato UPDATE_IN_PROGRESS per molto tempo e alla fine non riesce ad aggiornare il tipo di volume. Il mio stack non si aggiorna e anche il successivo rollback dell'aggiornamento fallisce, poi lo stack finisce nello stato UPDATE_ROLLBACK_FAILED.

Breve descrizione

Se utilizzi le credenziali quando lo stack CloudFormation modifica un volume EBS, il periodo di timeout per il volume è di circa sette ore. Se esegui lo stack utilizzando invece un ruolo di servizio AWS Identity and Access Management (IAM), CloudFormation aumenterà il periodo di timeout a 36 ore.

Nota: Il periodo di timeout del volume si applica solo alla modifica del volume utilizzando CloudFormation. Il periodo di timeout varia in base ai diversi tipi di risorse e azioni.

In genere, un volume EBS da 1 tebibyte (TiB) completamente utilizzato impiega circa sei ore per migrare a una nuova configurazione delle prestazioni. Per ulteriori informazioni, consulta Monitorare l'avanzamento delle modifiche del volume.

Importante: Se hai già avviato un aggiornamento dello stack con CloudFormation, devi attendere circa sette ore affinché lo stack si stabilizzi prima di completare i passaggi seguenti. Lo stack si stabilizza quando entra nello stato UPDATE_ROLLBACK_FAILED.

Risoluzione

Nota: Se ricevi errori durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.

Recuperare lo stack dopo aver atteso che si stabilizzasse

Considera il seguente esempio. Se modifichi il tipo di volume EBS da st1 a gp3, lo stack potrebbe non riuscire ad aggiornare il tipo di volume a causa delle sue dimensioni. In questo scenario, puoi ripristinare lo stack eseguendo l'operazione continue-update-rollback sullo stack. Per l'operazione di ripristino, è necessario ignorare l'ID logico della risorsa che non è stato aggiornato. Il tuo stack passa allo stato UPDATE_ROLLBACK_COMPLETE.

Ripristina il tuo stack utilizzando l'interfaccia a riga di comando di AWS o la console CloudFormation.

Interfaccia a riga di comando AWS:

aws cloudformation continue-update-rollback --stack-name your-stack-name --resources-to-skip logical-ID-of-EBS-volume

Console CloudFormation:

1.    Apri la console CloudFormation.

2.    Dal riquadro di navigazione, scegli Stack.

3.    Dalla colonna Nome dello stack, seleziona lo stack bloccato nello stato UPDATE_ROLLBACK_FAILED.

4.    Scegli Stack Actions, quindi scegli Continua aggiornamento e rollback.

5.    Nella finestra di dialogo Continua l'aggiornamento e il rollback, espandi Risoluzione dei problemi avanzata.

6.    Nella sezione Risorse da ignorare - opzionale, seleziona le risorse che desideri saltare.

Nota: Assicurati di selezionare l'ID logico del volume che non è stato aggiornato.

7.    Scegli Continua il rollback dell'aggiornamento.

Aggiornare lo stack in modo che corrisponda a quello attuale del tuo volume EBS

Devi aggiornare lo stack in modo che corrisponda a quello attuale del tuo volume EBS. Il tuo modello CloudFormation viene aggiornato dall'aggiornamento dello stack, il quale passerà allo stato UPDATE_COMPLETE.

Ad esempio, puoi modificare il tipo di volume (AWS::EC2::Volume) da st1 a gp3. Tuttavia, il tipo di volume in CloudFormation rimarrà st1 a causa dell'operazione di rollback, anche se l'aggiornamento a gp3 si riflette correttamente in Amazon EBS.

1.    Per monitorare lo stato del tuo volume EBS, utilizza la console Amazon EC2 o esegui il seguente comando:

aws ec2 describe-volumes-modifications --volume-ids your-volume-ID

2.    Dopo che il tipo di volume cambia in gp3 in Amazon EBS, aggiorna lo stack CloudFormation con il tipo di volume (AWS::EC2::Volume) come gp3.

Nota: Puoi modificare il tuo modello CloudFormation cambiando il tipo di volume in gp3. Quindi, esegui l'aggiornamento.

3.    Usa il rilevamento delle deviazioni per verificare che la tua risorsa di volume EBS (AWS::EC2::Volume) sia sincronizzata con il tuo stack.

Importante: L'aggiornamento dello stack può richiedere più di 36 ore se non utilizzi un ruolo di servizio o se la dimensione del volume è elevata (~8 TiB). In questi casi, l'aggiornamento dello stack potrebbe fallire anche dopo aver utilizzato un ruolo di servizio con 36 ore di stabilizzazione. Successivamente, dovrai aspettare che lo stack si stabilizzi. Durante questo periodo, non puoi modificare nessun altro tipo di risorsa. Per risolvere questo problema, completa i seguenti passaggi:

1.    Utilizza una politica di eliminazione corrispondente a Retain per rimuovere il volume EBS dallo stack senza eliminare il volume.

2.    Aggiorna il tuo volume EBS all'esterno di CloudFormation utilizzando invece la console Amazon EBS.

3.    Importa nuovamente il tuo volume EBS nello stack.

Se vuoi conservare il volume nello stack in ogni momento, devi mantenere la sua dimensione al di sotto di una certa soglia. Ad esempio, se 8 TiB di dati richiedono 64 ore, puoi stimare la dimensione massima per 36 ore e ridurre la dimensione dei dati a 4 TiB. Questa regolazione della soglia consente il completamento dell'aggiornamento.


AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa