【CloudFormation】AWSマルチAZ3層アーキテクチャの構築_Backup

皆様、お世話になっております。鈴木と申します。
今回はAWS Cloudformationを使用してAWS Backupを構築してEC2のバックアップを取得します。

1.目次

目次はこちら

2.要件

  • EC2インスタンスのバックアップを取得する。
    ※RDSはRDS自体にバックアップ機能が付いているため、ここでは省略致します。

3.AWS Backupについて

AWS Backupを使用することで、EC2インスタンスのバックアップを簡単に管理し、自動化することができます。以下に、EC2インスタンスのバックアップに関する主な特徴と設定方法を説明します。

特徴 説明
EC2バックアップの自動化 EC2インスタンスのバックアップを自動化し、スケジュールに基づいて定期的にバックアップを作成
スナップショットの管理 EC2インスタンスのEBSボリュームのスナップショットを作成し、バックアップデータの保管と管理を行う
バックアッププランの適用 バックアップスケジュールや保持ポリシーを定義したバックアッププランを作成し、複数のインスタンスに適用可能
リカバリの簡素化 特定のリカバリポイントからインスタンスを復元し、迅速なデータリカバリを実現
バックアップの監視 バックアップの進行状況やステータスを監視し、成功・失敗の履歴を確認
クロスリージョンバックアップ バックアップデータを複数のAWSリージョンに保存し、災害復旧のための対策として利用

AWS Backupは、AWSの複数のサービス(EC2、DynamoDB,RDS,EFSなど)のバックアップとリカバリを一元的に管理するサービスです。バックアップポリシーの設定やライフサイクル管理を通じて、データ保護の効率を高めることができます。
複数のサービスを統合的に管理する場合や、追加のバックアップ機能が必要な場合に利用するのが良いと考えられます。

4.構成図

今回の対象はEC2インスタンスのみです。
file

5.ソースコード全体

YAML形式にて記述しております。

AWSTemplateFormatVersion: '2010-09-09'
Description: Backup Plan template to back up specified EC2 instances daily at 16:00 UTC.

Resources:
  BackupVault:
    Type: "AWS::Backup::BackupVault"
    Properties:
      BackupVaultName: "naoki-vault-backup"

  BackupPlanWithThinBackups:
    Type: "AWS::Backup::BackupPlan"
    Properties:
      BackupPlan:
        BackupPlanName: "naoki-backup-ec2"
        BackupPlanRule:
          - RuleName: "RuleForDailyBackups"
            TargetBackupVault: !Ref BackupVault
            Lifecycle:
              DeleteAfterDays: 30
            RecoveryPointTags:
              Name: "naoki-backup-ec2"

  BackupSelection:
    Type: "AWS::Backup::BackupSelection"
    Properties:
      BackupPlanId: !Ref BackupPlanWithThinBackups
      BackupSelection:
        SelectionName: "naoki-as-backup-ec2"
        IamRoleArn: arn:aws:iam::ユーザーID:role/naoki-ec2backup
        Resources:
          - arn:aws:ec2:ap-northeast-2:ユーザーID:instance/インスタンスID
          - arn:aws:ec2:ap-northeast-2:ユーザーID:instance/インスタンスID

6.ソースコード詳細

6-1.BackupVaultの作成

まずBackupVault(バックアップデータを保存するための保管場所)を作成します。

使用するオプション 設定値 説明
Type AWS::Backup::BackupVault バックアップの保管場所を定義します。
BackupVaultName naoki-vault-backup バックアップボールトの名前を指定します。
  BackupVault:
    Type: "AWS::Backup::BackupVault"
    Properties:
      BackupVaultName: "naoki-vault-backup"

6-2.BackupPlanの作成

バックアップのスケジュールやルールを定義する設定を行います。

使用するオプション 設定値 説明
Type AWS::Backup::BackupPlan バックアッププランを定義します。
BackupPlan バックアッププランの詳細設定
BackupPlanName naoki-backup-ec2 バックアッププランの名前を指定します。
BackupPlanRule バックアップルールの詳細設定
– RuleName RuleForDailyBackups ルールの名前を指定します。
TargetBackupVault !Ref BackupVault バックアップの保存先ボールトを指定します。
Lifecycle ライフサイクル設定
DeleteAfterDays 30 バックアップを30日後に削除する設定です。
RecoveryPointTags リカバリーポイントにタグを付ける設定
Name naoki-backup-ec2 リカバリーポイントのタグ名を指定します。

6-3.BackupSelectionの設定

バックアップ対象とするリソースを指定する設定を行います。

使用するオプション 設定値 説明
Type AWS::Backup::BackupSelection バックアップ対象の選択を定義します。
BackupPlanId !Ref BackupPlanWithThinBackups バックアッププランのIDを指定します。
BackupSelection バックアップ選択の詳細設定
SelectionName naoki-as-backup-ec2 バックアップ選択の名前を指定します。
IamRoleArn arn:aws:iam::ユーザーID:role/naoki-ec2backup バックアップ操作に使用するIAMロールのARNです。
Resources バックアップ対象のリソース
– arn:aws:ec2:ap-northeast-2:ユーザーID:instance/インスタンスID バックアップ対象のEC2インスタンスのARNです。

7.テスト

まずは実際にバックアップが取れているかを確認します。
コンソール画面からバックアップボールトを押下すると下記のように表示されていれば、バックアップを取得できています。
file
赤枠の復元を押下することで、VPCなどを選択して復元させることが出来ます。
file

8.感想

今回がEC2だけでしたが、EFSやRDS、ほかのサービスの一元化したルールのもとでバックアップを取得できるので、またいろんなパターンで実施していこうと思います。
次回はCloudwatchとSNS通知の構築を実施していきます。

Last modified: 2024-07-31

Author