ヤメ記者SEの徒然なるままに…

アクセスカウンタ

zoom RSS [Tips] AWSのEC2インスタンスを、Lambdaを使って自動停止・自動起動

<<   作成日時 : 2016/07/27 21:22   >>

トラックバック 0 / コメント 0

仕事のメモ代わりに、久々に技術系のネタです。

最近担当している仕事が、AmazonのクラウドサービスAWS上で動いています。
さすが世界最高峰のクラウドサービスの一つだけあって、いや〜、いろんな機能が盛りだくさん。とても使いこなしきれません。
といっても、私は別の会社で構築された環境を引き継いで触っているだけなので、使いこなすどころか、まだまだ普通のレンタルサーバーと同じレベルで触っている程度なのですが…。


そんな中、AWSの大きな特徴が、マシンが稼働している時間帯だけ料金が発生するという従量課金制。

WEBサービスを提供する場合はほとんどの場合、サーバーは立ち上げっぱなしになるかと思いますので、ほとんどの場合はマシンのスペックで、余剰が出れば小さくするし、足りなくなれば大きくするし、という形で調整をするかと思います。

が、私が今担当しているシステムは社内向けのシステムでして、稼働時間外は止まっていても問題ないサービスということで、この時間帯はサーバーを止めてしまうことで、運用費用の節約をしたいな、ということで、自動的に停止、起動する設定が行えないかと調べてみました。

そういったことに対応する外部サービスなどもいくつかあるのですが、ちょっと調べてみたら使い勝手のよさそうな内容が紹介されていたので、こちらを参考に構築と設定を行ってみました。

・OpsWorksかLambda(スケジュール)を使ってEC2自動起動自動停止で費用節約する


今回のシステムは社内向けということで、一般のネットワークからは直接アクセスできない設定にしてあるサーバーもあるため、OpsWorksは選択対象外ということで、Lambdaを使って実装です。

Lambdaは同じくAmazonがAWS内のサービスとして提供している機能で、いわゆるサーバー部分はまるっとAmazonが面倒みるので、アプリケーション部分だけを構築してアップロードすれば、その処理応答を返してくれる、という代物です。
AWS Lambda とは


とりあえず、やったこととしては書いてある通りなのですが、node.js自体使うのが初めてだったので、実行にあたって作業した内容をいくつか書いておきます。

・作業マシンにnodejs と npm のインストール。(ubuntuなので apt-get で普通にインストールできました)
・フォルダを作成して、 npm で async aws-sdk moment の3つのパッケージをダウンロード。
・公開されていた index.js をコピペして作業フォルダ内に作成。
・タグを判定している場所の固定文字列を書き換え。(私はタグのKEYはすべて大文字にしました)
・作ったプロジェクトを丸ごとZIPに固める。
・EC2インスタンス側にタグを設定。
・LambdaのにZIPをアップロードして、ロールを設定。

以上、という感じです。

いくつかはまったポイントとしては、
・タグのKEYとVALUEの判定では大文字小文字が区別される。(JSだから当たり前?)
・ZIP化するときは、フォルダ階層の下に置いてあるとエラーになる。
・Lambdaのトリガーは、CloudWatchのスケジュールで設定するが、cron(*/10 * ? * * ) のようにして10分おきに起動設定しても、なぜか、時折10分おきにならないことがあった。(CloudWatchのスケジュールは時間指定起動の信頼性が低い?)
・Lambdaの起動設定で、タイムアウト時間は1台でも少し長めに。(デフォルトは3秒ですが、ストップ系の実行の際にタイムアウトが発生。30秒だと正常に実行できました。感覚的には10秒くらいでもOKかも?)
といったところでしょうか。


Lambda自体使ったのは初めてだったのですが、サーバーを何も用意しなくてもよいって、すごく便利ですね。
インフラはとにかくこちらが想定している通りに動いてさえくれればよい、というアプリケーション開発者にとってはまさに天の恵み。
同じようなサービスはすでにクラウド事業者からいくつも出ていますので、個人的にもどこか契約して、そのうちなんか出してみたいな、と思いました。


ではでは〜〜〜〜〜。


==========================気になるニュース
AIで花の名前や生態を教えてくれるアプリ「Blippar」はiOSとAndroidに対応!

FREETEL SIMで「Pokemon GO パケット料金無料化」決定 既存ユーザーも対象

かざすだけで山の名前が分かるアプリ『AR山ナビ』

学校教育ネットワークの不正アクセス事案に係る生徒調査の結果についてお知らせします

米民主党全国委員長が辞任 サンダース氏妨害疑惑で引責

がれきの中のポケモンGO シリア難民「悲劇知って」

トランプ氏受諾演説(日本語訳全文)

「鳥取砂丘の砂の移動を調査するために設けた杭」のポータルが108つになりました。

知られざる増田県政の金字塔と都知事選の本当の争点 --- 小保内 義和

事件報道における「人となり」の必要性の有無は報道サイドが勝手に決めているけれど

投資家やFXの参加者は「トランプ・ショック」に備えよ!


【特典PDF付き】効果的な導入・運用のための Amazon Web Services活用入門
マイナビ出版
2016-08-01
石井 大河

amazon.co.jpで買う
Amazonアソシエイト by 【特典PDF付き】効果的な導入・運用のための Amazon Web Services活用入門 の詳しい情報を見る / ウェブリブログ商品ポータル



Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)
翔泳社
WINGSプロジェクト 阿佐 志保

amazon.co.jpで買う
Amazonアソシエイト by Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS) の詳しい情報を見る / ウェブリブログ商品ポータル



Amazon Web Services パターン別構築・運用ガイド
SBクリエイティブ
NRIネットコム株式会社

amazon.co.jpで買う
Amazonアソシエイト by Amazon Web Services パターン別構築・運用ガイド の詳しい情報を見る / ウェブリブログ商品ポータル


テーマ

関連テーマ 一覧


月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
[Tips] AWSのEC2インスタンスを、Lambdaを使って自動停止・自動起動 ヤメ記者SEの徒然なるままに…/BIGLOBEウェブリブログ
文字サイズ:       閉じる