サイトアイコン 協栄情報ブログ

AWS CDKによる【AWS Backup】の構築

皆様こんにちは。
AWS CDKを利用してマルチAZ3層アーキテクチャ構築をしていきます。
この記事ではAWS Backupの作成を行います。

目次はこちら

1.AWS Backupとは

AWS Backupは、AWSが提供するフルマネージドのバックアップサービスです。以下の主要な機能を提供します

主な機能

利用シーン

AWS Backupは、これらの機能を活用して、クラウド環境におけるバックアップと復元の効率性を高め、ビジネスの運用におけるリスクを低減します。
詳細は公式ドキュメントを参照ください。

2.目的

EC2インスタンスのバックアップを作成する。

3.構成図

4.全体構築ソースコード

        # バックアップボールトの作成
        backup_vault = backup.BackupVault(self, "BackupVault",
            backup_vault_name="kitaya-vault-backup"
        )
        Tags.of(backup_vault).add("Name", "kitaya-vault-backup")

        # バックアッププランの作成
        backup_plan = backup.BackupPlan(self, "BackupPlan",
            backup_plan_name="kitaya-backup-ec2"
        )

        # バックアッププランルールの追加
        backup_plan.add_rule(backup.BackupPlanRule(
            backup_vault=backup_vault,
            rule_name="DailyBackup",
            schedule_expression=events.Schedule.cron(hour="16", minute="0"),
            start_window=Duration.hours(1),
            completion_window=Duration.hours(24),
            delete_after=Duration.days(30)
        ))

        Tags.of(backup_plan).add("Name", "kitaya-backup-ec2")

        # バックアップ対象を設定
        backup_selection = backup.BackupSelection(self, "BackupSelection",
            backup_plan=backup_plan,
            resources=[
                backup.BackupResource.from_arn(f"arn:aws:ec2:{self.region}:{self.account}:instance/{instance_01.ref}"),
                backup.BackupResource.from_arn(f"arn:aws:ec2:{self.region}:{self.account}:instance/{instance_02.ref}")
            ]
        )

5.ソースコード詳細

5-1.バックアップボールトの作成

バックアップボールトを作成します。
バックアップボールトは、AWS Backupでのバックアップデータを保管するための場所です。

プロパティは下記

使用するプロパティ 設定値 説明
backup_vault_name "kitaya-vault-backup" 作成するバックアップボールトの名前を指定
        # バックアップボールトの作成
        backup_vault = backup.BackupVault(self, "BackupVault",
            backup_vault_name="kitaya-vault-backup"
        )
        Tags.of(backup_vault).add("Name", "kitaya-vault-backup")

5-2.バックアッププランの作成

バックアッププランを作成します。
バックアッププランは、バックアップルールを定義し、リソースのバックアップを管理するために使用されます。

プロパティは下記

使用するプロパティ 設定値 説明
backup_plan_name "kitaya-backup-ec2" 作成するバックアッププランの名前を指定

プロパティは下記

使用するプロパティ 設定値 説明
backup_vault backup_vault バックアップを保存するバックアップボールトを指定します。
rule_name "DailyBackup" バックアッププランルールの名前です。
schedule_expression events.Schedule.cron(hour="16",minute="0") バックアップのスケジュールを指定します。毎日16時(UTC)に設定。
start_window Duration.hours(1) バックアップジョブの開始ウィンドウを指定します。1時間以内に開始されるよう指定。
completion_window Duration.hours(24) バックアップジョブの完了ウィンドウを指定します。24時間以内に完了されるよう指定。
delete_after Duration.days(30) バックアップデータの保存期間を指定します。30日経過後にデータが削除されるよう指定。
        # バックアッププランの作成
        backup_plan = backup.BackupPlan(self, "BackupPlan",
            backup_plan_name="kitaya-backup-ec2"
        )

        # バックアッププランルールの追加
        backup_plan.add_rule(backup.BackupPlanRule(
            backup_vault=backup_vault,
            rule_name="DailyBackup",
            schedule_expression=events.Schedule.cron(hour="16", minute="0"),
            start_window=Duration.hours(1),
            completion_window=Duration.hours(24),
            delete_after=Duration.days(30)
        ))

        Tags.of(backup_plan).add("Name", "kitaya-backup-ec2")

5-3.バックアップ対象の設定

EC2インスタンス(1号機、2号機)をバックアッププランに追加し、これらのリソースに対してバックアップを適用するための設定を行っています。

プロパティは下記

使用するプロパティ 設定値 説明
backup_plan backup_plan どのバックアッププランにこのバックアップ選択を適用するかを指定します。ここでは、作成したバックアッププランを指定しています。
resource_type "下記にて説明" バックアップ対象として指定するリソースのリストです。ここでは、2つのEC2インスタンスのARNで指定しています。
        # バックアップ対象を設定
        backup_selection = backup.BackupSelection(self, "BackupSelection",
            backup_plan=backup_plan,
            resources=[
                backup.BackupResource.from_arn(f"arn:aws:ec2:{self.region}:{self.account}:instance/{instance_01.ref}"),
                backup.BackupResource.from_arn(f"arn:aws:ec2:{self.region}:{self.account}:instance/{instance_02.ref}")
            ]
        )

6.検証

マネジメントコンソールでバックアップボールトを確認すると、以下のように正しくバックアップが取れていることが確認できました。

7.感想

スムーズに構築することができた。
AWS Backupの設定は初めて行ったのでいい勉強になった。

モバイルバージョンを終了