Quando provo ad aggiornare uno stack di AWS CloudFormation, ricevo un messaggio di errore simile al seguente: "CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename 'MyResource###' and update the stack again." (CloudFormation non può aggiornare uno stack quando è necessario sostituire una risorsa con nome personalizzato. Rinomina 'MYResourceXXX' e aggiorna nuovamente lo stack.)
Breve descrizione
Questo errore si verifica quando un aggiornamento dello stack tenta di sostituire risorse che hanno proprietà con nomi personalizzati. CloudFormation non sostituisce una risorsa che ha un nome personalizzato, a meno che tale nome personalizzato non venga cambiato. Per evitare un errore dello stack, prima di aggiornare uno stack, assicurati di modificare le risorse con nomi personalizzati cambiando tali nomi.
La risoluzione di questo errore presuppone quanto segue:
- Stai aggiornando uno stack esistente e non ne stai creando uno nuovo.
- Stai cambiando i nomi delle risorse con nome personalizzato esistenti e non stai creando nuove risorse con nome personalizzato.
Risoluzione
-
In un editor di codice, apri il modello CloudFormation per lo stack che vuoi aggiornare.
-
Sostituisci i nomi o i valori di tutte le proprietà delle risorse che hanno nomi personalizzati, usando nomi diversi.
Nota: nell'esempio seguente, la proprietà DBInstanceIdentifier della risorsa MyRDS è impostata sul nome personalizzato PRODdb. Lo stack CloudFormation non può essere aggiornato finché il nome PRODdb non viene cambiato in un nome diverso, ad esempio PRODdb1. Oppure puoi omettere la proprietà DBInstanceIdentifier dal modello, in modo che CloudFormation generi un ID fisico univoco da utilizzare per l'istanza database.
"MyRDS": { "Type": "AWS::RDS::DBInstance",
"Properties": {
"DBInstanceClass": "db.m3.medium",
"Engine": "MySQL",
"DBInstanceIdentifier": "PRODdb",
"AllocatedStorage": "10",
"AutoMinorVersionUpgrade": "true",
"BackupRetentionPeriod": "0",
. . .
. . .
}
}
Importante: quando rinomini una risorsa con nome personalizzato, CloudFormation sostituisce tale risorsa. Per ulteriori informazioni, consulta Name type. La sostituzione di determinate risorse può causare la perdita di dati senza un backup adeguato. Per ulteriori informazioni, consulta Replacement.
-
Salva le modifiche al modello CloudFormation, quindi utilizza il modello per aggiornare lo stack.
Informazioni correlate
Managing AWS resources as a single unit with CloudFormation stacks
Understand update behaviors of stack resources
AWS resource and property types reference