JAWS-UG中部・北陸勉強会レポート 第11回
地元密着型メディアのログ取得サービスで得たLambdaの経験談
しずおかオンラインの榊原さん、VPC内のLambdaの苦労を語る
2016年10月07日 07時00分更新
しずおかオンラインは多数の情報サイトや出版物を手がけているが、いずれも地元静岡に根ざしたものばかり。そのシステム面を支えている管理・事業推進部 ITソリューション課で、榊原 継太さんは主にバックエンドシステムを担当している。現場で実際に使うログ取得サービスを構築した経験から得た知見を、JAWS-UG東海道 in 浜松の勉強会で披露してくれた。
アクセス解析用のサブネットをVPC内に作成してLambdaを使う
今回ログ管理の対象となったサイトはEC2やRDSを使って構築されており、アクセスログは容量や日数によってfluentdを使ってJSON形式でS3にアップロード・保管されている。このログを解析し、その結果をRDSに格納するというのが、ログ管理システム構築の目的だ。基本的な考え方としては、EC2からログが書き出されるタイミングでLambdaをキックし、S3にアップロードされたログ情報を取得、解析するというもの。
一見難しくないように思えるが、アクセスログ解析用のシステムを外部にさらすのを避けるため、VPC(Virtual Private Cloud)内で使ったことで、難易度の高い作業になった。
「アクセスログ解析用に新しくVPC内にサブネットを作り、その中にLambdaを設置しました。LambdaからはNAT Gatewayを経由してS3にアクセスする仕様にしましたが、NAT Gatewayの作成方法や設置場所で悩まされました」(榊原さん)
そもそもNAT Gatewayを作成するメニューの場所がわかりづらかったと、榊原さんは語る。NAT GatewayはVPCサービスの一機能としてラインナップされているため、VPCサービスから作成や設定を行なわなければならない。やっと見つけてNAT Gatewayを作成したものの、今度は設置場所の選択を間違えてしまい、想定通りに動かなかったとのこと。
「最初はLambdaと同じサブネット内にNAT Gatewayを作成したのですが、そのNAT Gatewayからはサブネットの中しか参照できず、S3にアクセスできませんでした。外に出られる場所にNAT Gatewayを設置しなければならないとわかり、別のサブネットにNAT Gatewayを作成しなおしたところ、ようやくS3にアクセスできるようになりました」(榊原さん)
またこのとき、Lambdaを設置するサブネットのルーティング送信先を0.0.0.0/0に設定することも忘れないように、と榊原さんは注意を促した。
Advanced Settingsを使用してLambdaの詳細な設定を行なう
Lambdaをサブネット内に作成するためには、Advanced Settingsを使うのだが、これも設定画面の場所がわかりづらかったようだ。デフォルトでは非表示になっており、Advanced Settingsのリンクをクリックすることで設定項目を表示させる必要がある。
「Advanced Settingsの画面で、メモリ使用量やタイムアウトなどの設定ができます。VPCやサブネットの設定も同じく画面にあるので、Lambdaを設置する場所もここで設定します。VPC内にサブネットがひとつしかないと警告が表示されますが、動作には問題ありません」(榊原さん)
試行錯誤の末にこれらの設定を行ないながら構築したログ解析システムだがそれでも2日程度で構築できたというからLambdaの使いやすさがわかるというものだ。しかも100万件/320万秒までは無料で使えるので、現状はほぼ無料枠で収まっているという。とはいえ便利な側面ばかりでもない。榊原さんはLambdaを使う際の制約事項として、使用言語が限られることや、設定した時間を過ぎるとタイムアウトで処理が強制的に終了してしまうことを挙げている。
「Lambdaの方はほぼ無料枠で収まるのですが、NAT Gatewayの利用料が30ドルほどかかっています。現在は監視しているファンクションがひとつだけなので、もしかしたらEC2のマイクロインスタンスを使って同様のシステムを構築した方が安く運用できるかもしれません。しかし今後は監視対象を他のファンクションにも拡大していく予定なので、監視するファンクションが増えてくればLambdaとNAT Gatewayを使ったシステムの方が低コストになる見込みです」(榊原さん)
こうした経験談を語ってくれた榊原さんは最後に、「1日か2日でこの程度のシステムを組むことができるので、調べるだけで終わらず手を動かしてみましょう」と会場の参加者に呼びかけてプレゼンテーションを終えた。
10月22日(土)、「JAWS Festa 東海道 2016」が開催!
10月22日、AWSのユーザーグループであるJAWS-UGが主催する大型コミュニティイベントであるJAWS Festaが今年は名古屋工業大学で開催される。今年のテーマは「クラウド・IoTの最前線、みんなで学べば怖くない!〜一緒に熱くなれる仲間を見つけよう〜」ということで、学ぶだけのセミナー形式勉強会にならない多彩な企画が用意されているという。
この連載の記事
-
第17回
デジタル
年末のJAWS-UG名古屋はre:Inventの振り返りLT(ただしLong Talk) -
第16回
デジタル
AWS IoTでトイレ予約システムを作った中村さんの戦い -
第15回
デジタル
CMSをフレームワークとして活用し、クイックスタートを実現しよう -
第14回
デジタル
クラウドはアジャイル開発本来の力を引き出し、エンジニアの在り方も変える -
第13回
デジタル
ライター重森が体験したJAWS Festa 東海道 2016熱狂の1日 -
第12回
デジタル
「マイル手帳」のバックエンドをServerless Frameworkで構築 -
第10回
デジタル
しずおかランチ開発で得たLambdaとElasticsearch連携時の認証テク -
第9回
デジタル
サーバーレス事例たっぷりのJAWS-UG東海道 in 浜松 -
第8回
デジタル
8月27日、JAWS-UG東海道 in 浜松に行きまーす! -
第7回
デジタル
10月22日は名古屋へ!JAWS Festa 東海道 2016の申し込み開始 - この連載の一覧へ