*

Serverless Framework を使えばサーバレス開発がもっと楽しくなりそう

header-lambda

前回、AWS Lambda を使って LINE の Bot を作ってみましたが、実は正直、Lambda の実装~デプロイはちょっと面倒なところがありました。

Lambda に搭載されていないモジュールが必要なときは AWS の GUI エディタ上では実装できず、デプロイ時にソースファイルを zip 化してアップロードしないといけませんでした。また、Lambdaに限らず AWS リソースの手配や管理も量が増えてくると大変です(リソースの消し忘れとか)。

しかしそんな問題を解決してくれるものが既にありました…。

その名も Serverless Framework

AWS Lambda を用いたサーバレス開発をサポートしてくれるフレームワークです。

serverless_top

今年の9月頃に正式に v 1.0 としてリリースされていたようです。そして現在(2016/11/10 時点)では既に v 1.1.0 となっています。

今回はこの Serverless Framework の Hello, world 実践と、前回作成した LINE Bot をコマンド一発で Lambda にデプロイできるようにしたいと思います。

1. Serverless Framework の Hello, world

 

 

 

1 – 1. インストール

 

1 – 2. AWSアカウント設定

管理者権限の IAMユーザを作成してセットします。
(現時点では管理者権限である必要があるようです)

もしくは AWS CLI を使用してユーザ情報をセットします。
(こちらは永続的な設定)

 

1 – 3. Serverlessサービスを作成

※–template は以下のような言語別のテンプレートを指定します。
・aws-python
・aws-java-gradle
・aws-java-maven

そして、上記の文言が表示されると以下の3つのファイルが生成されています。
・event.json : テスト用パラメータ
・handler.js : ソースファイル
・serverless.yml : 設定ファイル

※コマンドの “serverless” は “sls” でも実行可能です。

 

1 – 4. サービスデプロイ

serverless.yml ファイルの設定項目を以下のように編集します。

deploy コマンドを実行すると、以下のようにずらずらと起動ステータスが表示されます。内容をみるに、この Serverless Framework は CloudFormation を作成していることがわかります。

正常にデプロイが終了すれば、invoke コマンドでサービスを実行させてみることができます。

実際に AWS のマネジメントコンソールをみてみると、serverless.yml に指定した通りに Lambda Function と CloudFormation の Stack が作成されていることが確認できます。

lambdafunctiontest

Lambda には Function が作成されています

 

cloudformationstack

CloudFormation には Stack が作られ、AWS リソースが生成されています

2. LINE Bot をコマンド一発で Lambda にデプロイ

 

 

 

せっかくなので、前回の LINE 雑談 Bot を Serverless Framework で作ってみます。

linebotsample2

再掲ですが Bot の構成図としては上記のようになっています

といっても、serverless create したディレクトリ内にメインのソースファイル(index.js)と node_modules/request モジュールを配置し、あとは serverless.yml ファイルを編集するだけで準備は完了です。

実際に編集した serverless.yml が以下となります。

 

まずは作成する Lambda Function 用の IAM ロールの設定を記述します。
今回は東京リージョンの DynamoDB をリソースとし、テーブルからの値の取得と更新を許可するようにします。

 

次に API Gateway の設定を記述します。
handler には ファイル名.ハンドラ名 を、events 以下の http : method には post を指定します。

 

そして DynamoDB のテーブルを定義します。

まぁ正直、ここまでの設定方法は以下のページにほぼ書いてある内容ですね…。
https://serverless.com/framework/docs/

ではいよいよ、コマンド一発で Lambda にデプロイしてみます。

無事に Lambda にデプロイされました!
最後に Service Information の endpoints: に URL が表示されます。これを LINE Messaging API の Webhook URL に登録すれば Bot 完成!

いや~これはかなり便利です。もしリソースが不要になれば、以下のコマンドで CloudFormation の Stack ごと(S3も)削除してくれます。

開発してくれた人に感謝ですねホント(-人-)アリガタヤ

AWSへのデプロイがラクになるのはもちろんのこと、ソースコードだけでなく yml 設定ファイルもバージョン管理できますし、今後のサーバレス開発では欠かせないツールになりそうな予感がしますね!

Ex. Github に 雑談Bot あります

 

 

 

今回と前回で作成した LINE 雑談 Bot のソースを Github に置きました。もし必要な方はご自由にお使いください。
https://github.com/SKazuki/LineBotServerlessDocomoAPI

※ソースが汚い等の苦情は受け付けますが、何か問題が起きても責任は取れません m(_ _)m

 

関連記事

aws

AWS認定ソリューションアーキテクトになりました(アソシエイト)

久しぶりに資格試験を受けてきました。たぶん6年振りくらい。無事に合格しました。(内心ホッとし

記事を読む

botsample2

LINE Messaging API と AWS Lambda で LINE BOT を作ってみた

手段「これってもしかして」 目的「私たち」 「「入れ替わってる〜〜〜〜?」」 — みすま

記事を読む

Oracle_logo_cloud

Oracle Cloud で仮想サーバを立ててみた

クラウドのインフラサービス(IaaS)というと、普段はやはり Amazon Web Services

記事を読む

knowledge

Qiita風ナレッジ共有ツール Knowledge

「情報共有」ってなかなか難しいですよね。 プロジェクトに直接関係する内容なんかであれば、各プロ

記事を読む

  • Kazu (カズ) です。 87年生まれです。 ベトナムのホーチミン市に1年ちょっと駐在して本帰国、かと思いきや今度はベトナムのダナン市に駐在することになりました。 ITシステムなお仕事をしています。 ベトナムが初めての海外。いろいろびびりまくってます。 ガイコツの被り物をしてますが、中身も大して違いはありません。 本ブログはぼちぼち更新していきます。 solutions-architect-associate
PAGE TOP ↑