Systems Managerから簡単にEC2を定期バックアップ

Systems Managerを使って定期的にAMIを作成する。
2018.07.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おはようございます、加藤です。

Systems Manager(以降、SSM)とLambdaを使って汎用的にEC2をバックアップする仕組みを作成したので公開してみます。

ポイント

Lambdaを使ってEC2をバックアップするというのは一般的ですね。なので、最初の今回作った仕組みのポイントを紹介します。

  • Lambdaのコードを操作せずに設定を変更できる
  • インスタンスごとに個別で各設定ができる
    • まとめることもできる
  •  インスタンスの指定をタグ、任意指定で行える
    • タグは自由に指定できる(Key,Valu共に)
  • 任意の時間・間隔で実行できる(Cron式、Rate式)
  • バックアップ時の再起動の有無を指定できる
  • 世代管理ができる
    • Snapshotも削除する

概要図

使い方

インスタンスの選択

インスタンスの選択はSSMのMaintenance Window(ターゲット)で行います。

任意のタグ(Key,Value共に)または個別に指定することができます。

バックアップ方法の指定

  • バックアップ時再起動の有無
  • 何世代保持するか

これらのバックアップの方法の指定はSSMのMaintenance Window(タスク)で行います。

環境の作り方

コードはすべて後述のGistにまとめています。

IAMロール

  1. SSM Automation用
  2. SSM Maintenance Windows用
  3. Lambda用

上記の3つのロールが必要になります。

Automation、Maintenance Window用のロールは下記のブログを参考に作成してください。

Systems Manager Maintenance Window で 任意のEC2インスタンスを定期再起動する

上記ブログの手順を参考に、Lambda用のロールを作成します。パラメータは以下の通りです。

項目
ロール名 AWSLambdaAutomationEC2CreateImage
ポリシー AWSLambdaExecute(AWS管理ポリシー)

AutomationEC2CreateImage(管理ポリシー)

信頼元 lambda.amazonaws.com

Lambda Function

Lambda Functionを作成します。

Automation用ロールの与えられている権限の都合で、関数名はAutomationで始まるのが必須です。

項目
関数名 Automation-EC2CreateImage
言語 Python 3.6
タイムアウト 5分

Automation ドキュメント

SSMのドキュメントページを開く

ドキュメントの作成をクリックする

ドキュメントを作成する

Maintenance Windows

上記で作成したAutomationをMaintenance Windowから実行します。

こちらのブログを参考にしてください。

Systems Manager Maintenance Window で 任意のEC2インスタンスを定期再起動する

あとがき

SSMのMaintenance WindowからAutomationを実行して、実態としてLambdaが動くという形です。

なので、本文中で引用しているブログとやることはあまり変わりません。そのうち、簡単にセットアップできるようにCloudFormation化したいなと考え中です。

以上です、お読み頂きありがとうございました。