AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

CloudFormation で RDS DB リソースを作成または更新するときに発生するエラーをトラブルシューティングする方法を教えてください。

所要時間1分
0

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 データベースインスタンスのメジャーバージョンアップグレードを実行する際に、このエラーが発生することがあります。リソースハンドラは、次の条件のいずれかに当てはまる場合にこのエラーメッセージを返します。

エラーを解決するには、以下のすべての手順に従ってください。

  1. スタックテンプレートの DB インスタンスリソース定義を更新して、現在のエンジンバージョンでサポートされているデフォルト DB パラメータグループを使用します。変更したテンプレートでスタックを更新します。
  2. アップグレードされたエンジンバージョンおよび、そのバージョンでサポートされているデフォルト DB パラメータグループを使用するように、DB インスタンスのリソース定義を更新します。
  3. アップグレードされたエンジンバージョンで必要なカスタム DB パラメータグループを使用するように、DB インスタンスのリソース定義を更新します。

手動アップグレード中の CloudFormation のドリフトによるエラー

このエラーは、RDS DB インスタンスまたはクラスターバージョンを手動でアップグレードした場合 (帯域外アップグレードを実行した場合) に発生する場合があります。CloudFormation で作成されたリソースを手動で変更した場合、CloudFormation はリソースに加えられた変更を追跡しません。その結果、スタックにドリフトが発生します。

次の手順を使用して、実際のリソースを CloudFormation スタックと同期させます。

  1. ドリフトされたスタックに関連するスタックテンプレートを変更します。RDS DB インスタンスまたはクラスターの Retain という値を持つクラスターリソースに、DeletionPolicy 属性を含めます。次に、変更したテンプレートでスタックを更新します。こうすると、スタックからリソースを削除しても、実際のリソースは保持されます。
  2. ドリフトされたリソースをスタックテンプレートから削除し、スタックを更新します。
  3. リソースをスタックにインポートし直します
    注: ドリフトを避けるため、RDS リソースのインポートに使用するスタックテンプレートに RDS DB リソースの現在の設定が反映されていることを確認してください。
  4. スタックでドリフト検出操作を実行して、ドリフトが解決されていることを確認します。

エラー: 「メジャーバージョンのアップグレード中は、マスターユーザーのパスワードを変更できません。(サービス: Rds、ステータスコード)」

このエラーは、RDS DB パスワードが変更されたことを示します。
注: メジャーバージョンアップグレードと同時にパスワードのローテーションを実行することはできません。

このエラーを解決するには、以下の手順を実行します。

  1. 既存のテンプレートを使用してスタックの更新を実行します。この更新では、現在のエンジンバージョンとともにローテーションされたパスワードを使用します。スタックの更新が完了すると、データベースの認証情報は新しいパスワードで再設定されます。
  2. スタックの更新を実行して、ターゲットのメジャーエンジンバージョンにアップグレードします。

関連情報

describe-engine-default-parameters

AWS公式
AWS公式更新しました 8ヶ月前