AWS CloudFormation で Amazon Relational Database Service (Amazon RDS) リソースを作成または更新したときに発生するエラーを解決したいです。
簡単な説明
Amazon RDS リソースの CloudFormation スタックを作成または更新すると、エラーが発生する場合があります。これらのリソースには、DB インスタンス、DB クラスター、または DB パラメータグループが含まれる場合があります。このエラーは、次のいずれかに当てはまる場合に発生します。
- Amazon RDS リソースの更新がサポートされていない。
- Amazon RDS リソースに無効なプロパティを指定した。
解決策
Amazon RDS DB リソースの更新中に発生する可能性のある一般的なエラーを次に示します。
エラー: 「aurora-postgresql (または任意の RDS バージョン) を 13.XX から 14.YY にアップグレードすることはできません (サービス: RDS、ステータスコード: 400)」
このエラーは、RDS DB エンジンのマイナーバージョンまたはメジャーバージョンのアップグレードにおいて発生することがあります。
RDS は、エンジンバージョンをアップグレードする前に、事前チェックを実行して実現可能性を確認します。このエラーは、事前チェック中に障害が発生した場合に発生します。
以下のリンクを参照し、お使いのタイプの Amazon RDS で AWS がサポートするバージョンアップグレードを使用していることを確認してください。
Amazon Aurora PostgreSQL 互換エディション: メジャーバージョンアップグレードを実行する方法
Amazon Aurora MySQL 互換エディション: Amazon Aurora MySQL 用データベースエンジンのアップデート
Amazon RDS for Oracle: RDS for Oracle データベースエンジンのアップグレード
Amazon RDS for MySQL: MySQL DB エンジンのアップグレード
Amazon RDS for PostgreSQL: Amazon RDS 用 PostgreSQL DB エンジンのアップグレード
Amazon RDS for MariaDB: MariaDB データベースエンジンのアップグレード
エラー: 「現在の DB インスタンスパラメータグループはカスタムです。エンジンのバージョンをアップグレードするには、デフォルトまたはカスタムの新しい DB インスタンスパラメータグループを明示的に指定する必要があります。」
AWS CloudFormation を使用して RDS DB データベースインスタンスのメジャーバージョンアップグレードを実行する際に、このエラーが発生することがあります。リソースハンドラは、次の条件のいずれかに当てはまる場合にこのエラーメッセージを返します。
エラーを解決するには、以下のすべての手順に従ってください。
- スタックテンプレートの DB インスタンスリソース定義を更新して、現在のエンジンバージョンでサポートされているデフォルト DB パラメータグループを使用します。変更したテンプレートでスタックを更新します。
- アップグレードされたエンジンバージョンおよび、そのバージョンでサポートされているデフォルト DB パラメータグループを使用するように、DB インスタンスのリソース定義を更新します。
- アップグレードされたエンジンバージョンで必要なカスタム DB パラメータグループを使用するように、DB インスタンスのリソース定義を更新します。
手動アップグレード中の CloudFormation のドリフトによるエラー
このエラーは、RDS DB インスタンスまたはクラスターバージョンを手動でアップグレードした場合 (帯域外アップグレードを実行した場合) に発生する場合があります。CloudFormation で作成されたリソースを手動で変更した場合、CloudFormation はリソースに加えられた変更を追跡しません。その結果、スタックにドリフトが発生します。
次の手順を使用して、実際のリソースを CloudFormation スタックと同期させます。
- ドリフトされたスタックに関連するスタックテンプレートを変更します。RDS DB インスタンスまたはクラスターの Retain という値を持つクラスターリソースに、DeletionPolicy 属性を含めます。次に、変更したテンプレートでスタックを更新します。こうすると、スタックからリソースを削除しても、実際のリソースは保持されます。
- ドリフトされたリソースをスタックテンプレートから削除し、スタックを更新します。
- リソースをスタックにインポートし直します。
注: ドリフトを避けるため、RDS リソースのインポートに使用するスタックテンプレートに RDS DB リソースの現在の設定が反映されていることを確認してください。
- スタックでドリフト検出操作を実行して、ドリフトが解決されていることを確認します。
エラー: 「メジャーバージョンのアップグレード中は、マスターユーザーのパスワードを変更できません。(サービス: Rds、ステータスコード)」
このエラーは、RDS DB パスワードが変更されたことを示します。
注: メジャーバージョンアップグレードと同時にパスワードのローテーションを実行することはできません。
このエラーを解決するには、以下の手順を実行します。
- 既存のテンプレートを使用してスタックの更新を実行します。この更新では、現在のエンジンバージョンとともにローテーションされたパスワードを使用します。スタックの更新が完了すると、データベースの認証情報は新しいパスワードで再設定されます。
- スタックの更新を実行して、ターゲットのメジャーエンジンバージョンにアップグレードします。
関連情報
describe-engine-default-parameters