AWS CloudFormation を使用して Amazon Relational Database Service (Amazon RDS) クラスターのエンジンバージョンをアップグレードしようとすると、次のエラーが表示されます。 「次のパラメータは、指定されたグループに対して定義されていません。」
簡単な説明
カスタムパラメータグループを使用する Amazon RDS DB クラスターまたはインスタンスをアップグレードする場合、以下を更新する際にエラーが表示されます。
例えば、次のテンプレートでは、DBInstance リソースの EngineVersion プロパティを 5.7.37 から 8.0.28 に更新すると、スタックの更新が失敗します。DBParameterGroup リソースで Family プロパティを MySQL5.7 から MySQL8.0 に更新する場合も、スタックの更新は失敗します。
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'
注: このエラーメッセージの原因となるシナリオは他にもあります。次の「解決策」セクションの手順は、前述のシナリオにのみ適用されます。
解決策
エラー **「次のパラメータは、指定されたグループに対して定義されていません。」**は、次の 2 通りの手順で解決できます。
注: DB インスタンスにパラメータグループを適用すると、インスタンスが再起動する可能性があります。再起動中は、データベースが停止します。
- 新しい ParameterGroup リソースを新しい Family 値でスタックテンプレートに追加し、古い ParameterGroup リソースをテンプレートに保持します。
- AWS::RDS::DBCluster または AWS::RDS::DBInstance で新しい ParameterGroup ロソースを参照し、EngineVersion プロパティを新しいバージョンに更新します。
**注:**メジャーバージョンアップグレードを実行している場合は、AllowMajorVersionUpgrade プロパティを true に設定する必要があります。
- 更新したテンプレートでスタックを更新します。
- スタックが更新されたら、スタックテンプレートから以前の ParameterGroup リソースを削除します。
または
- ParameterGroup リソースの LogicalResourceID を変更します。
- AWS::RDS::DBCluster または AWS::RDS::DBInstance で新しい LogicalResourceID を参照します。