Special
» 2015年08月27日 10時00分 UPDATE

AWSコストを抑える自動化ツールを徹底検証!

必要なときに、必要なだけリソースを使えるAWS(Amazon Web Services)。だが従量課金というクラウドのメリットは、状況に応じてきめ細かく運用しないとかえってコストが膨らんでしまう両刃の剣でもある。こうした中、NECが提供しているのが、AWS対応のジョブ管理ツール「WebSAM JobCenter」だ。簡単にAWSのコストメリットを引き出すことができるという。では具体的にはどう使うのか? どれほど簡単なのだろうか? 編集部がその機能と使い勝手を徹底検証した。

[PR/@IT]
PR

意外に難しい!? AWSのコスト最適化

 多様なサービスを低コストで提供し、多くの企業の支持を集めているAWS(Amazon Web Services)。中でも、初期費用なし、従量課金というモデルは、工夫次第で利用コストを大幅に抑えられることから、“腕の覚えのあるユーザー”には非常に魅力的なサービスになっている。

 例えば、アクセス量に応じた仮想サーバー機能「Amazon EC2」(以下、EC2)のインスタンス調整などは多くのユーザーが行っているはずだ。実際、AWSのヘビーユーザーは、スクリプトでAPIを操作して、コスト最適化の作業を自動化し、従量課金というクラウドのメリットを享受している。

 しかし、これが意外と難しい。規模が小さいうちは、AWSのマネジメントコンソールでのマニュアル操作を行えばいい。だが仮想サーバーの台数が増えると作業は増加し、コンソールでの誤操作や作業漏れが起こりやすくなる。早朝・夜間の対応や異常検知への対応を、全て人手でカバーするのも困難だ。スクリプトを作成して自動化するにしても、相応のスキルを持った人材が必要だし、スクリプトを維持・メンテナンスする工数も掛かる。かといって、「コスト最適化のための運用コスト」が必要になるようでは本末転倒だ。

 こうした中、企業の注目を集めているのがAWSのコスト最適化を支援するツールだ。NECが提供しているジョブ管理ツール「WebSAM JobCenter」もその一つであり、特別な知識やスキルがなくとも、簡単な操作でAWSのコスト最適化を自動化できるという。

 ではWebSAM JobCenterの場合、どのような機能を持ち、どのくらい“簡単に”使えるのだろうか?―― 編集部で実際に試してみたので、以下、その様子をリポートしよう。

WebSAM JobCenter コミュニティAMI(無料)はこちら

EC2でインスタンスを作成する際にこのAMIを使用すると、WebSAM JobCenterがすぐ使える状態でインスタンスが立ち上がる。ソフトウェアは60日間無料で利用できるので、まずはこちらで試してみるのがよいだろう。


コミュニティAMIを使った試用が可能に

 WebSAM JobCenterは、ドラッグ&ドロップで制御部品を組み合わせて、さまざまなフローを作成・自動実行できるジョブ管理ツールだ。

 オンプレミス環境や仮想環境では実績のあるツールだが、先ごろのバージョンアップにより、AWSに対応した。それに合わせて、試用版がコミュニティAMI(Amazon Machine Image)として配布されるようになり、自分で試すことができるようになった。今回は、この試用版を使って、AWSコスト最適化の手順を確かめてみた。

まずは事前準備から。WebSAM JobCenterのAMIを入手し起動してみた

 まずは、AMIを使ってEC2インスタンスを立ち上げ、AMIにインストールされているWebSAM JobCenterを起動してみよう。

alt 画面1 インスタンス作成画面。画面上部に表示されている1〜7までのステップに沿ってインスタンスを立ち上げる《クリックで拡大》

 まずは、EC2のインスタンスメニューから「インスタンスの作成」を行う。画面1のステップ1で、「コミュニティAMI」を選択し「JobCenter」で検索し、「WebSAM-JobCenter」を選択する。後は、1〜7のステップに沿ってインスタンスを作成する。

 注意点としては、以下の三つだ。

  • ステップ2「インスタンスタイプの選択」:快適に動作させるために「2. インスタンスタイプの選択」で「t2.medium」を選択しよう
  • ステップ3「インスタンスの設定」:JobCenterインスタンスがAPI制御できるよう、「PowerUserAccess」などが割り当てられているIAMロールを選択しよう
ALT 画面2 「インスタンスの詳細の設定」画面。「PowerUserAccess」などが割り当てられているIAMロールを選択する《クリックで拡大》
  • ステップ6「セキュリティグループの設定」:今回のAMIはWindows OSなので、「6. セキュリティグループの設定」で、インバウンドでRDP(Remote Desktop Protocol)接続できるように設定しておく(TCPポート3389)

 インスタンス作成が終了したら、EC2のマネジメントコンソールからインスタンスを起動し、RDP接続しよう。接続のためのIDとパスワードは、以下から入手できる。

WebSAM JobCenter コミュニティAMI(無料)はこちら

EC2でインスタンスを作成する際にこのAMIを使用すると、WebSAM JobCenterがすぐ使える状態でインスタンスが立ち上がる。ソフトウェアは60日間無料で利用できるので、まずはこちらで試してみるのがよいだろう。


早速、WebSAM JobCenterを起動!

 ここからはWebSAM JobCenterの操作手順になる。ステップを順に紹介していこう。まずデスクトップ上の「JobCenter CL/Win」のアイコンをダブルクリックするとWebSAM JobCenterの画面が起動し、サーバーへの接続画面が表示される。

ALT ステップ1 デスクトップにあるWebSAM JobCenterのアイコンをダブルクリックしてクライアントを起動する《クリックで拡大》

 サーバーへの接続画面に入力する情報は、上記サイトから入手したものを利用する(OSのログインに利用したものと同一)。

ALT ステップ2 ログイン情報を入力してWebSAM JobCenterに接続。
(1)サーバ名:jctrial
(2)ユーザ名、パスワード:上記「WebSAM JobCenter コミュニティAMI」から入手したものを利用(OSログイン時と同一)《クリックで拡大》

 これで、WebSAM JobCenterサーバーに接続でき、画面が起動する。

自動化に挑戦! インスタンスを起動するフローを作成してみる

 では、実際にAWSを自動化するフローを作成してみよう。作成するのは、「EC2インスタンスを起動するフロー」だ。以下、画面を見ながら、ステップバイステップで進めることにする。

 まず、WebSAM JobCenterを起動すると、左側にツリー、右側に白いスペースが配置された画面が表示される。まずは左側のツリーで「Practice」を選択したら、右側のスペースで右クリックし、下図のように「新規ジョブネットワーク」を作成する。

ALT ステップ3 WebSAM JobCenterに接続すると起動されるフローを管理する画面。この画面でフローを作成する。
(1)左側のツリーで「practice」を選択し、
(2)右側のスペースで右クリックし、「新規ジョブネットワーク」をクリック《クリックで拡大》
ALT ステップ4 新規ジョブネットワークの名前として「インスタンス起動」と入力し、フローをダブルクリック《クリックで拡大》

 ここでは新規ジョブネットワークの名前を「インスタンス起動」として、ダブルクリックする。すると、次のようなフローを作成する画面が開く。この画面内で、「オブジェクト」ツールバーから「カスタムジョブ」(「Job(C)」のアイコン)をクリック(ステップ5)。

ALT ステップ5 画面内で「オブジェクト」一覧から、Job(C)のアイコンをクリック《クリックで拡大》

 クリックすると表れる「+」マークをフローの「Start」―「END」の間に配置して、右クリックする。

ALT ステップ6 「+」マークをフローの「Start」―「END」に配置して、右クリックする《クリックで拡大》

 すると、以下のような「カスタムジョブの追加」ダイアログが表示されるので、「カスタムジョブ定義の選択」で「StartInstances」を選択し、ジョブ名を「起動」とする。

ALT ステップ7 ジョブ名に「起動」と入力する

 すると、以下のように、「Start」と「END」の間に「起動」と書かれた制御部品が追加される。

ALT ステップ8 制御部品が配置されたイメージ《クリックで拡大》

 この制御部品を右クリックして「パラメータ」を選択し、「カスタムジョブパラメータ設定」の画面を表示する。

ALT ステップ9 ステップ9で配置されたインスタンス起動制御部品を右クリックして……《クリックで拡大》

 「パラメータ」をクリックすると、ステップ10のようなパラメータ設定画面が表示される。このパラメータ入力画面で、「投入キュー」の「参照」をクリックすると、ステップ11の画面が表れるので、ここで「cbatch1」をクリックする。

ALT ステップ10 「参照」をクリックすると、上記の「投入先キュー」の設定画面が表示されるので、「cbatch1」キューを選択し、OKをクリック《クリックで拡大》
ALT ステップ11 「参照」をクリックすると右側の画面が表れるので、ここで「cbatch1」をクリック《クリックで拡大》

 次に、どのインスタンスを起動するか設定する。以下のように「カスタムパラメータ設定」タブをクリックし、「InstanceId」をダブルクリック。

ALT ステップ12 「カスタムパラメータ設定」タブをクリックし、「InstanceId」をダブルクリック《クリックで拡大》

 「変数値」のフィールドに、自分の環境にある「起動させたいインスタンスID」を入力。その後、「OK」を押せば設定完了だ。

ALT ステップ13 「変数値」のフィールドに、自分の環境にある「起動させたいインスタンスID」を入力して「OK」を押す《クリックで拡大》

 保存ボタンをクリックして、フローが完成した。通常は、スケジュールにより自動実行させるが、今回は手動で実際に動くかどうかテストしてみよう。

ALT ステップ14 保存ボタンをクリックして、動きをテストしてみよう《クリックで拡大》

 テストは、フローの中の白いスペースを右クリックして、「即時投入」をクリックする。

ALT ステップ15 フローの中の白いスペースを右クリックするとメニューが表れるので、その中から「即時投入」をクリック《クリックで拡大》
ALT ステップ16 「即時投入」をクリックすると、確認画面が表れるので「OK」をクリック《クリックで拡大》

 実行中は、ジョブのアイコンがステップ17のように黄色になり、正常に終了するとステップ18のように緑色になる。実際にインスタンスが起動したかどうかは、AWSマネジメントコンソールで確認してみよう。

ALT ステップ17 フローの実行中はジョブが黄色になる《クリックで拡大》
ALT ステップ18 フローが正常に終了するとアイコンが緑色になる。実際にインスタンスが起動したかどうかは、AWSマネジメントコンソールで確認できる《クリックで拡大》

 なお、インスタンス起動については、AWSマネジメントコンソール上に表示されるStatus Checksが「2/2 checks passed」になるまでを確認して正常起動とみなしている。これにより、インスタンスの確実な起動ができる。このように、制御部品を配置・設定するだけで、簡単にインスタンス起動のフロー作成・実行が行える。

使ってみよう! 日常業務で使えるサンプルフロー

 WebSAM JobCenter が提供している部品は「インスタンスの制御」だけではない。「スナップショット」や「S3制御」など、さまざまな部品が提供され、随時追加されている。

 AMIにはそれらを使ったサンプルフローもいくつか提供されている。「ジョブネットワーク一覧」の画面で、左側のツリーを展開し、「Root」→「sample」ディレクトリをクリックすると表示される。これらのフローも見てみよう。

ALT ステップ19 サンプルフローはAMIにも登録されている。左側のツリーを展開し、「Root」→「sample」ディレクトリをクリックすると表示される《クリックで拡大》

「インスタンス起動−停止」フロー:タグを利用して一括制御

 以下のステップ20〜22は、「朝インスタンスを起動し、成功したらメール通知、20時になったらインスタンスを停止する」フローの例だ。サンプルフローでは、フローが見やすくなるように、処理ごとにフローを階層化している。

ALT ステップ20:起動→20時まで待つ→停止という流れのフロー(親フロー)
ステップ21:具体的なインスタンス起動の処理(子フロー)
ステップ22:インスタンス起動の中から呼び出される状態通知の処理(孫フロー)
このようにフローを階層化して分かりやすく管理することができる《クリックで拡大》

 スケジュールに沿ってフローを実行するように設定しておけば毎朝AWSのマネジメントコンソールで確認する必要はない。朝届くメールを見て、フローが正常に行われたかを確認するだけでいい。マネジメントコンソールを使って人手で確認するよりも、はるかに簡単・シンプルであることがお分かりいただけるはずだ。

 AWSのタグとの連携により、自動作業を一括処理できることも挙げておこう。AWSではインスタンスなどに対してタグを付与しておき、タグごとにグルーピングして一括処理できる。WebSAM JobCenterでもこのタグを利用した処理が可能なのだ。例えば、制御するインスタンスをタグで管理しておけば、対象とするインスタンスが増えたり変更があったりした場合でも、JobCenterのフローを変更する必要がなくなるわけだ。

「所有者不明インスタンス」フロー: 野良インスタンスの早期検出

 「所有者タグ」に値が設定されていないインスタンスを発見して1日1回通知するサンプルフローだ。「インスタンスが作成されたまま放置されている」というケースは実は多い。放置されていても稼働している以上は利用料金が発生する。そうした“野良インスタンス”を発見することもコスト最適化に効果を発揮する。

「スナップショット作成」フロー: スナップショット&世代管理の自動化

 EC2のスナップショットを自動的に取得し、世代管理を実施するサンプルフローだ。スナップショットの回数や頻度が多いことはデータ保護や事業継続の観点からも望ましいが、増え続ければ運用コスト増を招く。このサンプルでは、パラメータに世代数を入力すれば、自動的に世代管理も行える。スナップショットが増え続けてしまう心配がなくなるというわけだ。

 まずは、以上のようなサンプルを使ってみる、あるいは自社に合わせて制御部品を組み込んでカスタマイズしてみるのもよいし、イチから自動化フローを作ってみてもいいだろう。自前でスクリプトを作るよりはるかに簡単・シンプルであることが、あらためて体感いただけるはずだ。

操作は非常に簡単。試してみれば必ず実感できるはず

 さて、いかがだっただろう。順を追って使い方を紹介してきたが、特に難しいステップはなかったはずだ。これならスキルレベルを問わず、誰にとっても扱いやすいのではないだろうか。インスタンス作成時のIAMRoleの設定のみ、なじみがないかもしれないが、AWSを使っている人にとっては問題なくできるレベルだ。自動化フローにしても、サンプルを使ってみた結果を基にアレンジしていくなどして、自社に最適なフローを容易に作成できるようになるはずだ。

 さらに、作成したフローは作成者以外にも処理の流れが分かりやすいため、属人化を防止して、維持・メンテナンスを確実に行えることも大きなポイントといえるだろう。AWSの運用をどう効率化すればよいか分からない、チャレンジしたがうまくいかなかったという方は、WebSAM JobCenterを試してみてはいかがだろう。

WebSAM JobCenter コミュニティAMI(無料)はこちら

EC2でインスタンスを作成する際にこのAMIを使用すると、WebSAM JobCenterがすぐ使える状態でインスタンスが立ち上がる。ソフトウェアは60日間無料で利用できるので、まずはこちらで試してみるのがよいだろう。


Changer

Copyright© 2017 ITmedia, Inc. All Rights Reserved.


提供:日本電気株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2015年9月30日

関連リンク

テストドライブに接続する端末が1台あれば、すぐにご利用いただけます。AWSのインスタンスの起動・停止や、スナップショット作成などのAWS自動化機能を、ぜひお試しください。

関連特集

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。