Open3

AWS Backupについてメモ

がくがく

AWS BackupはAWSの(EC2、RDS、S3)といったリソースのバックアップを一元管理することができる。

AWS Backupでは、バックアップボールト(バックアップの保存先コンテナ)に対して、バックアッププランで定めたルールに基づいたジョブを実行することでバックアップを取得している。


引用元: https://dev.classmethod.jp/articles/aws-backup-perfect-understand/

参考

https://dev.classmethod.jp/articles/aws-backup-perfect-understand/

https://blog.serverworks.co.jp/awsbackup/introduction

https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/whatisbackup.html

がくがく

バックアップボールト

バックアップを保存及び整理するためのコンテナ。
バックアッププランの作成・バックアップジョブを開始する前に、少なくとも1つのボールトを作成する必要がある。

また、バックアップボールトとそれに含まれるリソースにポリシーを割り当てることができる。
ポリシーを割り当てると、バックアップを作成するアクセス権をユーザーに付与するなどの操作が可能になる。

Terraformでの記述例

  • aws_backup_vault
resource "aws_backup_vault" "example" {
  name        = "example_backup_vault" // バックアップボールト名(必須)
  kms_key_arn = aws_kms_key.example.arn // KMSの暗号化キー(使用されるのはEFSのファイルシステムのバックアップのみ)
}
  • aws_backup_vault_policy
resource "aws_backup_vault" "example" {
  name = "example"
}

resource "aws_backup_vault_policy" "example" {
  backup_vault_name = aws_backup_vault.example.name

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "default",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "backup:DescribeBackupVault", // バックアップボルトを作成
        "backup:DeleteBackupVault", // バックアップボルトの削除
        "backup:PutBackupVaultAccessPolicy",  // バックアップボルトのアクセス許可を管理するためのポリシーを設定
        "backup:DeleteBackupVaultAccessPolicy", // バックアップボルトのアクセス許可を管理するためのポリシーを削除
        "backup:GetBackupVaultAccessPolicy", バックアップボルトのアクセス許可を管理するためのポリシーを取得
        "backup:StartBackupJob", // バックアップジョブの開始
        "backup:GetBackupVaultNotifications", // 指定されたバックアップボルトのイベント通知を取得
        "backup:PutBackupVaultNotifications" // 指定されたバックアップボルトのイベント通知を設定
      ],
      "Resource": "${aws_backup_vault.example.arn}"
    }
  ]
}
POLICY
}

参考

https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/vaults.html

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/backup_vault

がくがく

バックアッププラン

どのリソースをいつどのようにバックアップするかを定義したもの。
以下の例のように、JSON(もしくはAWS BackupコンソールまたはAWS CLI)を使用してバックアッププランを作成できる。

{
  "BackupPlan":{
    "BackupPlanName":"test-plan", // バックアッププラン名
    "Rules":[
      {
        "RuleName":"test-rule", // ルール名
        "TargetBackupVaultName":"test-vault", // 対象とするバックアップボルト(保存先)名
        "schedule":"cron(15 * ? * * *)", // AWS Backupがバックアップ頻度をcronで指定
        "start_window":480, // バックアップ開始までの時間(分)
        "completion_window":600, //  バックアップジョブがキャンセルしてエラーを返す前にバックアップを試行する時間(分)
        "lifecycle" {
          delete_after = 7 // バックアップ作成後の有効期限、7日後に削除
        }
      }
    ]
  }
}

Terraformでの記述例

resource "aws_backup_plan" "example" {
  name = "tf_example_backup_plan"

  rule {
    rule_name         = "tf_example_backup_rule"
    target_vault_name = aws_backup_vault.test.name
    schedule          = "cron(0 12 * * ? *)"

    lifecycle {
      delete_after = 14
    }
  }
}

参考

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/backup_plan

https://dev.classmethod.jp/articles/aws-backup-perfect-understand/#toc-5