Claudia.jsでES2015を使う

AWS LambdaのNode.jsコンテナは残念なことに2017年1月現在でv4.3という古いバージョンで、ES2015に対応していないです。 公式の"USING BABEL WITH AWS LAMBDA"に書いてある通りで、babelを使ってES2015でClaudiaやBabelを書く方法をまとめます。

前提

下記のようにAWS API GatewayAWS Lambda用のapp.jsとcustom認証のauthorizer.jsをES2015で書いていると仮定します。

  • app.js : AWS API GatewayAWS Lambda用のClaudiaの定義 (ES2015)
  • authorizer.js : カスタム認証用のLambda関数 (ES2015)

手順

ディレクトリ作成

srcbinを作成し、src配下に作成したファイルを格納します。binには後々babelでtranspileされたファイルが格納されるので、現時点では空で構いません。

mkdir src bin
mv *.js src

npm設定

npm init
npm install --save claudia-api-builder
npm install --save-dev babel-cli babel-preset-es2015 claudia

package.jsonscriptsfilesを以下のように設定します。

  "scripts": {
    "transpile": "babel --presets es2015 src --out-dir bin",
    "create": "npm run transpile && claudia create --region us-east-1 --handler bin/authorizer.auth --name [任意] --config claudia-auth.json && claudia create --region us-east-1 --api-module bin/app",
    "update": "npm run transpile && claudia update --config claudia.json",
    "update-auth": "npm run transpile && claudia update --config claudia-auth.json"
  },
  "files": [
    "bin"
  ],

現時点では以下のようになっています。

src/app.js
src/authorizer.js
bin/
package.json

実行

  • デプロイします。初回のみの作業です。claudiaの設定ファイルclaudia.jsonとカスタム認証の設定ファイルclaudia-auth.jsonも作成されます。
npm run create

更新

  • カスタム認証を修正した後に実行します。
npm run update-auth
  • app.jsを修正した後に実行します。
npm run update

以上