この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは。大阪オフィスの林です。
AWS Bakcupを使っていたのですが、作成に際してGUIからの操作だと少々手間だったのでCloudFormationを作りました。そんな内容を今日はまとめておきたいと思います。
今回やること
まずCFnのコードです
AWSTemplateFormatVersion: "2010-09-09"
Description: "Backup Plan template"
# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------#
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
-
Parameters:
- BackupPlanName
- BackupVaultName
- cron
- SelectionName
- Lifecycle
- TagKey
- TagValue
Parameters:
BackupPlanName:
Description: Please type the BackupPlanName.
Type: String
Default: BackupPlanName
BackupVaultName:
Description: Please type the BackupVaultName.
Type: String
Default: BackupVaultName
#バックアップスケジュールをスタック作成時のパラメータとして入力できるようにします。
cron:
Description: Please type the cron.
Type: String
Default: cron(00 14 * * ? *)
SelectionName:
Description: Please type the SelectionName.
Type: String
Default: TagBasedBackup
#バックアップデータの有効期限をスタック作成時のパラメータとして入力できるようにします。
Lifecycle:
Description: Please type the Lifecycle.
Type: String
Default: 7
#タグのキー名をスタック作成時のパラメータとして入力できるようにします。
TagKey:
Description: Please type the TagKey.
Type: String
Default: TagKey
#タグの値をスタック作成時のパラメータとして入力できるようにします。
TagValue:
Description: Please type the TagValue.
Type: String
Default: TagValue
Resources:
BackupVaultWithThinBackups:
Type: "AWS::Backup::BackupVault"
Properties:
BackupVaultName: !Ref BackupVaultName
BackupPlanWithThinBackups:
Type: "AWS::Backup::BackupPlan"
Properties:
BackupPlan:
BackupPlanName: !Ref BackupPlanName
BackupPlanRule:
-
RuleName: "RuleForDailyBackups"
TargetBackupVault: !Ref BackupVaultWithThinBackups
#今回はCronでスケジュールを指定しています。時間はUTCで指定します。上記パラメータで指定された値を挿入します。
ScheduleExpression: !Ref cron
Lifecycle:
DeleteAfterDays: 7
CompletionWindowMinutes: 120
StartWindowMinutes: 60
DependsOn: BackupVaultWithThinBackups
TagBasedBackupSelection:
Type: "AWS::Backup::BackupSelection"
Properties:
BackupSelection:
SelectionName: !Ref SelectionName
IamRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSBackupDefaultServiceRole"
ListOfTags:
-
ConditionType: "STRINGEQUALS"
#上記パラメータで指定されたタグキーを挿入します。
ConditionKey: !Ref TagKey
#上記パラメータで指定されたタグの値を挿入します。
ConditionValue: !Ref TagValue
BackupPlanId: !Ref BackupPlanWithThinBackups
DependsOn: BackupPlanWithThinBackups
やってみた
Name
と付く部分は任意の名前を付けて頂ければいいのですが、下記は環境に応じた値を指定してください。
UTC時間でスケジュールを設定します。例えば日本時間(JST)で0時にバックアップを実行したければ
cron(00 15 * * ? *)
とします。23時にバックアップ実行したければcron(00 14 * * ? *)
とします。
バックアップデータの有効期限(保持期間)を指定します。
バックアップ対象とするリソースに付けるタグのキー名を入力します。
バックアップ対象とするリソースに付けたタグの値を入力します。
今回設定した内容だと、毎日23時
にBackup
というタグでOn
という値を持つリソースをバックアップするというプランが作成されます。また取得したバックアップデータの有効期限は7日
に設定されます。
まとめ
手動でポチポチと設定していくとどんな設定があるのか視覚的に全体的にわかるのがメリットと思ってるのですが慣れてこれば手作業は手間ですよね。これに限らず様々な作業をどんどん効率的にしていきましょう!
以上、大阪オフィスの林がお送りしました!