この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
DA事業本部のsutoです。
特定のタグがついたリソースに対して定期バックアップの設定がしたかったので、Cloudformationテンプレートをささっと作ってみました。
要件
- AWS Backupのボールト、プラン、ルール、リソース割り当てを新規作成
- 日本時間のAM4時に日次バックアップを取得
- 復旧ポイントが作成されてから削除されるまでの日数は14日とする
テンプレート
要件を踏まえたCloudformationテンプレートは以下となります。
AWSTemplateFormatVersion: '2010-09-09'
Description: AWS Backup Setting
Parameters:
MyBackupName:
Description: Backup plan name
Type: String
Default: ''
Cron:
Description: Time to do backup(cron)
Type: String
Default: cron(0 18 * * ? *)
TagKey:
Description: TagKey for backup
Type: String
Default: ''
TagValue:
Description: TagValue for backup
Type: String
Default: ''
Resources:
BackupVault:
Type: "AWS::Backup::BackupVault"
Properties:
BackupVaultName: !Sub ${MyBackupName}-vault
BackupPlan:
Type: AWS::Backup::BackupPlan
Properties:
BackupPlan:
BackupPlanName: !Ref MyBackupName
BackupPlanRule:
- RuleName: !Sub ${MyBackupName}-rule
TargetBackupVault: !Ref BackupVault
ScheduleExpression: !Ref Cron
CompletionWindowMinutes: 300
StartWindowMinutes: 60
Lifecycle:
DeleteAfterDays: 14
BackupSelection:
Type: AWS::Backup::BackupSelection
Properties:
BackupPlanId: !Ref BackupPlan
BackupSelection:
SelectionName: !Ref MyBackupName
IamRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSBackupDefaultServiceRole"
ListOfTags:
-
ConditionType: "STRINGEQUALS"
ConditionKey: !Ref TagKey
ConditionValue: !Ref TagValue
(参考)cron式の書き方はこちら
※2020/7/7 追記:上記テンプレートはIAMロール「AWSBackupDefaultServiceRole」を既に作成されていなければバックアップが作動しないので、バージョンアップ版としてIAMロールもまとめて作成するテンプレートを別の記事で掲載しました。
実際にやってみた
以下画面のようにパラメータを入力して実行しました。
結果、しっかりとバックアップ設定ができていました。
あとは入力したタグをバックアップしたいリソースに付与すればOKですね。
まとめ
なるべくテンプレート実行時の入力パラメータが少なくなるように意識して作成しました(面倒くさがり)。手動だといろいろ設定の手間が多いAWS Backupだからこそテンプレート化のメリットは大きいと思います。
タイトルの「汎用的な」と言うことで、よくある定期バックアップ設定のためのテンプレート作りを目指しましたので少しでもお役に立てばと思います。