皆様、お世話になっております。鈴木と申します。
今回は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インスタンスのみです。
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.テスト
まずは実際にバックアップが取れているかを確認します。
コンソール画面からバックアップボールトを押下すると下記のように表示されていれば、バックアップを取得できています。
赤枠の復元を押下することで、VPCなどを選択して復元させることが出来ます。
8.感想
今回がEC2だけでしたが、EFSやRDS、ほかのサービスの一元化したルールのもとでバックアップを取得できるので、またいろんなパターンで実施していこうと思います。
次回はCloudwatchとSNS通知の構築を実施していきます。