AWS Answersで公開されているAWS Ops Automatorを試してみた #reinvent

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

こんにちは、城内です。

早いもので2017年ももうすぐ終わりですね。
弊社は今日会社の大掃除をしたのですが、昨年の大掃除がつい最近のような感じです。

はじめに

今回は、AWS re:Invent 2017のセッションで紹介されていた、「AWS Ops Automator」というものを試してみたいと思います。

【レポート】Deep Dive:EBSスナップショットによるEC2バックアップ #reinvent #cmp304

AWS Answersとは

これから試してみるAWS Ops Automatorは、「AWS Answers」という枠組みの中で公開されているものになります。

AWS Answers は、AWS アーキテクトが開発したドキュメントやソリューションのリポジトリで、AWS クラウドを構築して拡大するのに役立つ方法を説明しています。ここでは、アカウント管理、ビッグデータ、ネットワーキング、セキュリティといったさまざまなトピックについて、よくある質問の答えを入手できます。これらの答えでは AWS のベストプラクティスが説明され、規範的なアーキテクチャのガイダンスが提供されると同時に、AWS アカウントに数分でデプロイ可能な自動化されたソリューションも用意されています。カテゴリ別または名前順にブラウズして、必要な答えやソリューションを見つけられます。 AWS Answers(クラウドでのアプリ設計、開発、運用に関するよくあるご質問) | AWS

試してみた

概要

まず、機能の概要や全体の構成などは以下のページに記載されています。

簡単に言うと、自動バックアップツールのようなものですね。

セットアップ

次に、セットアップですが、ドキュメントは以下になります。

上記の手順通りにセットアップを進めていきます。
(手順ではクロスアカウントで利用する方法が書かれていますが、今回は単一アカウントで試してみます)

すべてCloudFormationのテンプレートになっているので、Launch Solutionのリンクからスタックの作成に入ります。
※この時、デフォルトではバージニアリージョンが指定されているので、必要であれば東京リージョンに切り替えてください。

「詳細の指定」や「パラメータ」はデフォルトの値を使用します。

「オプション」も特に設定はせずに進みます。

最後に「AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。」にチェックをいれ、スタックを作成します。

これで、スタックの処理が完了するまで約5分程度待ちます。

EBSバックアップ

ここまでで環境は作成されたので、今回はEBSのバックアップを試してみたいと思います。

まず、「出力」タブでConfigurationBucketNameの値を確認します。
これが各バックアップ処理の設定をしてくれるCloudFormationテンプレートが格納されているS3バケットの名前になります。

上記の名前のS3バケットの中に、EBSバックアップ用のCloudFormationテンプレート「Ec2CreateSnapshot.template」があるので、そのテンプレートからスタックを作成します。

今回、スタック名は「Ec2CreateSnapshot」にします。
あとでこのスタック名は使用することになるので、分かりやすい名前を付けておくことをお薦めします。

「パラメータ」の詳細については、以下のドキュメントに説明があるので、適当な値で設定します。

今回は検証のために、10分間隔でバックアップを取得するように設定します。

また、バックアップで作成されたスナップショットの世代管理もしたいので、「Snapshot tags」の項目にOpsAutomatorTaskList=Ec2DeleteSnapshotという値を入れておきます。

設定の意味としては、作成したEBSのスナップショットにタグを付与し、OpsAutomatorTaskListという文字列をタグのキーにセットし、Ec2DeleteSnapshotという文字列をタグの値にセットするということになります。
これで、バックアップで作成されたスナップショットを、このあとで設定するEBSのスナップショット削除の対象とすることができます。

以上でEBSバックアップの設定は完了です。
あとは、EBSのバックアップを取得したい対象のEC2に、「キー:OpsAutomatorTaskList、値:Ec2CreateSnapshot」というタグを付与すればバックアップが開始されます。
OpsAutomatorTaskListというキーで処理対象を特定し、そのタグの値で実行する処理を決定する仕組みのようです。

世代管理

次に、バックアップの世代管理のために、作成されたEBSスナップショットを削除する処理を設定します。

先のS3バケットの中に、同様にEBSスナップショット削除用のCloudFormationテンプレート「Ec2DeleteSnapshot.template」があるので、そのテンプレートからスタックを作成します。

ここで、スタック名は「Ec2DeleteSnapshot」にします。
EBSバックアップの設定で使用した「Snapshot tags」の項目の値、OpsAutomatorTaskList=Ec2DeleteSnapshotと連動しているのでご注意ください。

保持世代数は2世代に設定します。

以上で世代管理の設定も完了です。

実行

では、実際にうまく動作するか実行してみたいと思います。

対象のEC2にタグを付与します。

1時間ほど放置した結果、以下のように3つのスナップショットが取得されていました。

今回はスナップショットの作成と削除を同じ10分間隔にしたので、処理が被って結果的に3世代分残るようになってしまったようです。
ちゃんと時間をずらせば2つ残る状態になりました。

ということで、問題なく動きました!

さいごに

いかがでしたでしょうか?
パラメータの入力だけでバックアップの仕組みが利用できてしまいました。簡単すぎてビックリです!

AWS Answers、他にもいろいろありますので、ぜひ活用してみてください。