Cuando intento actualizar la versión del motor de mi clúster de Amazon Relational Database Service (Amazon RDS) con AWS CloudFormation, aparece el siguiente error: «The following parameters are not defined for the specified group».
Breve descripción
Al actualizar un clúster o una instancia de base de datos de Amazon RDS que usa un grupo de parámetros personalizado, se muestra un error si actualiza:
Por ejemplo, en la siguiente plantilla, al actualizar la propiedad EngineVersion de 5.7.37 a 8.0.28 en el recurso DBInstance, se produce un error en la actualización de la pila. La actualización de la pila también falla cuando se actualiza la propiedad Family de MySQL5.7 a MySQL8.0 en el recurso 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: Hay otros escenarios que pueden provocar este mensaje de error. Los pasos que se describen en el apartado «Solución» que aparece a continuación solo son aplicables al escenario anterior.
Solución
Hay dos maneras de solucionar el error: «The following parameters are not defined for the specified group».
Nota: La aplicación de un grupo de parámetros a una instancia de base de datos puede provocar el reinicio de la instancia. Durante el reinicio, se produce una interrupción de la base de datos.
- Añada un nuevo recurso ParameterGroup a la plantilla de la pila con el nuevo valor Family y mantenga el recurso ParameterGroup antiguo en la plantilla.
- Haga referencia al nuevo recurso ParameterGroup en AWS::RDS::DBCluster o AWS::RDS::DBInstance y actualice la propiedad EngineVersion a la nueva versión.
Nota: Si está llevando a cabo una actualización importante de la versión, debe establecer la propiedad AllowMajorVersionUpgrade en true.
- Actualice la pila con la plantilla actualizada.
- Tras actualizar la pila, elimine el recurso ParameterGroup anterior de la plantilla de la pila.
Alternativa:
- Cambie el LogicalResourceID del recurso ParameterGroup.
- Haga referencia al nuevo LogicalResourceID en AWS::RDS::DBCluster o AWS::RDS::DBInstance.