Quando provo ad aggiornare la versione del motore del cluster Amazon Relational Database Service (Amazon RDS) utilizzando AWS CloudFormation, ricevo il seguente errore: "The following parameters are not defined for the specified group."
Breve descrizione
Quando aggiorni un cluster o un'istanza database Amazon RDS che utilizza un gruppo di parametri personalizzato, ricevi un errore se aggiorni
Ad esempio, nel modello seguente, l'aggiornamento della proprietà EngineVersion da 5.7.37 a 8.0.28 nella risorsa DBInstance causa un errore durante l'aggiornamento dello stack. L'aggiornamento dello stack genera un errore anche quando si aggiorna la proprietà Family da MySQL5.7 a MySQL8.0 nella risorsa DBParameterGroup.
Parameters:
DBName:
Default: MyDatabase
Description: The database name
Type: String
DBUser:
NoEcho: 'true'
Description: The database admin account username
Type: String
DBPassword:
NoEcho: 'true'
Description: The database admin account password
Type: String
Resources:
MyDB:
Type: 'AWS::RDS::DBInstance'
Properties:
DBName: !Ref DBName
AllocatedStorage: '5'
DBInstanceClass: db.t2.small
Engine: MySQL
EngineVersion: 5.7.37
MasterUsername: !Ref DBUser
MasterUserPassword: !Ref DBPassword
DBParameterGroupName: !Ref MyRDSParamGroup
AllowMajorVersionUpgrade: true
MyRDSParamGroup:
Type: 'AWS::RDS::DBParameterGroup'
Properties:
Family: MySQL5.7
Description: CloudFormation Sample Database Parameter Group
Parameters:
autocommit: '1'
general_log: '1'
old_passwords: '0'
Nota: esistono altri scenari che possono causare questo messaggio di errore. I passaggi della seguente sezione Risoluzione si applicano solo allo scenario precedente.
Soluzione
Le seguenti serie di passaggi rappresentano due modi per risolvere l'errore: “The following parameters are not defined for the specified group.”
Nota: l'applicazione di un gruppo di parametri a un'istanza database potrebbe comportare il riavvio dell'istanza. Durante il riavvio, si verifica un'interruzione del database.
- Aggiungi una nuova risorsaParameterGroup al modello di stack con il nuovo valore Family e mantieni la precedente risorsa ParameterGroup nel modello.
- Fai riferimento alla nuova risorsa ParameterGroup in AWS::RDS::DBCluster o AWS::RDS::DBInstance, quindi aggiorna la proprietà EngineVersion alla nuova versione.
Nota: se stai eseguendo un aggiornamento della versione principale, devi impostare la proprietà AllowMajorVersionUpgrade su true.
- Aggiorna lo stack con il modello aggiornato.
- Dopo l'aggiornamento dello stack, rimuovi la precedente risorsa ParameterGroup dal modello di stack.
-oppure-
- Modifica il LogicalResourceID della risorsa ParameterGroup.
- Fai riferimento al nuovo LogicalResourceID in AWS::RDS::DBCluster o AWS::RDS::DBInstance.