• 10
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

WebStormを使ってES6でLambda開発しようとするとbabelの設定やらデプロイの方法やらWebStormの癖やら面倒くさいこといろいろあるのでテンプレにまとめてみました。

https://github.com/hoshina85/lambda_template

出来ること

  • ES6のコードをbabelで変換
  • mochaでテスト
  • gulpでデプロイ

コード

メインのコードはsrc/*.es6に書きます。WebStormはデフォルトで.jsと.es6を区別してそれぞれES5,ES6のコードとして扱います。filetype設定で.jsをES6として扱うことも出来ますが、ES5のファイルが混ざってもES6として評価するのであまりおすすめしません。

.babelrcでES2015とstage-3のプリセットを呼んでいるのでasync/awaitも使えるようにしてあります。babel6以降presetsやpluginはここに書くのがお作法っぽいです。

gulp build gulp watchlib/*.js に変換されますがここは変換が通ったか確認するために吐き出しているだけなので実際には使われません。gulpを利用せずにWebStormのWatchでES6を変換するようにするとコンパイルエラーがIDEで見れます。

テスト

npm testtest/以下全てのテストが実行されます

テストはmochaです。WebStormでテストハーネスと認識してくれるライブラリ(mocha,karma,nodeunit)を使うと特定のテストケースの実行とかが容易になります。迂闊にAVAとか対応していないものを使うとただのスクリプト実行になってしまうのが辛いところです。

またみんな大好きpower-assertに対応しています。.babelrcbabel-plugin-espowerを設定しtest/mocha.optsでデフォルトパラメータに--require babel-registerを指定することで自動でassertが変換されます。

デプロイ

デプロイはnode-aws-lambdaを使ってgulpから行います。lambda-config.jsでクレデンシャル情報とlambda関数の設定を入力してgulpコマンドを実行するとビルドからアップロード、設定まで一気通貫で行ってくれます。アクセスキーを記述せずに.aws/credentialsに設定したプロファイル名を環境変数で渡すのがおすすめです。

AWS_PROFILE=hogehoge gulp deploy

ちなみにここでアップロードするユーザとlambdaの実行ロールは別物です。実行ロールにはCloudWatchLogsの書込権限が必要ですが、アップロードするユーザにはlambdaの設定権限と実行ロールへ移譲する権限(iam:PassRole)が必要になります。

まとめ

ふんわりと紹介してみましたがLambdaめっちゃ便利だけど開発フロー固まってないとウロウロしがちなのでとりあえずテンプレから始めてみると良いと思いますのでコレ以外にもみんなのベストプラクティスもおしえてください

この投稿は 今年もやるよ!AWS Lambda縛り Advent Calendar 20154日目の記事です。