AWS CloudFormation テンプレートを使用して AWS Backup の設定を管理する方法を教えてください。
最終更新日: 2021 年 3 月 1 日
AWS Backup を使用して、他の AWS リソースからデータをバックアップしたいと思います。さらに、AWS CloudFormation テンプレートを使用して AWS Backup の設定を管理したいです。どうすればいいですか?
簡単な説明
サポートされている AWS Backup リソースタイプを使用して、CloudFormation テンプレートを作成できます。AWS Backup 用に作成できる CloudFormation テンプレートの例には、以下があります。
- バックアッププランを作成し、バックアッププランにリソースを割り当てるテンプレート。
- バックアッププランを作成し、バックアップボルートを作成し、バックアッププランにリソースを割り当てるためのテンプレート。
解決方法
重要: バックアッププランでは、バックアッププランにリソースを割り当てるタグを指定する必要があります。バックアッププランを設定する前に、タグを決定します。次に、タグが正しいリソースに割り当てられ、バックアッププランに正しく書き込まれていることを確認します。
バックアッププランを作成し、バックアッププランにリソースを割り当てるテンプレート
次の YAML の CloudFormation テンプレートの例は、次のことを行います。
- BackupPlanWithThinBackups という名前のバックアッププランを作成します。
- Default という名前のボールトに保存するバックアップを設定します。
- RuleForDailyBackups という名前のバックアップルールを作成し、毎日午前 11 時 25 分にバックアップを実行するようにスケジュールします。
- Windows VSS を有効にします。
- 作成後 7 日で削除されるようにバックアップのライフサイクルを設定します。
- 災害復旧の目的でバックアップを us-west-2 AWS リージョンにコピーするように CopyAction を設定します。
- AWSBackupDefaultServiceRole という名前の AWS Identity and Access Management (IAM) ロールを使用して、バックアップジョブを実行します。
- キー backupplan と値 dsi-sandbox-daily でタグ付けされたすべてのリソースにバックアッププランを割り当てます。
AWSTemplateFormatVersion: 2010-09-09
Description: >-
Backup Plan template to back up all resources tagged with backupplan=dsi-sandbox-daily at 11:25am
UTC.
Resources:
BackupPlanWithThinBackups:
Type: "AWS::Backup::BackupPlan"
Properties:
BackupPlan:
BackupPlanName: "BackupPlanWithThinBackups"
AdvancedBackupSettings:
-
ResourceType: EC2
BackupOptions:
WindowsVSS: enabled
BackupPlanRule:
-
RuleName: "RuleForDailyBackups"
TargetBackupVault: Default
ScheduleExpression: "cron(25 11 ? * * *)"
Lifecycle:
DeleteAfterDays: 7
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
TagBasedBackupSelection:
Type: "AWS::Backup::BackupSelection"
Properties:
BackupSelection:
SelectionName: "TagBasedBackupSelection"
IamRoleArn: !Sub "arn:aws:iam::111222333444:role/service-role/AWSBackupDefaultServiceRole"
ListOfTags:
-
ConditionType: "STRINGEQUALS"
ConditionKey: "backupplan"
ConditionValue: "dsi-sandbox-daily"
BackupPlanId: !Ref BackupPlanWithThinBackups
DependsOn: BackupPlanWithThinBackups
バックアッププランを作成し、バックアップボールトを作成し、バックアッププランにリソースを割り当てるテンプレート
次の YAML の CloudFormation テンプレートの例は、次のことを行います。
- Default という名前のバックアップボールトを作成します。
- BackupPlanWithThinBackups という名前のバックアッププランを作成します。
- ボールト BackupVaultWithThinBackups に保存するバックアップを設定します。
- RuleForDailyBackups という名前のバックアップルールを作成し、毎日 1 回のバックアップを実行するようスケジュールします。これらのバックアップは、作成後 7 日で削除されるように設定します。
- Windows VSS を有効にします。
- 災害復旧の目的でバックアップを us-west-2 AWS リージョンにコピーするように CopyAction を設定します。これらのバックアップは、作成後 14 日で削除されるように設定します。
- RuleForWeeklyBackups という名前のバックアップルールを作成し、毎週月曜日の午前 11 時にバックアップを実行するようスケジュールします。これらのバックアップは、作成後 28 日で削除されるように設定します。
- RuleForMonthlyBackups という名前のバックアップルールを作成し、毎月 1 日の午前 11 時にバックアップを実行するようスケジュールします。これらのバックアップは、作成後 90 日で削除されるように設定します。
- AWSBackupDefaultServiceRole という名前の IAM ロールを使用して、バックアップジョブを実行します。
- キー backup と値 thinbackup でタグ付けされたすべてのリソースにバックアッププランを割り当てます。
AWSTemplateFormatVersion: "2010-09-09"
Description: "Backup Plan template for thin backups"
Resources:
BackupVaultWithThinBackups:
Type: "AWS::Backup::BackupVault"
Properties:
BackupVaultName: "BackupVaultWithThinBackups"
BackupPlanWithThinBackups:
Type: "AWS::Backup::BackupPlan"
Properties:
BackupPlan:
BackupPlanName: "BackupPlanWithThinBackups"
AdvancedBackupSettings:
-
ResourceType: EC2
BackupOptions:
WindowsVSS: enabled
BackupPlanRule:
-
RuleName: "RuleForDailyBackups"
TargetBackupVault: !Ref BackupVaultWithThinBackups
ScheduleExpression: "cron(25 11 ? * * *)"
Lifecycle:
DeleteAfterDays: 7
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
-
RuleName: "RuleForWeeklyBackups"
TargetBackupVault: !Ref BackupVaultWithThinBackups
ScheduleExpression: "cron(0 11 ? * 2 *)"
Lifecycle:
DeleteAfterDays: 28
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
-
RuleName: "RuleForMonthlyBackups"
TargetBackupVault: !Ref BackupVaultWithThinBackups
ScheduleExpression: "cron(0 11 1 * ? *)"
Lifecycle:
DeleteAfterDays: 90
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
DependsOn: BackupVaultWithThinBackups
TagBasedBackupSelection:
Type: "AWS::Backup::BackupSelection"
Properties:
BackupSelection:
SelectionName: "TagBasedBackupSelection"
IamRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSBackupDefaultServiceRole"
ListOfTags:
-
ConditionType: "STRINGEQUALS"
ConditionKey: "backup"
ConditionValue: "thinbackup"
BackupPlanId: !Ref BackupPlanWithThinBackups
DependsOn: BackupPlanWithThinBackups