AWS CLIを使用してAWS Backupを作成してみた。

2022.05.17

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

概要

この記事では、AWS CLIを使用してAWS Backupを作成してみました。ここでは、AWSバックアップを使用してEC2インスタンスのバックアップを作成してみました。Cronジョブでバックアッププランを作成し、EC2タグを含むBackup Selectionを作成しました。AWS Backupはタグに基づいてインスタンスを識別し、毎日午後5時にバックアップを実行します。

 

やってみた

EC2の作成

  • この設定で EC2インスタンスを作成しておきます。
    • AMI : Amazon Linux 2 AMI
    • インスタンスタイプ : t2.micro
    • サブネット:パブリックサブネット
    • タグ :
      • Key : ec2-backup
      • Value : true
    • Security Group :
      •  Inbound :SSH

 

IAMロールの作成

  • AWSBackupにすべてのAWSサービスのバックアップ操作を実行することを許可するIAMロールを作成しておきます。
  • 以下のポリシーを含むjsonファイルを作成しておきます。

 

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "backup.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
}

 

  • 次のコマンドを使用して、上記のポリシーでIAMロールを作成しておきます。
//create an IAM role
aws iam create-role --role-name "backup-role" --assume-role-policy-document file://assumeRole.json


//Output
{
    "Role": {
        "Path": "/",
        "RoleName": "backup-role",
        "RoleId": "...........",
        "Arn": "arn:aws:iam::xxxxxxxxxxxx:role/backup-role",
        "CreateDate": "2022-05-16T03:43:29+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "backup.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        }
    }
}

 

  • [AWSBackupServiceRolePolicyForBackup と AWSBackupServiceRolePolicyForRestores]ポリシーをIAMロールにアタッチしておきます。
aws iam attach-role-policy --role-name backup-role  --policy-arn 'arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup'
aws iam attach-role-policy --role-name backup-role  --policy-arn 'arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores'

 

Backup vaultの作成

  • 次のコマンドを使用してバックアップボールトを作成しておきます。コマンドでバックアップボールト名を指定しておきます。

 

//Create Backup Vault
aws backup create-backup-vault --backup-vault-name backup-vault --region us-east-1

//Output
{
    "BackupVaultName": "backup-vault",
    "BackupVaultArn": "arn:aws:backup:us-east-1:xxxxxxxxxxxx:backup-vault:backup-vault",
    "CreationDate": "2022-05-16T09:02:31.297000+05:30"
}

 

Backup Planの作成

  • 次のコードでJSONファイル[backup-plan.json]を作成しておきます。
  • ファイルには、バックアッププランのパラメータを含むバックアップルールが含まれています。
  • バックアップは毎日午後5時に実行されます。

 

{
    "BackupPlanName": "backup-plan",
    "Rules": [{
        "RuleName": "backup-rule",
        "TargetBackupVaultName": "backup-vault",
        "ScheduleExpression": "cron(0 5 ? * * *)",
        "Lifecycle": {
            "DeleteAfterDays": 7
        }
    }]
}

 

  • 次のコマンドを使用してバックアッププランを作成しておきます。
//Create Backup Plan
aws backup create-backup-plan --backup-plan file://backup-plan.json --region us-east-1

//Output
{
    "BackupPlanId": "abdc12-ef34-ghi5-abc4-abc45",
    "BackupPlanArn": "arn:aws:backup:us-east-1:xxxxxxxxxxxx:backup-plan:abdc12-ef34-ghi5-abc4-abc45",
    "CreationDate": "2022-05-16T09:30:46.491000+05:30",
    "VersionId": "...................."
}

 

Backup Selectionの作成

  • バックアップするリソースのパラメーターを含むJSONファイルを作成しておきます。
  • EC2インスタンスのタグを含む[backup-selection.json]ファイルを作成しておきます。
  • ファイルで、前の手順で作成したIAMロールのArnを指定しておきます。

 

{
    "SelectionName": "backup-selection",
    "IamRoleArn": "arn:aws:iam::xxxxxxxxxxx:role/backup-role",
    "ListOfTags": [{
        "ConditionType": "STRINGEQUALS",
        "ConditionKey": "ec2-backup",
        "ConditionValue": "true"
    }]
}

 

  • 次のコマンドを使用してBackup Selectionを作成しておきます。
//Create Backup Selection
aws backup create-backup-selection --backup-plan-id abdc12-ef34-ghi5-abc4-abc45 --backup-selection file://backup-selection --region us-east-1

//Output
{
    "SelectionId": "abc00-de00-ab00-dc00-abcdef123",
    "BackupPlanId": "abdc12-ef34-ghi5-abc4-abc45",
    "CreationDate": "2022-05-16T09:38:58.826000+05:30"
}

 

リソースの確認

コンソールでは、リソースが作成されていることを確認できます。

Backup Vault

 

Backup Plan

 

Backup Rule

 

Backup Selection

 

  • コンソールでは、バックアップの最後の実行時間を確認できます。

 

まとめ

AWS CLIを使用してAWS Backupを作成してみました。ここでは、タグに基づいてEC2バックアップを試しました。他のストレージリソースのバックアップを試すことができます。

Reference : 

About Backup

AWS Backup using AWS CLI