Come posso risolvere l'errore di AWS CloudFormation "Impossibile aggiornare uno stack quando è necessario sostituire una risorsa con nome personalizzato"?

2 minuti di lettura
0

Quando provo ad aggiornare uno stack di AWS CloudFormation, ricevo un messaggio di errore simile al seguente: "CloudFormation non può aggiornare uno stack quando è necessario sostituire una risorsa con nome personalizzato. Rinomina 'MYResourceXXX' e aggiorna nuovamente lo stack." Come posso risolvere questo errore?

Breve descrizione

Questo errore si verifica in genere quando un aggiornamento dello stack tenta di sostituire le risorse con proprietà con nomi personalizzati. AWS CloudFormation non sostituisce una risorsa con un nome personalizzato a meno che tale nome personalizzato non venga cambiato con un nome diverso. Per evitare un errore nello stack ed evitare il messaggio di errore, modifica le risorse con nomi personalizzati per utilizzare nomi diversi prima di aggiornare uno stack.

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.

Soluzione

1.    In un editor di codice, apri il modello AWS CloudFormation per lo stack che vuoi aggiornare.

2.    Sostituisci i nomi, o i valori, di tutte le proprietà delle risorse con nomi personalizzati dai nomi diversi.

Nota: Nell'esempio seguente, la proprietà DBInstanceIdentifier della risorsa MyRDS è impostata sul nome personalizzato PRODdb. Lo stack AWS CloudFormation non può essere aggiornato correttamente finché il nome PRODdb non viene modificato con un nome diverso, ad esempio PRODdb1. In alternativa, puoi omettere la proprietà DBInstanceIdentifier dal tuo modello. In questo modo, AWS CloudFormation genera 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, AWS CloudFormation sostituisce tale risorsa. Per ulteriori informazioni, vedi Name type. La sostituzione di determinate risorse può causare la perdita di dati senza un backup adeguato. Per ulteriori informazioni, vedi Sostituzione.

3.    Salva le modifiche al tuo modello AWS CloudFormation, quindi utilizza il modello per aggiornare lo stack.


Informazioni correlate

AWS CloudFormation stacks updates

Update behaviors of stack resources

AWS resource and property types reference

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa