CloudFormationでDLMを使ったEBSを自動バックアップするEC2を起動させてみた
はじめに
AWSチームのすずきです。
Amazon Data Lifecycle Manager(Amazon DLM)は、EC2がブロックストレージとして利用するEBSのスナップショットの作成、削除(世代管理)を自動化できる、AWSのマネージドサービスです。
2018年11月12日、AWS CloudFormation による DLMの設定が可能となるアップデートがありました。
AWS CloudFormation による Amazon Data Lifecycle Manager ポリシーのサポートを導入
今回、このアップデートを利用して、EBSの自動バックアップ設定を有効化したEC2インスタンスの起動を CloudFomationで実現する機会がありましたので、紹介させて頂きます。
構成
- Amazon DLMライフサイクルポリシー設定と、DLMの処理対象となるEBSボリュームへのタグ付与をCloudFormationで実施しました
テンプレート
DlmServiceRole
- Amazon DLM動作用のIAMロールを、AWSで用意した管理ポリシー「AWSDataLifecycleManagerServiceRole」を利用して作成しました。
- 既にAmazon DLMをデフォルトのIAMロールで利用中の環境であれば「arn:aws:iam::xxxxxxxxxxxx:role/service-role/AWSDataLifecycleManagerDefaultRole」の利用が可能です。
- 遠くない将来、「AWS::IAM::ServiceLinkedRole」による設定が可能になると思われます。
DlmServiceRole: Type: "AWS::IAM::ServiceLinkedRole" Properties: AWSServiceName: "dlm.amazonaws.com"
DlmLifecyclePolicy
- Amazon DLM のライフサイクルポリシーとして、スナップショットの作成間隔は24時間毎(1日1回)、7日間保持する設定を行いました。
- EC2ダッシュボードでは以下に相当する内容を設定しました。
Ec2LaunchTemplate
- LaunchTemplateを利用する事で、EC2起動時に作成されるEBSへのタグ付けを実施しています。
- Amazon DLM の処理対象となるタグを、以下の指定でEBSボリュームに付与しています。
TagSpecifications: - ResourceType: volume Tags: - Key: !Ref 'DlmTargetTag' Value: 'true'
Ec2Instance
- 最新バージョン(LatestVersionNumber)の起動テンプレートを利用してEC2を起動させています。
- 起動テンプレートの更新をCloudFormationのUpdateStackで実施した場合、新しい起動テンプレートの設定内容が反映されたEC2インスタンスが起動、古いEC2インスタンスは削除されます。
- EC2インスタンスの交換が望ましくない場合、起動テンプレートのバージョンを固定して利用してください。
Type: AWS::EC2::Instance Properties: LaunchTemplate: LaunchTemplateId: !Ref 'Ec2LaunchTemplate' Version: !GetAtt 'Ec2LaunchTemplate.LatestVersionNumber'
動作確認
EBS
- LaunchTemplateで指定したDLM処理対象のタグが、EBSボリュームに付与されています。
スナップショット
- DLMにより指定された時間帯に、EBSスナップショットが作成された事を確認できました。
- CopyTags オプションを有効とした事で、EBSボリュームに付与したNameタグもスナップショットに反映されています。
CopyTags: true
まとめ
今回のアップデートにより、EC2インスタンスが利用するEBSボリュームの自動バックアップ設定をCloudFomationで完結させる事ができました。
スナップショットの保持期間や作成頻度など、システム毎にDLMのライフサイクルポリシーを管理する必要が有る場合、有効性が高いと思われますのでぜひご活用ください。