Slide 1

Slide 1 text

© 2024 Mizuho Research & Technologies, Ltd. クラスメソッドのCDK事情大公開スペシャル#1 0 技術開発本部 先端技術研究部 AWS CDKでデータリストアの運用、どのように設計する? ~Aurora・EFSの実践事例を紹介~ 2024年11月1日

Slide 2

Slide 2 text

© 2024 Mizuho Research & Technologies, Ltd. 1 氏名:松尾 優成(Matsuo Yusei) 所属:先端技術研究部 兼 プロジェクト推進部 役割:社内向けAWSプラットフォームの構築・運用 活動:社内コミュニティ「コクリエ」運営 少しずつですが情報発信を増やしています! 自己紹介

Slide 3

Slide 3 text

© 2024 Mizuho Research & Technologies, Ltd. 2 社内向け AWS プラットフォームの概要 • 社内へセキュアなAWSアカウントを迅速に提供するプラットフォーム • マルチアカウント管理に AWS Control Tower と AWS CDKを活用 • 詳細な構成は builders.flash で公開中! https://aws.amazon.com/jp/builders-flash/202405/mizuho-service-catalog/ https://aws.amazon.com/jp/builders-flash/202406/mizuho-account-automation/

Slide 4

Slide 4 text

© 2024 Mizuho Research & Technologies, Ltd. プラットフォームに関する問合せ・申請の受付方法 • サポート窓口として、セルフホストした Redmine 環境を AWS 上に構築 • 利用者と運用者は Redmine 上で各種問合せ・申請をやり取り 3 WAF CloudFront ELB 利用者 自社拠点 問合せ/申請 Fargate Aurora EFS VPC Backup 確認/回答 運用者 Entra AWS CDK で構築!

Slide 5

Slide 5 text

© 2024 Mizuho Research & Technologies, Ltd. 4 予期せぬデータ喪失!? AWS CDK 構築後、復旧で慌てないために何をする?

Slide 6

Slide 6 text

© 2024 Mizuho Research & Technologies, Ltd. 5 AWS CDK はシステム開発をコードで効率化するが アプリケーションのデータはコード管理されない! 案件メンバーに聞いた話 ✓ AWS CDK で作るのは簡単なのに、リストアが絡むと煩雑… ✓ DB を手動リストアすると運用で AWS CDK の恩恵が…

Slide 7

Slide 7 text

© 2024 Mizuho Research & Technologies, Ltd. 6 システム開発・運用では… 思わぬ障害や操作ミスでデータ消失するリスクがある ✓ 開発環境での誤操作によるデータ削除 ✓ 本番環境での予期せぬ障害発生 ✓ ステージング環境から本番環境へのデータ移行失敗

Slide 8

Slide 8 text

© 2024 Mizuho Research & Technologies, Ltd. 7 リストア手順を事前に準備していないと… 時間とコストの損失!?サービス継続性に深刻な影響が! リストア要件を明確にし、適切な復旧戦略を立てておくことで 安心したインフラ運用につながる! バックアップ要件も重要ですが 今回はリストア手法のみに着目してご紹介!

Slide 9

Slide 9 text

© 2024 Mizuho Research & Technologies, Ltd. 8 AWS CDK で構築したデータリソースのリストア考慮事項 コンソールでのリストアはお手軽そうだけど CloudFormation スタックの管理から外れる… どこまで自動化する? 手動リストア後に cdk import ? アプリ側の向き先切替も手間… リストア手順を 整理しないと…

Slide 10

Slide 10 text

© 2024 Mizuho Research & Technologies, Ltd. そこで、AWS CDK で構築した Aurora ・ EFS について リストア実践事例を紹介します! 9 WAF CloudFront ELB Fargate Aurora EFS VPC Backup リストア対象

Slide 11

Slide 11 text

© 2024 Mizuho Research & Technologies, Ltd. 10 リストアの方針 ⚫ ダウンタイムを許容できるため、必要以上に自動化しない (Redmine は社内用で代替の連絡手段もあるため RTO に余裕あり) ⚫ リストア後もリソースの CFn スタック管理を維持したい →スタックの保守で CDK の更新などが実行しやすい ⚫ AWS CDK 初心者でも簡単に実行できる手順にしたい

Slide 12

Slide 12 text

© 2024 Mizuho Research & Technologies, Ltd. 11 まずは Aurora のリストアを紹介! 以後は AWS CDK v2.162.1 (TypeScript)で紹介します

Slide 13

Slide 13 text

© 2024 Mizuho Research & Technologies, Ltd. 12 DatabaseClusterFromSnapshot でお手軽にリストア! • DatabaseClusterFromSnapshot は AWS CDK の便利な L2 Construct • スナップショット ARN を指定するだけで CFn 管理下の DB クラスターを復元 • ECS タスクの DB 向き先は既存定義を流用できるので切替を意識する必要なし Aurora のリストア https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_rds.DatabaseClusterFromSnapshot.html ここにリストアしたい断面の スナップショット ARN を指定 API リファレンスのサンプルコード

Slide 14

Slide 14 text

© 2024 Mizuho Research & Technologies, Ltd. 実装では条件分岐で通常の DatabaseCluster と使い分け! どちらの L2 も Construct Props は殆ど同じ! 13 Aurora のリストア 初期構築や開発用途などで スナップショット ARN が 渡されない場合、新規作成 スナップショット ARN の受け渡しによる DB クラスター生成の切替

Slide 15

Slide 15 text

© 2024 Mizuho Research & Technologies, Ltd. 14 リストアで一度指定したスナップショット ARN は取扱注意! 再度リストアするまで、スナップショット ARN を変更しない! (スナップショット ARN は Git Commit して 変更管理する) Aurora のリストア https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html CFn ユーザーガイドを機械翻訳 SnapshotIdentifierプロパティを指定してDBクラスタをリストアした後、今後DBクラスタを更 新する場合は、同じ SnapshotIdentifier プロパティを指定する必要があります。更新時にこの プロパティを指定すると、DBクラスタはDBクラスタスナップショットから再度リストアされ ず、データベース内のデータは変更されません。ただし、SnapshotIdentifierプロパティを指定 しないと、空のDBクラスタが作成され、元のDBクラスタは削除されます。前回のスナップ ショットリストアプロパティと異なるプロパティを指定すると、指定した SnapshotIdentifier プロパティから新しいDBクラスタがリストアされ、元のDBクラスタは削除されます。

Slide 16

Slide 16 text

© 2024 Mizuho Research & Technologies, Ltd. 15 次に EFS のリストアを紹介! 本事例では EFS の匿名アクセスを 許可しているのでご留意ください

Slide 17

Slide 17 text

© 2024 Mizuho Research & Technologies, Ltd. 16 AWS CDK で EFS を直接リストアできない? • EFS に DatabaseClusterFromSnapshot のような L2 Construct なし • 外部 EFS を取り込むメソッドはあるが、リストア観点だと考慮事項が多そう? EFS のリストア API リファレンスのサンプルコード https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_efs.FileSystemAttributes.html リストアに活用するのが 難しそうだったので見送り

Slide 18

Slide 18 text

© 2024 Mizuho Research & Technologies, Ltd. 17 CloudShell から AWS Backup の リストアジョブを手動実行することに! シンプルな方法を模索した結果… EFS のリストア インシデント調査など様々なケースを考慮して 新規 EFS へのリストア手順を紹介します

Slide 19

Slide 19 text

© 2024 Mizuho Research & Technologies, Ltd. 採用した EFS リストア手順(1/3) 1. AWS Backup でリカバリポイントの ARN をメモし、 リストア先として別スタックを CDK デプロイ(EFS 含めて新規作成) 18 EFS のリストア cdk deploy New Stack ELB Fargate Aurora EFS VPC Backup 事前にスナップショット ARN を指定 CloudFront EFS は空 デプロイ時間の大半は Aurora リストアに依存 Aurora/EFS の 復旧断面を保持

Slide 20

Slide 20 text

© 2024 Mizuho Research & Technologies, Ltd. 採用した EFS リストア手順(2/3) 2. VPC プライベートサブネット内に CloudShell を起動し、 新規 EFS に対して AWS Backup のリストア API を手動実行 19 EFS のリストア EFS VPC Backup CloudShell NAT gateway リストア API 実行 起動 リストア パブリックサブネット内の CloudShell ではデフォルトだと パブリック接続不可なので注意 復旧元 EFS の バックアップ Vault

Slide 21

Slide 21 text

© 2024 Mizuho Research & Technologies, Ltd. 採用した EFS リストア手順(3/3) 3. CloudShell に EFS を マウントし、 リストアされた EFS のディレクトリ階層を手動修正 20 EFS のリストア EFS VPC CloudShell EFSをマウント ディレクトリ階層の修正

Slide 22

Slide 22 text

© 2024 Mizuho Research & Technologies, Ltd. 21 (補足)EFS をリストアする際の留意点 EFS リストア後に、バックアップ元とディレクトリの階層がずれる! EFS のリストア root 2023 11 12 2024 1 root aws-backup- restore_xxxx 2023 11 12 2024 1 リストア後の階層 バックアップ元の階層 リストアで階層が自動追加されるため ディレクトリ階層変更の考慮が必要

Slide 23

Slide 23 text

© 2024 Mizuho Research & Technologies, Ltd. 22 本リストア手順の嬉しい点を 3 つ紹介!

Slide 24

Slide 24 text

© 2024 Mizuho Research & Technologies, Ltd. 23 AWS CDK コードの EFS はシンプルで凝った作りこみ不要! 採用した EFS リストア手順の嬉しい点(1/3) 条件分岐なしでシンプル! CFn スタック管理も継続 L2 Construct により マウントターゲットや セキュリティグループが自動作成される

Slide 25

Slide 25 text

© 2024 Mizuho Research & Technologies, Ltd. 24 踏み台サーバ不要で、CloudShell からコマンドが完結! CloudShell の VPC 対応前は踏み台を準備していたので嬉しい! 採用した EFS リストア手順の嬉しい点(2/3) EFS VPC CloudShell 起動 ディレクトリ階層の修正 2024/6/25: AWS CloudShell now supports Amazon Virtual Private Cloud (VPC) - AWS Backup NAT gateway リストア API 実行 リストア 復旧元 EFS の バックアップ Vault

Slide 26

Slide 26 text

© 2024 Mizuho Research & Technologies, Ltd. 25 VPC 内の CloudShell から実行するコマンドも簡単! 1. AWS Backup のリストアジョブ実行 2. EFS のマウント 3. ディレクトリ階層修正 ⇒ 3 つのステップでリストア可能! 採用した EFS リストア手順の嬉しい点(3/3) $ aws backup start-restore-job --recovery-point-arn xx -metadata xx ~ $ mkdir efs && sudo yum install -y nfs-utils && sudo mount -t nfs4 –o xx ~ $ sudo mv efs/aws-backup-restore_YYYY-MM-DDxxx/* efs/ Aurora に加えて EFS も ECS タスクの切替不要!

Slide 27

Slide 27 text

© 2024 Mizuho Research & Technologies, Ltd. 26 より迅速なリストアが求められるケースでは StepFunctions や SSM で自動化を検討するのもよいかも? 本事例は手動実行ですが…

Slide 28

Slide 28 text

© 2024 Mizuho Research & Technologies, Ltd. 27 まとめ • AWS CDK で構築したデータリソースのリストア手順整備は重要! • Aurora のリストアは DatabaseClusterFromSnapshot でお手軽! • EFS のリストアでは VPC 対応した CloudShell が便利! (リストアのために AWS CDKのコードを複雑にしすぎない) • 各プロジェクトの要件・状況に合わせて 適切な手法を選択することが大事!

Slide 29

Slide 29 text

28