Slide 1

Slide 1 text

第142回 雲勉 AWS Backupの復元テストで 自動化できること・できないこと

Slide 2

Slide 2 text

講師自己紹介 2 畠山大治 ⚫ 所属:クラウドインテグレーション事業部 アイレット歴は1年ちょっと ⚫ 業務:インフラ構築、監視設計・設定 ⚫ 趣味:Perfumeを追いかける 読書、映画・アニメを見る ⚫ 認定:AWS Community Builders 2024 Japan AWS Top Engineers 2024 Japan AWS All Certifications Engineers iretテクニカルアンバサダー ご質問は YouTubeのコメント欄で受け付けております。 後日回答させていただきます!

Slide 3

Slide 3 text

アジェンダ 3 ⚫ AWS Backupの復元テストについて ➢ 復元テストとは ➢ オンデマンド復元との違い ⚫ 実際に使ってみた ➢ 前提、検証で使った構成紹介 ➢ 復元テストの設定手順 ⚫ つまずきと解決策 ➢ 復元テストでできなかったこと ➢ 解決策と実装方法

Slide 4

Slide 4 text

AWS Backupの復元テストについて 4

Slide 5

Slide 5 text

復元テストとは 5 ⚫ AWS Backupで取得したバックアップの復元を自動化できる機能 ➢ バックアップボールトに保存されている復旧ポイントからの復元を スケジューリングできる ⚫ 作成されたリソースの削除まで自動で実行してくれる ➢ 復元時に自動的に付与されるタグを元に削除対象を判定 ⚫ 復元テストの成功/失敗は「復元ジョブ」の中で確認可能 ➢ EventBridgeを使うことで失敗した時の通知ができる

Slide 6

Slide 6 text

オンデマンド復元との違い 6 ⚫ アドホックに復元を実行する「オンデマンド復元」もある

Slide 7

Slide 7 text

オンデマンド復元との違い 7 ⚫ 復元するタイミング・頻度 ➢ 復元テスト:定期実行される ➢ オンデマンド復元:一時的な復元 ⚫ リージョン ➢ 復元テスト:一部リージョン(GovCloudリージョンや中国リージョン)で利用不可 ➢ オンデマンド復元:AWS Backupが提供されているリージョンなら使用可能 ⚫ 復元実行後の挙動 ➢ 復元テスト:復元されたリソースは削除される ➢ オンデマンド復元:復元されたリソースはそのまま残る

Slide 8

Slide 8 text

実際に使ってみた 8

Slide 9

Slide 9 text

前提、検証で使った構成紹介 9 実際の案件の要件に近い条件で検証を実施しました ⚫ 復元対象リソース:Amazon FSx for Windows File Server ⚫ Windows認証:自己管理型 Microsoft Active Directory ➢ ADDC(Active Directory Domain Controller)の機能を有効化、セットアップ済みの Windows Server(EC2)を別途作成 ※ADDCのセットアップ手順は割愛します ➢ 新しいフォレストを作成し、検証用ユーザーを作成 ➢ 検証用ユーザーを使い事前にFSxをADに参加させておく

Slide 10

Slide 10 text

前提、検証で使った構成紹介 10 ⚫ 復元テストで復元したFSxは別のVPCで 起動させる ➢ 本番VPCにあるFSxのバックアップを AWS Backupで定期的に取得 ➢ 取得済みのバックアップから復元テスト用 VPCに復元 ⚫ テストサーバーからFSxに接続 できることを確認 ➢ 構成簡略化のために、IP制限をかけた上で パブリックサブネットに配置

Slide 11

Slide 11 text

復元テストの設定手順 11 2つのステップを踏むことで復元テストの設定が完了する ※バックアッププランやルール、ボールトの設定は完了済みの前提 ⚫ 復元テストプランの作成 ➢ スケジュール設定や、復元テストで使用するバックアップボールトの設定を行う ⚫ リソースの割り当て ➢ 作成した復元テストを適用するリソースを選択 ➢ 復元するために必要なパラメータもここで設定

Slide 12

Slide 12 text

復元テストの設定手順 12 AWS Backup の画面から 「復元テスト」をクリック 「復元テストプランを作成」 をクリック

Slide 13

Slide 13 text

復元テストの設定手順:復元テストプランの作成 13 復元テストプランの設定内容 ⚫ 復元テストプラン名 ⚫ テストのスケジュール設定 ➢ 復元テストを実施する頻度 ➢ 開始する時刻 ➢ cron式での設定も可能

Slide 14

Slide 14 text

復元テストの設定手順:復元テストプランの作成 14 復元テストプランの設定内容 ⚫ 復元テストで使用するバックアップ ボールトの設定 ➢ どのボールトを使用するのか ➢ ボールトの中で復元テストの対象にする 復旧ポイントの範囲

Slide 15

Slide 15 text

復元テストの設定手順:リソースの割り当て 15 復元テストプランの作成が完了すると リソース割り当ての設定画面に遷移する ⚫ 保持期間 ➢ 復元されたリソースをどれくらいの期間 保持しておくかを設定 ⚫ 復旧するリソースの種類の設定 ➢ ボールトにバックアップされているリソース の中で、どれを復元テストの対象にするか

Slide 16

Slide 16 text

復元テストの設定手順:リソースの割り当て 16 ⚫ 復元パラメータの設定 ➢ 復元するために必要なパラメータを設定 ➢ 復元するリソースの種類によって設定するパラ メータが変わる ➢ FSxの場合は… • ファイルシステムを作成するサブネット • 優先サブネット • Managed Microsoft Active Directory のID (該当する場合のみ設定) など

Slide 17

Slide 17 text

復元テストの設定手順 17 設定完了!

Slide 18

Slide 18 text

つまずきと解決策 18

Slide 19

Slide 19 text

復元テストでできなかったこと 19 復元テストの実行まで待機していると、なぜか復元ジョブが失敗…

Slide 20

Slide 20 text

復元テストでできなかったこと 20 復元ジョブを確認すると、何かしらのパラメータが足りないため失敗したと いうエラーが発生していた (翻訳) バックアップは、セルフマネージドADに結合されたファイルシステム用に作成されました。 そこからファイルシステムを作成するには、AWS directory ID または SelfManagedActiveDirectoryConfiguration のいずれかを持つ WindowsConfiguration を 提供してください。

Slide 21

Slide 21 text

復元テストでできなかったこと 21 ほぼ同じ設定で実行したオンデマンド復元の復元パラメータと比較 “windowsconfigration” 配下の ”SelfManagedActiveDirectoryConfiguration” というパラメータがごっそり欠落していた 失敗した復元テスト 成功したオンデマンド復元

Slide 22

Slide 22 text

復元テストでできなかったこと 22 仕様を確認してみると ⚫ 復元テストを使用するには、メタデータをパラメータとして渡す必要がある ⚫ AWS Backupが自動的に補完してくれるメタデータもあるが、FSxの場合は 補完が不完全 ⚫ メタデータを上書きすることも可能だが、上書き不可のメタデータもある https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/restore-testing-inferred-metadata.html

Slide 23

Slide 23 text

復元テストでできなかったこと 23 仕様を確認してみると ⚫ 復元テストを使用するには、メタデータをパラメータとして渡す必要がある ⚫ AWS Backupが自動的に補完してくれるメタデータもあるが、FSxの場合は 補完が不完全 ⚫ メタデータを上書きすることも可能だが、上書き不可のメタデータもある https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/restore-testing-inferred-metadata.html

Slide 24

Slide 24 text

復元テストでできなかったこと 24 仕様を確認してみると ⚫ 復元テストを使用するには、メタデータをパラメータとして渡す必要がある ⚫ AWS Backupが自動的に補完してくれるメタデータもあるが、FSxの場合は 補完が不完全 ⚫ メタデータを上書きすることも可能だが、上書き不可のメタデータもある https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/restore-testing-inferred-metadata.html “SelfManagedActiveDirectoryConfiguration” についての言及が無い。。。

Slide 25

Slide 25 text

復元テストでできなかったこと 25 ダメ元でAWS CLIから実行してみるとエラー発生 An error occurred (InvalidParameterValueException) when calling the CreateRestoreTestingSelection operation: Restore metadata overrides are invalid: Restore metadata overrides contain an invalid or non- overridable nested key. Overridable nested keys: [deploymenttype, junctionpath, ontapvolumetype, logconfiguration, throughputcapacity, securitystyle, diskiopsconfiguration, activedirectoryid, sizeinmegabytes, storageefficiencyenabled, storagevirtualmachineid, tieringpolicy, preferredsubnetid]. 以下のキーしか上書きできないとのこと • deploymenttype • junctionpath • ontapvolumetype • logconfiguration • throughputcapacity • securitystyle • diskiopsconfiguration • activedirectoryid • sizeinmegabytes • storageefficiencyenabled • storagevirtualmachineid • tieringpolicy • preferredsubnetid つまり、Windows認証にセルフマネージドADを選択しているFSxは 復元テストが使用できない

Slide 26

Slide 26 text

解決策と実装方法 26 3つのStep Functionsステートマシンを組み合わせて復元テストと同等の機能を実装 1. オンデマンド復元を実行するStep FunctionsワークフローをEventBridge スケジューラーで定期実行 2. AWS Backupの復元ジョブをトリガーに、FSxにタグ付けをするStep Functions ワークフローを起動 3. 特定のタグがついているFSxを削除するStep FunctionsワークフローをEventBridge スケジューラーで定期実行 Step Functions, Lambda, EventBridgeを使ってスクラッチで実装

Slide 27

Slide 27 text

解決策と実装方法 27 Lambdaを主軸にすることも可能だが、今回はStep Functionsを主軸に実装 選定にあたっての背景: ⚫ Lambdaの保守コストを減らしたい ➢ Step Functionsの中で必要なLambdaは極力簡単なコードに ➢ ランタイム更新による影響を抑え、かつ引き継ぎコストも極力軽減させる ⚫ とはいえ、Step Functionsで完結させることにこだわらない ➢ Lambdaなしでも実装は可能だが、Step Functionsの定義が複雑になる

Slide 28

Slide 28 text

解決策と実装方法 28 オンデマンド復元の実行 ステートマシンを 定期実行 EventBridge スケジューラー AWS Backupによる オンデマンド復元 FSxにタグ付けする EventBridge ルール ステートマシンを起動 FSxを削除する ステートマシンを 定期実行 EventBridge スケジューラー 復元ジョブの 成功

Slide 29

Slide 29 text

解決策と実装方法 29 1. オンデマンド復元の実行 SSM Parameter Storeに暗号化して 保存してあるADの認証情報を取得

Slide 30

Slide 30 text

解決策と実装方法 30 1. オンデマンド復元の実行 対象のバックアップボールトに 存在する復旧ポイント一覧を取得

Slide 31

Slide 31 text

解決策と実装方法 31 1. オンデマンド復元の実行 取得したリカバリポイント一覧の中で 一番最近取得されたものをピックアップ するLambda関数を呼び出す

Slide 32

Slide 32 text

解決策と実装方法 32 1. オンデマンド復元の実行 ピックアップされた最新の復旧ポイント からの復元を実行 ※メタデータを挿入した上で StartRestoreJobアクションを実行 "Metadata": { "kmskeyid": ”xxxxxxxxx", "securitygroupids": ["sg-xxxxxxxxxx"], "storagetype": "SSD", "subnetids": ["subnet-xxxxxxxxxx","subnet-xxxxxxxxxx"], "WindowsConfiguration": { "DeploymentType": "MULTI_AZ_1", "ThroughputCapacity": 16, "PreferredSubnetId": "subnet- xxxxxxxxxx ", "SelfManagedActiveDirectoryConfiguration": { "DomainName": " xxxxxxxxxx.local", "FileSystemAdministratorsGroup": "Domain Admins", "UserName": "xxxxxxxxxx", "Password.$": "$.password.Parameter.Value", "DnsIps": [”xx.xx.xx.xx"] }, "AutomaticBackupRetentionDays": "0" } }

Slide 33

Slide 33 text

解決策と実装方法 33 1. オンデマンド復元の実行 オンデマンド復元が開始したら、復元 ジョブのIDをパラメータストアに保存 (保存したIDは次の処理で使用)

Slide 34

Slide 34 text

解決策と実装方法 34 2. FSxにタグ付けする EventBridgeルールから渡されたジョブ IDを、前の処理でParameter Storeに 保存したジョブIDと比較

Slide 35

Slide 35 text

解決策と実装方法 35 2. FSxにタグ付けする 比較の結果によって処理を分岐 ・一致すればAdd Tagを実行 ・一致しなければEnd(何もせず終了)を実行

Slide 36

Slide 36 text

解決策と実装方法 36 2. FSxにタグ付けする 復元されたFSxに対してタグをつける

Slide 37

Slide 37 text

解決策と実装方法 37 3. FSxを削除する FSx一覧を取得し、特定のタグがついてる ファイルシステムの名前を抽出する

Slide 38

Slide 38 text

解決策と実装方法 38 3. FSxを削除する 抽出した結果によって処理を分岐 ・一つでも該当のリソースがあれば DeleteFileSystemsを実行 ・一つもなければNoFileSystemsToDelete を実行(何も処理せず終了)

Slide 39

Slide 39 text

解決策と実装方法 39 3. FSxを削除する 該当リソースに対してDeleteFileSystem アクションを実行 ※該当リソースが複数あることを想定して Mapステートを利用

Slide 40

Slide 40 text

まとめ 40 ⚫ AWS Backupの復元テストを使用することで、取得しているバックアップ からの復元が正常にできるかどうかのテストを自動化できる ⚫ ただし、自己管理型ADをWindows認証に使用しているFSxでは復旧テス トが使用できない ⚫ Step Functions, Lambda, EventBridgeを組み合わせて代替手段を実装 することが可能 ⚫ 「他にこんな方法もあるよ」という意見あれば、ぜひ教えてください!

Slide 41

Slide 41 text

参考資料 41 復元テスト | AWS Backup 開発者ガイド https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/restore-testing.html 復元テストの推定メタデータ | AWS Backup 開発者ガイド https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/restore-testing-inferred- metadata.html FSX ファイルシステムの復元 | AWS Backup 開発者ガイド https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/restoring-fsx.html