AWS Systems Manager で複数の EC2 インスタンスを 1 台ずつ停止・起動してみた #reinvent

re:Invent 2017 会期中、AWS Systems Manager が発表になりました。

【速報】AWS環境をまとめて管理!新サービス「AWS Systems Manager」が発表されました! #reinvent

一見すごそうにみえますが、とはいえ落ち着いて考えてみると、
EC2 Systems Manager じゃないの?」
「今まである機能とどう違うの? まとめただけ?」
という疑問がでてくると思います。わたしもそうだったので、とりあえず試してみました。

使ってみる

まずは、3台起動している EC2 インスタンスを順番に停止・起動してみましょう。
これらには予め、「Group」というタグに共通の「evaluation」という値が設定してあるとします。

マネジメントコンソールの「サービス」から、Systems Manager を選択します。

左上のハンバーガーアイコン( [三] )をクリックするとメニューが開きます。

リソースグループの作成

まずは 3台の EC2 インスタンスを「リソースグループ」として登録します。

ちなみに AWS Systems Manager になってリソースグループの概念が新しくなっています。こちらの記事も参照して下さい。

左メニューから「Find Resources」を選択し、「リソースの検索」画面を開きます。

  • リソースタイプ : AWS::EC2::Instance
  • タグキー : Group
  • タグの値 : evaluation

これを入力して、入力欄右の「+」をクリックします。

右上「クエリ結果の表示」をクリックすると、検索が行われ、下に結果が表示されます。

意図通りのものが表示されたら、「クエリをグループとして保存」しましょう。

  • グループ名 : evaluation-group

最低限これだけ指定して「グループの作成」をクリックします。

停止・起動のオートメーション実行

では、今回作成したリソースグループに対して「オートメーションの実行」を行います。

今回は停止・起動が目的なので、「 AWS-RestartEC2Instance 」を選択します。

必要な情報は概ね入力された状態で次の画面が開きますが、一ヶ所だけ、
「ターゲットとレート制御」のところの「パラメータの選択」で「Instance Id」を選択して下さい。

また、そのすぐしたの「同時実行数」が「1ターゲット」になっていることが分かると思います。
つまりこの自動時刻処理は、1台ずつ順に行われることになります。

問題が無ければ一番右下、「オートメーションの実行」をクリックします。

実行が開始されました。試しに EC2 のマネジメントコンソールをみてみると、ちゃんと 1台ずつ停止・起動しているのがわかると思います。

一度に全台同時に再起動されるわけでなく順番に、というところが、運用で使いやすいツールになっていると感じました。

同時並行に実行する数は必要に応じて、2台にしたり、「全体のn%」みたいな指定も出来るのが嬉しいですね。

実行結果の確認

改めて左メニューの「Automation」をクリックすると、いま実行した処理の結果が確認できます。全体 + 個々のインスタンスの再起動処理ということで、4つの記録が確認できます。

それぞれ、いつ、誰が、何のアクションを実行したのか、結果はどうかが表示されていて、ひとめで分かります。

今回実行したドキュメントの中身

ちなみに、とくに説明もなく「 AWS-RestartEC2Instance 」を選択しました。タイトルだけみると「停止・起動じゃなくて再起動なのでは?」と思えてくるので、念のためドキュメントの中身を確認します。

左メニュー「Documents」をクリックし、今回実行した「 AWS-RestartEC2Instance 」を探して「詳細を表示」してみます。

「コンテンツ」タブをクリックすると、今回の処理が JSON で記述されていたことが分かります。

ちゃんと、stopInstances して startInstances していますね。

所感

いままでは開発が必要だったり、いくつかのコンソールを行ったり来たりしなくてはならなかった機能が、AWS Systems Manager を見るだけで出来るようになりました。統合環境的といいますか、AWS のダッシュボードとして使えるサービスかと思います。

EC2 の利用がメインである環境で、運用を行うには非常に使いやすい作りになっていると感じたので、これからどんどん触っていきたいと思います!