この記事は公開されてから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 :