Comprendere l’aggiornamento dei comportamenti delle risorse stack
Quando invii un aggiornamento, CloudFormation aggiorna le risorse in base alle differenze tra ciò che invii e il modello corrente dello stack. Le risorse non interessate da modifiche vengono eseguite senza interruzioni durante il processo di aggiornamento. Per le risorse aggiornate, CloudFormation utilizza uno dei seguenti comportamenti di aggiornamento:
- Aggiornamento con nessuna interruzione
-
CloudFormation aggiorna la risorsa senza interromperne le operazioni e senza modificarne l'ID fisico. Ad esempio, se aggiorni determinate proprietà su una risorsa AWS::CloudTrail::Trail, CloudFormation aggiorna il trail senza interruzioni.
- Aggiornamento con alcune interruzioni
-
CloudFormation aggiorna la risorsa con qualche interruzione. Ad esempio, se aggiorni determinate proprietà in una risorsa AWS::EC2::Instance, l'istanza potrebbe subire un'interruzione durante la riconfigurazione da parte di CloudFormation e Amazon EC2.
- Sostituzione
-
CloudFormation ricrea la risorsa durante un aggiornamento e genera anche un nuovo ID fisico. CloudFormation crea generalmente per prima cosa la risorsa sostitutiva, modifica i riferimenti da altre risorse dipendenti in modo che puntino alla risorsa sostitutiva, quindi elimina la risorsa precedente. Ad esempio, se aggiorni la proprietà
AvailabilityZonedi un tipo di risorsa AWS::EC2::Instance, CloudFormation crea una nuova risorsa e sostituisce la risorsa dell'istanza EC2 corrente con la nuova.Se aggiungi o rimuovi una proprietà che richiede una sostituzione, verrà attivato anche un aggiornamento. L'aggiornamento verrà eseguito anche se il valore reale della proprietà non cambia.
Il metodo utilizzato da CloudFormation dipende dalla proprietà che aggiorni per un determinato tipo di risorsa. Il comportamento di aggiornamento per ciascuna proprietà è descritto alla pagina AWS resource and property types reference.
A seconda del comportamento di aggiornamento, puoi decidere quando modificare le risorse per ridurre l'impatto di tali modifiche sulla tua applicazione. Più in particolare, puoi pianificare quando le risorse devono essere sostituite durante un aggiornamento. Ad esempio, se aggiorni la proprietà Port di un tipo di risorsa AWS::RDS::DBInstance, CloudFormation sostituisce l'istanza database creando una nuova istanza database con l'impostazione di porta aggiornata ed elimina l'istanza database precedente. Prima dell'aggiornamento, potresti pianificare le seguenti operazioni in preparazione della sostituzione del database:
-
Esegui uno snapshot del database corrente.
-
Prepara una strategia per il modo in cui le applicazioni che utilizzano quella istanza database gestiranno un'interruzione durante la sostituzione dell'istanza database.
-
Verificare che le applicazioni che utilizzano quella istanza database considerino l'impostazione di porta aggiornata e di altri aggiornamenti che potrebbero essere stati eseguiti.
-
Utilizza la snapshot DB per ripristinare i database sulla nuova istanza database.
Questo esempio non è esaustivo, ma offre un'idea di cosa pianificare quando una risorsa viene sostituita durante un aggiornamento.
Nota
Se il modello include uno o più stack nidificati, CloudFormation avvia anche un aggiornamento per ognuno di essi. Questa operazione è necessaria per stabilire se gli stack nidificati sono stati modificati. CloudFormation aggiorna solo le risorse negli stack nidificati le cui modifiche sono state specificate nei modelli corrispondenti.