Systems Managerから簡単にEC2を定期バックアップ
おはようございます、加藤です。
Systems Manager(以降、SSM)とLambdaを使って汎用的にEC2をバックアップする仕組みを作成したので公開してみます。
ポイント
Lambdaを使ってEC2をバックアップするというのは一般的ですね。なので、最初の今回作った仕組みのポイントを紹介します。
- Lambdaのコードを操作せずに設定を変更できる
- インスタンスごとに個別で各設定ができる
- まとめることもできる
- インスタンスの指定をタグ、任意指定で行える
- タグは自由に指定できる(Key,Valu共に)
- 任意の時間・間隔で実行できる(Cron式、Rate式)
- バックアップ時の再起動の有無を指定できる
- 世代管理ができる
- Snapshotも削除する
概要図
使い方
インスタンスの選択
インスタンスの選択はSSMのMaintenance Window(ターゲット)で行います。
任意のタグ(Key,Value共に)または個別に指定することができます。
バックアップ方法の指定
- バックアップ時再起動の有無
- 何世代保持するか
これらのバックアップの方法の指定はSSMのMaintenance Window(タスク)で行います。
環境の作り方
コードはすべて後述のGistにまとめています。
IAMロール
- SSM Automation用
- SSM Maintenance Windows用
- Lambda用
上記の3つのロールが必要になります。
Automation、Maintenance Window用のロールは下記のブログを参考に作成してください。
上記ブログの手順を参考に、Lambda用のロールを作成します。パラメータは以下の通りです。
項目 | 値 |
ロール名 | AWSLambdaAutomationEC2CreateImage |
ポリシー | AWSLambdaExecute(AWS管理ポリシー)
AutomationEC2CreateImage(管理ポリシー) |
信頼元 | lambda.amazonaws.com |
Lambda Function
Lambda Functionを作成します。
Automation用ロールの与えられている権限の都合で、関数名はAutomationで始まるのが必須です。
項目 | 値 |
関数名 | Automation-EC2CreateImage |
言語 | Python 3.6 |
タイムアウト | 5分 |
Automation ドキュメント
ドキュメントの作成をクリックする
ドキュメントを作成する
Maintenance Windows
上記で作成したAutomationをMaintenance Windowから実行します。
こちらのブログを参考にしてください。
あとがき
SSMのMaintenance WindowからAutomationを実行して、実態としてLambdaが動くという形です。
なので、本文中で引用しているブログとやることはあまり変わりません。そのうち、簡単にセットアップできるようにCloudFormation化したいなと考え中です。
以上です、お読み頂きありがとうございました。