「AWS Backup for Amazon S3」 の一般提供が公開されました
2022.3.11
はじめに
こんにちは。CloudLead チームの Cold-Airflow です。
2022/2/18 に AWS Backup で Amazon S3 のサポートが一般公開されました。
本日、AWS は AWS Backup for Amazon S3 を一般提供し、AWS Backup でサポートされる一連のサービスに Amazon S3 を追加することを発表します。コンピューティング、ストレージ、データベースに関する AWS のその他のサービスとともに、Amazon S3 に保存されているアプリケーションデータのバックアップと復元を集中的に自動化することが簡単になります。AWS Backup は AWS Organizations とシームレスに統合されているため、すべてのアカウントにわたって S3 データのイミュータブルなバックアップの作成と管理を集中的に行い、不注意なアクションや悪意のあるアクションからデータを保護し、数回クリックするだけで指定時点にデータを復元することができます。
AWS Backup for AmazonS3 の一般提供を発表
AWS Backup for Amazon S3 のメリットは?
- AWS Backup でバックアップを一元管理
- より簡単にデータを復元
- バックアップコンプライアンスが向上
フルマネージドサービスである AWS Backup にバックアップ作業や復元作業を任せられるのでかなり便利なアップデート内容です。
実際にやってみた
保護対象リソース S3 構築
保護作業となる S3 を作成します。
ここで一つ注意点です。
AWS Backup で保護対象に選択できるのはバージョニングが有効になっている S3 バケットのみです。
ちなみに、バージョニングが有効化されていない S3 を選択するとエラーとして表示されます。
バージョニングが有効化されているバケットが作成できたら、復元した際にわかりやすいようにファイルを作成しておきます。
C:\Users>aws s3 ls s3://cold-airflow-backup-s3-bucket 2022-03-09 16:00:13 373 index.html 2022-03-09 16:00:13 367 test.html
AWS Backup 設定
まずは、保護するリソースタイプ S3 の有効化を行います。
AWS Backup > 設定 > リソースを設定
今回は、バックアッププランを作成してバックアップを取得します。
検証のため即時にバックアップ開始されるようにカスタム cron 式で10分後に設定しています。
他の設定についてはデフォルトです。
なお、バックアップボールトは「Default」 を使用します。
次にバックアップを取得したいS3バケットを指定します。
ここでは、デフォルトロールではなく新規作成したロールを使用します。
後ほど説明を行います。
これで、cron 式で設定した時間が来るのを待ちます。
AWS Backup デフォルトロールについて
先程、新規作成したロールを使用した理由としては、現在(22年3月10日)のバックアップ・デフォルトロールでは、S3 の操作ポリシーが追加されていません。
arn:aws:iam::[AWSアカウントID]:role/service-role/AWSBackupDefaultServiceRole
ですが、S3 用の IAM ポリシーは用意されています。
arn:aws:iam::aws:policy/AWSBackupServiceRolePolicyForS3Backup
arn:aws:iam::aws:policy/AWSBackupServiceRolePolicyForS3Restore
そのため、ロールを新規作成して上記ポリシーをアタッチして検証を行います。
C:\Users>aws iam list-attached-role-policies --role-name cold-airflow-backup-s3-example { "AttachedPolicies": [ { "PolicyName": "AWSBackupServiceRolePolicyForS3Backup", "PolicyArn": "arn:aws:iam::aws:policy/AWSBackupServiceRolePolicyForS3Backup" }, { "PolicyName": "AWSBackupServiceRolePolicyForS3Restore", "PolicyArn": "arn:aws:iam::aws:policy/AWSBackupServiceRolePolicyForS3Restore" } ] }
バックアップ取得
cron 式で設定した時刻になるとバックアップジョブが実行されます。
C:\Users>aws backup list-backup-jobs { "BackupJobs": [ { "AccountId": "[AWSアカウントID]", "BackupJobId": "4055526C-C8E2-9195-E67E-4AB92D343EB5", "BackupVaultName": "Default", "BackupVaultArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:backup-vault:Default", "RecoveryPointArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:recovery-point:cold-airflow-backup-s3-bucket-20220309074958-01318629", "ResourceArn": "arn:aws:s3:::cold-airflow-backup-s3-bucket", "CreationDate": "2022-03-09T16:35:00+09:00", "CompletionDate": "2022-03-09T16:58:59.241000+09:00", "State": "COMPLETED", "PercentDone": "100.0", "IamRoleArn": "arn:aws:iam::[AWSアカウントID]:role/cold-airflow-backup-s3-example", "CreatedBy": { "BackupPlanId": "34900518-c541-4929-b18b-953c96019b59", "BackupPlanArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:backup-plan:34900518-c541-4929-b18b-953c96019b59", "BackupPlanVersion": "MWM2NmZlMDQtZjFjNiZDQ0LWFkNjktNjY1NGU4ZTIwMWE4", "BackupRuleId": "3377ef57-6dea-4c0e-822c-9afe53f740" }, "StartBy": "2022-03-09T17:35:00+09:00", "ResourceType": "S3" } ] }
"State": "COMPLETED"
バックアップが作成されたことを確認できました。
また、Default バックアップボールトに復旧ポイントが作成されています。
C:\Users>aws backup list-recovery-points-by-backup-vault --backup-vault-name Default { "RecoveryPoints": [ { "RecoveryPointArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:recovery-point:cold-airflow-backup-s3-bucket-20220309074958-01318629", "BackupVaultName": "Default", "BackupVaultArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:backup-vault:Default", "ResourceArn": "arn:aws:s3:::cold-airflow-backup-s3-bucket", "ResourceType": "S3", "CreatedBy": { "BackupPlanId": "34900518-c541-4929-b18b-953c96019b59", "BackupPlanArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:backup-plan:34900518-c541-4929-b18b-953c96019b59", "BackupPlanVersion": "MWM2NmZlMDQtZjFjNi00ZDQ0LWFkNjktNjY1NGU4ZTIwMWE4", "BackupRuleId": "3377ef57-6dea-4c0e-822c-9a3bfe53f740" }, "IamRoleArn": "arn:aws:iam::[AWSアカウントID]:role/cold-airflow-backup-s3-example", "Status": "COMPLETED", "CreationDate": "2022-03-09T16:35:00+09:00", "CompletionDate": "2022-03-09T16:58:59.241000+09:00", "EncryptionKeyArn": "arn:aws:kms:us-east-1:[AWSアカウントID]:key/bfe50f2c-c94b-4ebb-8d1a-4c93050c5b14", "IsEncrypted": true } ] }
バックアップ復元
バックアップが取得できたので、バックアップの復元も検証を行います。
まずは、保護対象の S3 バケットを空にします。
C:\Users>aws s3 rm s3://cold-airflow-backup-s3-bucket --recursive delete: s3://cold-airflow-backup-s3-bucket/index.html delete: s3://cold-airflow-backup-s3-bucket/test.html
では、復元します。
復元するにはメタデータが必要なので、先に取得しておきます。
C:\Users>aws backup get-recovery-point-restore-metadata --backup-vault-name Default --recovery-point-arn arn:aws:backup:us-east-1:[AWSアカウントID]:recovery-point:cold-airflow-backup-s3-bucket-20220309074958-01318629 { "BackupVaultArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:backup-vault:Default", "RecoveryPointArn": "arn:aws:backup:us-east-1:[AWSアカウントID]:recovery-point:cold-airflow-backup-s3-bucket-20220309074958-01318629", "RestoreMetadata": { "InitialRestoreTime": "2022-03-09T07:50:03Z", "LatestRestoreTime": "2022-03-09T07:50:03Z", "aws:backup:request-id": "5e89def9-74fb-4b78-9ef0-1f97cd82a175" } }
保護対象リソースによって必要なメタデータは変わるのですが、S3
ではaws:backup:request-id
を使用するのでメモっておいてください。
プレビュー版ですが、サンプルのメタデータがあるのでそれを参考にして復元します。
S3 データの復元 (プレビュー) – AWS Backup
aws backup start-restore-job --recovery-point-arn arn:aws:backup:us-east-1:[AWSアカウントID]:recovery-point:cold-airflow-backup-s3-bucket-20220309074958-01318629 ^ --metadata Encrypted=\"true\",newbucket=\"false\",destinationbucketname=\"cold-airflow-backup-s3-bucket\",creationtoken=\"5e89def9-74fb-4b78-9ef0-1f97cd82a175\" ^ --iam-role-arn arn:aws:iam::[AWSアカウントID]:role/cold-airflow-backup-s3-example --resource-type S3
- destinationbucketname:復元対象のリソースバケット名
- newbucket:true の場合は新規 S3 バケットを指定する
- Encrypted: true の場合はファイルシステムの暗号化を指定する
- creationtoken:
get-recovery-point-restore-metadata
で取得したaws:backup:request-id
の値
少しわかりづらいためコンソール画面の画像も載せておきます。
コンソール画面で選択している項目をstart-restore-job
の--metadata
オプションでは指定しています。
復元ジョブを実行します。
C:\Users>aws backup start-restore-job --recovery-point-arn arn:aws:backup:us-east-1:[AWSアカウントID]:recovery-point:cold-airflow-backup-s3-bucket-20220309074958-01318629 ^ More? --metadata Encrypted=\"true\",newbucket=\"false\",destinationbucketname=\"cold-airflow-backup-s3-bucket\",creationtoken=\"5e89def9-74fb-4b78-9ef0-1f97cd82a175\" ^ More? --iam-role-arn arn:aws:iam::[AWSアカウントID]:role/cold-airflow-backup-s3-example --resource-type S3 { "RestoreJobId": "71B75683-00F0-F548-4BD7-9D688335B965" }
コンソール画面で復元ジョブが完了していることを確認します。
復元ジョブが完了したので、再度 S3 バケットのオブジェクトを確認します。
C:\Users>aws s3 ls s3://cold-airflow-backup-s3-bucket 2022-03-09 19:18:34 373 index.html 2022-03-09 19:18:34 367 test.html
まとめ
新しく AWS Backup の保護対象に追加された S3 のバックアップと復元の検証を行いました。
AWS Backup で管理することによってバックアップの手間などが簡略化されます。
さらに、他のバックアップと同様に管理を行うことで一元管理が実現できます。
参考記事
AWS Backup for AmazonS3 の一般提供を発表
AWS Backup の開始方法 – AWS Backup
S3 バックアップの作成 (プレビュー) – AWS Backup
AWS Backup のドキュメント履歴 – AWS Backup
サポート対象の AWS サービスで、AWS Backup を動作させる方法について – AWS Backup
AWS CLI での高レベル (S3) コマンドの使用 – AWS Command Line Interface
AWS CLI を使用して AWS Backup プランを作成、またはオンデマンドジョブを実行する
S3 データの復元 (プレビュー) – AWS Backup
Amazon EFS ファイルシステムの作成 – Amazon Elastic File System
プレビュー – AWS Backup に Amazon S3 のサポートを追加 | Amazon Web Services ブログ
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter2021年新卒入社。インフラエンジニアです。RDBが三度の飯より好きです。 主にデータベースやAWSのサーバレスについて書く予定です。あと寒いのは苦手です。
Recommends
こちらもおすすめ
-
無料で使えるAWSの初期トレーニングまとめ
2015.12.15
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16