Cloud Automator を比較的大規模で利用しているときに気にしている Tips をまとめてみた

AWS運用自動化サービス「Cloud Automator」

運用時の台数が増えてくると、たとえダブルチェックをしていても失敗しやすい、忘れがちなことがあると思っています。
そのときに、人間系のチェックを増やすよりも、Cloud Automator で簡単な Tips を頭に入れておくことで良い感じに利用可能なものをまとめて見ました。

順番が前後していますが、
Cloud Automator Advent Calendar 2017の7日目です。

技術2課の寺田です。
Mac を新しくしたら環境の調子がどうも悪くて、curl しても日本語がうまく表示されないというマルチバイト問題にハマって出口が見えなくなってきたので、API でやりたいことがあったのですがネタを Tips に切り替えました。みんなAPIネタで仕込んできているので、クールダウンも兼ねて!
その為、更新が遅くなってしまいましたが、7日目の記事となります。

Cloud Automator をGUIで使っているときのTips

API対応がでました ので、現在は自分で簡単なスクリプトを書けばいろいろ幸せになれますが、
その前から運用している案件だと基本的にGUI操作で対応してました。

台数が増えてくると、忘れたがゆえに、結果ジョブの失敗となってしまうことがあるので、
それ対策の簡単なTipsです。ぜひ頭の片隅に入れてもらって使えればと思います。

また、少数台だとスクリプトを書いたりとか、実行を監視をしたりとかを考えるのはやはり面倒なので、API が出てきた今でもうまく使える部分は多いかと思います。

インスタンスをIDでなく、Nameタグで指定する

Cloud Automator のジョブでは、対象のインスタンスは、タグあるいはインスタンス ID で指定可能です。
インスタンス ID の機能はEC2を検索してくれてウィンドウに表示してくれるためちょっと1日だけ使いたい時は指定ミスが無くて大変便利なのですが、長期的に指定するジョブをインスタンスIDで指定を行うとだいたいハマります。

どういうときに問題が起こるかというと、利用している EC2 を障害があったなどで作り直しをした時です。このときにEC2のインスタンス ID は変更になりますが、障害に気が行って通常Cloud Automator のジョブまでは気が回りません。しかし、この作り直しは人為的な操作になるので Cloud Automator 側では追随しません。そのためジョブ実行時にエラーになってしまいます。
小規模なうちは気にしてジョブに変更を加えることで対応も可能ですが、台数が増えてくるとインスタンス ID で指定していたことをよく忘れます。

私の場合は、インスタンスの Name タグにできるだけわかりやすいように名前をつけるようにしていますので、Cloud Automator のジョブを作成するときに、インスタンスを指定する場合は、最低限 Name タグで指定を行うようにしています。
そうすることで、作り直したとしても Name タグは同じものを利用するので、忘れた頃の夜中などのジョブの失敗が防げるようになります。

複数台のインスタンスをタグで時間指定する

上の形で、インスタンスの Name タグごとに設定すると問題になるのは複数台同じ時間に起動したい、落としたい、バックアップしたい時です。
複数タグを使って一つのジョブで実行する機能はないですので、通常はEC2 にタグを指定して、実行するようにします。
ポイントは、タグに時間を必ず書くことと、ジョブの名前にも時間を入れ込むことです。

また、Cloud Automator でどんなジョブが管理しているかも、Management Console 側からもわかるようになり、多重でジョブを設定してしまったりというのが防げます。

この方法の Weak ポイントは、一点だけ。
ある時間に設定したタグを変更して、別の時間にした際に、前の時間のタグを持っているインスタンスが全て無くなる場合は、ジョブエラーとなります。
忘れやすいですが、確実にジョブをオフにするようにしてください。

一時的に夜間停止を止めたい場合には、止めるジョブのみ無効にする

上の時間指定と連動しますが、一時的にバッチ処理や、 Update を流したくて夜間停止をしたくないときというのはよくあると思います。

その場合は、起動と停止両方止めたくなると思いますが、止めるジョブのみ無効にして、起動するジョブはそのままにしておくことが多いです。
起動のジョブはインスタンスが動いていれば、Cloud Automator の機能によりスキップされます。またジョブの料金もかかりません。
停止をやめるのに集中していると、起動をすっぽり忘れてしまったりするので、特にいくつかまとめて動かしている場合は、他のインスタンスの起動もしなくなってしまうため、止める処理のみ有効にしています。

逆に長期連休なので停止をしておきたいという場合は、起動ジョブのみを止めて、停止ジョブはそのままという逆パターンも有効です。

一時的にインスタンスを外したい場合

タグで複数インスタンスの指定をかけると、この一台だけ今日は止めたくないなどのパターンがあると思います。
その場合は、そのインスタンスのタグの Value を変更してしまうことが多いです。そうすることで、一台だけタグの指定からリソースを外すことが可能です。

リソースの終了ステータスをチェックする にチェックを必ず入れる

AMI バックアップなどは、ジョブが実行されたが、API エラーが返ってくるという場合が極稀にではありますが、存在します。

このチェックを入れることで、実際に AMI が取得完了したかが確認できるようになっていますので、基本的にはチェックを入れることにしています。

失敗時のメール通知

ジョブの成功時は知る必要があまりないと思います。
しかし、失敗時はやはり対応も含めて気になりますよね。

コミニュケーションツールである、slack には Email インテグレーションの機能があり、GUI でごく簡単に設定可能です。
失敗時のメールを slack に投げ込むようにしていれば、業務時間中は見ていると思いますし、複数人が確認可能になるので、対応しやすくなります。
特に開発環境などで、運用監視をしていない場合などは、業務時間中にちょっと気がついて対応をすれば良いのでおすすめです。

まとめ

簡単にですが、Cloud Automator を使っている際に気にしている Tips をまとめてみました。

GUI で操作が簡単というのが、Cloud Automator の便利なポイントの一つですので、上の内容をちょっと気にかけてもらって設定をしてもらえると、人為的な主に気が付かなかったことによるミスが減るようになりますので、参考にしてください。

AWS運用自動化サービス「Cloud Automator」