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

AWS Backupを利用して、Amazon S3のバックアップをしてみる

saitou-s3-backupアイキャッチ


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

Amazon S3ってバックアップを取る必要があるのかな?、と思っている方もいるはずです。

 

かく言う私も、Amazon S3のバックアップを取得するという考え方自体、頭にありませんでした。なぜなら、Amazon S3の高耐久性やバージョニング機能があるためかもしれません。

 

しかし、バケット自体削除してしまった場合はどうでしょうか

 

今回の記事では、誤ってAmazon S3のバケットを削除してしまったときに備え、AWS Backupを利用したAmazon S3のバックアップ方法を紹介します。

 

 

Amazon S3のバックアップをしてみる

■AWS Backupとは


Amazon S3のバックアップは、AWS Backupを利用して取得されます。

 

AWS Backupとは、

 

AWS Backup はフルマネージド型のバックアップサービスであり、AWS のサービス、クラウド内、およびオンプレミス間で簡単に一元化およびデータ保護を自動化できます。(AWS公式ドキュメントより)

 

 

2023年4月現在で、以下のAWSリソースのバックアップに使用できます。

 

 

さらに詳しく知りたい方はこちらから

 

 

■構築の流れ

今回のAWS Backupを利用したAmazon S3のバックアップは以下の流れで作成していきます。

 

 

 

■IAMポリシー作成

Amazon S3バックアップポリシーとAmazon S3リストアポリシーを作成します。デフォルトロールも用意されていますが、S3に関する許可は記述されていません。

 

 

↓AWS IAMのコンソール画面から[ポリシー]→[ポリシーの作成]をクリックします。

 

 

↓[JSON]タブをクリックし、以下のドキュメントを貼り付けます。

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "S3BucketBackupPermissions",
            "Action": [
                "s3:GetInventoryConfiguration",
                "s3:PutInventoryConfiguration",
                "s3:ListBucketVersions",
                "s3:ListBucket",
                "s3:GetBucketVersioning",
                "s3:GetBucketNotification",
                "s3:PutBucketNotification",
                "s3:GetBucketLocation",
                "s3:GetBucketTagging",
                "s3:GetBucketAcl"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "S3ObjectBackupPermissions",
            "Action": [
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:GetObjectVersionTagging",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectTagging",
                "s3:GetObjectVersion"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*/*"
            ]
        },
        {
            "Sid": "S3GlobalPermissions",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "KMSBackupPermissions",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": "s3.*.amazonaws.com"
                }
            }
        },
        {
            "Sid": "EventsPermissions",
            "Action": [
                "events:DescribeRule",
                "events:EnableRule",
                "events:PutRule",
                "events:DeleteRule",
                "events:PutTargets",
                "events:RemoveTargets",
                "events:ListTargetsByRule",
                "events:DisableRule"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:events:*:*:rule/AwsBackupManagedRule*"
        },
        {
            "Sid": "EventsMetricsGlobalPermissions",
            "Action": [
                "cloudwatch:GetMetricData",
                "events:ListRules"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

 

 

 

↓貼り付けが完了したら、[次のステップ: タグ]をクリックします。

 

 

↓タグは任意で設定し、[次のステップ: 確認]をクリックします。

 

 

名前を入力し、内容に問題なければ、[ポリシーの作成]をクリックします。
saitou-backuptest-s3-policy

 

Amazon S3バックアップポリシー同様に、Amazon S3リストアポリシーを作成します。以下のドキュメントを利用して、IAMポリシーを作成してください。
saitou-restoretest-s3-policy

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "S3BucketRestorePermissions",
            "Action": [
                "s3:CreateBucket",
                "s3:ListBucketVersions",
                "s3:ListBucket",
                "s3:GetBucketVersioning",
                "s3:GetBucketLocation",
                "s3:PutBucketVersioning"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "S3ObjectRestorePermissions",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:DeleteObject",
                "s3:PutObjectVersionAcl",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectTagging",
                "s3:PutObjectTagging",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl",
                "s3:PutObject",
                "s3:ListMultipartUploadParts"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*/*"
            ]
        },
        {
            "Sid": "S3KMSPermissions",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": "s3.*.amazonaws.com"
                }
            }
        }
    ]
}

 

 

IAMポリシー作成は以上です。

 

 

■IAMロール作成

AWS Backupがバケットをバックアップする際に利用する、IAMロールを作成します。

 

 

↓AWS IAMのコンソール画面から[ロール]→[ロールを作成]をクリックします。

 

 

↓以下の設定値を選択します。

 

項目 設定値
信頼されたエンティティタイプ AWSのサービス
他のAWSのサービスのユースケース AWS Backup

 

 

↓以下の4つのIAMポリシーを追加します。

 

 

 

↓ロール名を入力し、内容に問題なければ[ロールを作成]をクリックします。
saitou-backuptest-s3-iamrole

 

 

↓内容に問題なければ、[ロールを作成]をクリックします。

 

 

 

IAMロール作成は以上です。

 

 

■KMS作成

Amazon S3をバックアップするときは、バックアップボールトに関連付けられたKMSによって暗号化されます。バックアップボールトを作成する際にKMSを選択しますので、事前に作成しておきます。

 

 

↓Key Management Serviceコンソール画面に行きます。

 

 

↓[カスタマー管理型のキー]→[キーの作成]をクリックします。

 

 

↓以下の設定値を選択し、[次へ]をクリックします。

 

項目 設定値
キーのタイプ 対称
キーの使用 暗号化および復号化

 

 

↓以下の設定値を入力し、作成します。

 

項目 設定値
エイリアス saitou-backuptest-s3-kms
説明 任意
タグ 任意
キー管理者 IAMユーザー(自身)
キーの管理者がこのキーを削除できるようにします。
キーユーザー IAMユーザー(自身)

 

 

↓内容に問題なければ、[完了]をクリックします。

 

 

 

KMSキー作成は以上です。

 

 

■AWS Backup作成

■バックアップボールト作成

AWS Backupを利用するためには、一つ以上のバックアップボールトが必要になります。vaultには"金庫"という意味があるので、バックアップの保管庫的な意味だと思います。

 

 

↓AWS Backupコンソール画面に移動し、[バックアップボールト]→[バックアップボールトを作成]をクリックします。

 

 

↓設定値は以下の通りです。入力が完了したら、[バックアップボールトを作成]をクリックします。

 

項目 設定値
バックアップボールト名 saitou-backuptest-s3-backupvault
暗号化キー :作成したKMSを選択
タグ 任意

 

 

 

■バックアッププラン作成

バックアッププランではバックアップの頻度や保持期間、などのルールを設定できます。

 

 

↓[バックアッププラン]→[バックアッププランを作成]をクリックします。

 

 

↓以下の設定値を入力してください。いくつかの設定は要件に合わせて選択しましょう。

 

項目 設定値
バックアッププランのオプション 新しいプランを立てる
バックアッププラン名 saitou-backuptest-s3-backupplan
バックアップルール名 saitou-backuptest-s3-backuprules
バックアップボールト saitou-backuptest-s3-backupvault
バックアップ頻度 毎日
ポイントインタイムリカバリ(PITR)のために継続的なバックアップを有効化
バックアップ期間 バックアップ期間のデフォルトを使用
コールドストレージへの移行 しない
保持期間 日数(4)
コピー先にコピー 選択しない

 

 

 

↓入力が完了したら、[プランを作成]をクリックします。すぐに"リソースの割り当て"作成画面に移ります。

 

 

↓[リソース割り当て]作成に関しては、設定値は以下の通りです。

 

項目 設定値
リソース割り当て名 saitou-backuptest-s3-resources
IAMロール 作成したIAMロール
リソース選択を定義 特定のリソースタイプを含める
バケット名 バックアップを取得したいバケット
特定のリソースタイプを選択 S3
選択したリソースタイプから特定のリソースIDを除外する 選択しない
タグを使用して選択を絞り込む 選択しない

 

 

 

↓[リソースの割り当て]をクリックします。

 

 

 

構築は以上です。

 

 

■動作確認

設定が完了しましたので、バックアップされているか確認しましょう。

 

バックアップの[頻度]を"毎日"に設定し、[バックアップ期間]を"デフォルト"に設定しましたので、日本時間で14時から始まります。

 

 

↓AWS Backupコンソール画面から[ジョブ]→[バックアップジョブ]をクリックします。

 

 

↓バックアップを指定したS3バケットと同じリソース名のジョブステータスが"完了"になっています。

 

 

↓バックアップしたS3のスナップショットに関しては、[バックアップボールト]→[作成したバックアップボールト]→[復旧ポイント]、

 

 

↓もしくは、[保護されたリソース]→[バックアップ指定したS3バケットと同様の名前のリソースID]で確認できます。

 

 

 

動作確認は以上です。

 

 

まとめ:AWS Backupを利用して、Amazon S3のバックアップをしてみる

Amazon S3は高耐久であり、バージョニング機能があるため、バックアップをしない場合があるかもしれません。

 

Amazon S3バケットはバケット自体を削除する際にも、誤って削除してしまわないように、バケットが空の状態でないと削除できません。しかし、なにが起こるかわかりませんので、Amazon S3のバックアップを検討してみてください。

 

"復元"に関しては、後日投稿させていただきます。

 

 

参考リンク:AWS公式ドキュメント

 

 

↓ほかの協栄情報メンバーもAWS Backupに関する記事を公開しています。ぜひ参考にしてみてください。

 

■AWS Backup で EC2のバックアップを実際に取得してみた。(kudou.m)
https://cloud5.jp/aws-backup-forec2/

 

■AWS Backup構築ハンズオン(INAMURA)
https://cloud5.jp/aws-backup/

 

 

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