Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS CDK を使用してAmazon RDS と仲良くするための tips N 選

AWS CDK を使用してAmazon RDS と仲良くするための tips N 選

Avatar for mazyu36 | Yuki Matsuda

mazyu36 | Yuki Matsuda

July 11, 2025
Tweet

Transcript

  1. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2025, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CDK を使⽤して Amazon RDS と 仲良くするための tips N 選 Yuki Matsuda Sr. Solutions Architect Amazon Web Services Japan G.K. A W S C D K C O N F E R E N C E J A P A N 2 0 2 5
  2. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 🙆 話すこと • AWS CDK で Amazon RDS (Aurora 含む) を構築、運⽤するためのテクニックとトレードオフ 🙅 話さないこと • Amazon RDS の詳細な仕様や設計観点(あくまで IaC 観点にフォーカス) 対象聴講者 • AWS CDK、Amazon RDS の基礎は抑えている⼈ ※資料は公開します 本⽇の内容 AWS CDK の基礎学習には 「AWS CDK 入門ガイド」 もご活用ください
  3. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾃⼰紹介 松⽥ 悠希 (Yuki Matsuda) Senior Solutions Architect at AWS Japan AWS CDK Top Contributor/Community Reviewer q 好きな L2 Construct AWS Batch Amazon Bedrock AWS Step Functions @mazyu36 Web 上の仮の姿 v2.201.0 で Bedrock Agents の L2 (alpha) が追加!
  4. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS CDK を使⽤して Amazon RDS と仲良くするための tips 5選 1. Aurora DB Cluster のフェイルオーバーに対処する 2. Amazon Aurora Global Database を構築する 3. Snapshot からリストアする 4. インスタンス/クラスターのアップグレードを⾏う 5. fromLookupにより AWS CDK 管理外リソースを参照する 資料の内容について • PostgreSQL/MySQL、aws-cdk-lib v2.204 で検証しています • 実装例は直接関連するプロパティを中心に記載しています(必須プロパティも一部省略しています) • 実運用では事前にテストをする、不測の事態に備え事前にスナップショットを取得するなどを確実に実施してください CDK 外の運⽤と CDK を 組み合わせるテクニックを 理解する CDK で運⽤する場合の テクニック、トレードオフを 理解する
  5. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon Aurora • Aurora は Writer と Reader で異なるインスタンスタイプを使⽤できる 1. Aurora のフェイルオーバーに対処する Writer instance (Provisioned) Reader instance (Serverless v2) Amazon Aurora Reader instance (Provisioned) Writer instance (Serverless v2) フェイルオーバーで Writer と Reader が入れ替わる ではフェイルオーバー後 どのような対処が必要か?
  6. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • AWS CloudFormation では現在の Writer の状態を持っていない - 最初にプロビジョニングされたインスタンスが最初の Writer になる • AWS CDK の独⾃概念として writer/readers によりデプロイ順序を制御している - writer プロパティ = 最初の Writer である(≠現在の Writer ) Drift が発⽣しないため IaC 観点では対処不要 L2 で writer が最初となるよう 依存関係が定義されている。 L2 Construct (cluster.ts) の実装の抜粋(v2.204時点) (参考)この API に関しては議論がある Issue #26726
  7. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • DR のため複数のリージョンにまたがる複数の Aurora Cluster を構成できる • AWS CDK では Cross Region References, L1 Construct を活⽤することで実現できる - 前者は experimental なので注意 2. Amazon Aurora Global Database を構築する Ref: • Amazon Aurora Global Database の使用 • Amazon Aurora Global Database でのスイッチオーバーまたはフェイルオーバーの使用 Amazon Aurora (Secondary) us-west-2 us-east-1 Amazon Aurora (Primary) Amazon Aurora (Primary) us-west-2 us-east-1 Amazon Aurora (Secondary) スイッチオーバー/フェイルオーバーで Primary が切り替わる
  8. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 参考 | Aurora Global Database を AWS CDK で実装する⽅法(1/2) • リージョンを跨ぐため、マルチ Stack 構成とする • AWS KMS のマルチリージョンキーを定義する • グローバルクラスターを L1 Construct で定義し、 ソースに Primary クラスターを指定する Primary の実装 Stack
  9. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • Primary のマルチリージョンキー、 グローバルクラスターの識別⼦の参照を定義する • マルチージョンキーから レプリカキーを定義する • Escape Hatches で Secondary 向けの設定を⾏う • Global Database 関連の項⽬ • 認証情報削除(プライマリから引き継ぎ) Secondary の実装 参考 | Aurora Global Database を AWS CDK で実装する⽅法(2/2) Stack
  10. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. リージョン切り替えの考慮 • Primary がどのクラスターか状態として持っているため drift が発⽣する - drift 状態のままスタック更新は可能だが、予期せぬエラーの恐れがあるため⾮推奨 • 切り替え後の状態に実装を合わせるのは事実上不可能 - 基本的にそのままフェイルバックし drift 解消が望ましい - 運⽤上難しい場合は、Aurora を AWS CDK 管理外とすることを検討する
  11. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • リストア専⽤の L2 Construct を使⽤する • AWS CDK 管理下の新規リソースとして構築される 3. Snapshot からリストアする • リストア元 Snapshot の識別⼦を指定する - 識別⼦変更は Replacement のため注意︕ (Ref: CloudFormation Docs) - リストア元が変わらない限り変更しない。 - 識別⼦はコードとして(静的な情報として) リポジトリに Commit する。 • その他制約事項は Amazon RDS/Aurora の Document を確認する
  12. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. リストアは drift 解消のテクニックとしても活⽤できる Amazon Aurora (drift) Snapshot 手動/API による操作 1.AWS CDK 外の操作で drift が発生 AWS CDK 2.Snapshotを作成 AWS CDK 3. L2 Construct で snapshot から作成 Snapshot AWS CDK Amazon Aurora (drift) Amazon Aurora (drift) Amazon Aurora (New) Snapshot 取得元の リソースは不要になる Snapshot から AWS CDK 管理下の リソースとして作成 ただしこの期間の drift のデータ更新考慮が必要。 • データ更新が発生しないようにサービスを止める。 • リストア後に差分を別途反映する。 • Snapshot から AWS CDK 管理下のリソースを作成し、drift が発⽣したリソースと⼊れ替える
  13. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • エンジンバージョン更新し、データを維持したままアップグレードを⾏う(ダウンタイムあり) • カスタムパラメーターグループ使⽤時は合わせて更新する 4. インスタンス/クラスターのアップグレードを⾏う Multi-AZ DB インスタンス w/ カスタムインスタンスパラメーターグループ Multi-AZ DB Cluster/Aurora DB Cluster w/ カスタムクラスターパラメーターグループ
  14. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • Aurora はクラスター/インスタンスパラメータグループの併⽤が可能 • カスタムインスタンスパラメータグループ使⽤時はアップグレードの際に追加設定を⾏う Aurora w/カスタムインスタンスパラメータグループの場合 • エンジンバージョン更新時に dbInstanceParameterGroupName に カスタムインスタンスパラメータグループ名の設定が必要。 - L2 Construct で現状設定不可のため Escape Hatches を使⽤。 • (参考)CloudFormation docs ※ Amazon Neptune も同様の仕様(docs)
  15. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アップグレード時のダウンタイムを緩和したい場合 Amazon Aurora (旧バージョン) Amazon Aurora (新バージョン) Blue/Green Deployments Amazon Aurora (新バージョン) AWS CDK 宣言的に最終状態に向け更新が行われる。 (アップグレード時間=ダウンタイム) cdk import 緩和のための手続きを踏む。 (状態変化の過程が重要) drift を解消しCDK 管理下に戻す。 RDS L2 は関連リソースが多く難易度が高い。 • 宣⾔的な CDK のみでは限界があり、CDK 外の⼿続き+drift 解消が必要になる。 - ただし RDS L2 は解消難易度が⾼く⾮推奨。RDS/Aurora を CDK 管理外にすることを検討する。 ※具体的な drift 解消手順は AWS CDK 開発を成功に導くトラブルシーティングガイド をご参照ください
  16. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 5. fromLookup により AWS CDK 管理外リソースを参照する Amazon Aurora (実態) Stack Gen group Amazon ECS Role Alarm Amazon Aurora (仮想) fromLookup で参照 metric による Alarm 生成 connections で接続許可 grant で権限設定 endpoint を参照 AWS CDK 以外の手段により ダウンタイムを抑えたアップグレードなど 手続き的な運用を行う。 AWS CDK では fromLookup で参照し、 設定の抽象化、プロパティ参照を可能にする。 • AWS CDK 管理外の運⽤+AWS CDKの抽象化によるハイブリッドな構築・運⽤を⾏う。 AWS CDK
  17. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • インスタンス/クラスター識別⼦のみで他のプロパティ含め参照が可能。 • rds.DatabaseCluster の fromLookup は v2.205 でリリース予定(#34849 でマージ済み) fromLookup による参照 • grant/connections/metric による設定抽象化 • endpoint などプロパティ参照 ※rds.DatabaseInstance の fromLookup は Security Group が 参照できない(connections が使えない)問題あり。 #34906 で修正中。 • クラスター識別⼦を指定し参照
  18. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 参考 | Amazon RDS/Aurora の fromLookup の仕組み AWS Cloud Control API Amazon Aurora (実態) AWS CDK Context Provider により synth 時に値を取得 cdk.context.json 取得した値をキャッシュ Git repository commit Cloud Control API 対応リソースの fromLookup 実装が可能。 iam.Role.fromLookup, ecr.Repository.fromLookup 等が実装済。 cdk.context.json は commit する (デプロイの一貫性確保のため) 2回目以降の synth 時に使用 • 内部的に Context Provider for Cloud Control API を利⽤(2025/2 に追加) *AWS CDK 管理外にしたいリソースがある⽅は ぜひコントリビュートにチャレンジを︕
  19. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • ワークロードの特性を踏まえて運⽤を整理する - ステートフルリソースのため状態の変化の過程が意味を持つ - CDK/CFn による課題が許容できない場合、CDK 管理外 + fromLookup を検討する • IaC のメリットを活⽤できるか改めて考える - 環境の複製は IaC の強⼒なメリット - AI Agent 時代の今、DB がコード化され AI が把握・実装できるのはメリットの1つ 本発表の内容が少しでも参考になれば幸いです おわりに | Amazon RDS/Aurora は CDK/CFn で管理すべきか AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
  20. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Thank you! © 2025, Amazon Web Services, Inc. or its affiliates. All rights reserved. Yuki Matsuda @mazyu36
  21. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. © 2025, Amazon Web Services, Inc. or its affiliates. All rights reserved. Appendix
  22. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon RDS/Aurora と L2 Construct の関係 h"ps://docs.aws.amazon.com/AmazonRDS/latest/UserGuid e/Concepts.Mul>AZSingleStandby.html h"ps://docs.aws.amazon.com/AmazonRDS/latest/UserGuid e/mul>-az-db-clusters-concepts.html Amazon Aurora DB cluster h"ps://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overvie w.html Multi-AZ DB cluster deployments for Amazon RDS Multi-AZ DB instance deployments for Amazon RDS rds.DatabaseInstance rds.DatabaseCluster Amazon RDS (Aurora 除く) Amazon Aurora
  23. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • Infrequent Access クラスを使⽤し、ログ出⼒のコストを抑える。 • インスタンス/クラスターが使⽤するロググループ名で、先にロググループを作成し実現。 Amazon CloudWatch Logs Infrequent Acess を使⽤する • インスタンス/クラスターの識別⼦を あらかじめ定義(依存関係のため) • Names.uniqueResoureName を使⽤し、 物理名の直接指定を避ける • 出⼒するログを定義。 • ロググループ未定義のものは ログ出⼒時に Standard で⾃動⽣成。 • Infrequent Access に出⼒するログの ロググループを定義(例は general) • 依存関係を定義
  24. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • アップグレード時にインスタンス/クラスターパラメータグループは Replacement となるため、 物理名を指定かつ未変更だと失敗する パラメータグループの物理名を指定している場合 • パラメータグループは物理名を指定した状態で、バージョ ンのみ更新をかけると Replacement ができず失敗 - 物理名は指定しないのが望ましい • 物理名を指定せざるを得ない場合は、合わせて変更する。