だいぶ前ですが、Nodeのバージョンがv0.10.42からv4.3になりました。
現時点ではもうv0.xの関数は作れなくなってて、ほとんどの人は知る必要ないですが、今更移行して久しぶりにLambdaさわったらハマったというメモ。
コードベースが中途半端にES2015になる
中途半端に、というところが重要。
- `Class`とか`Promise`は使える
- Arrow functionも書ける
- Destructuringはできない
みたいな。
詳細は、 http://kangax.github.io/compat-table/es2016plus/#node4
NodeのLTSでさえv6.xなので、はよバージョン上げて欲しい・・・
`context.succeed()`じゃなくなる
// いままで exports.handler = function(event, context) { // do something... // OK context.succeed(); // or context.done(); // NG context.fail(err); // or context.done(err); }; // これから exports.handler = (event, context, callback) => { // do something... // OK callback(); // NG callback(err); };
しばらくは古い記法でも動くっぽいけど、ハンドラの実行結果としてはfailしまくりに。
ちなみに1
移行ドキュメントにあるこの謎の1行。
context.callbackWaitsForEmptyEventLoop = false;
callback();
`callback()`でイベントループに貯まってる処理を待たずに即おしまい!ってしたい場合に、`false`にするんだそうな。
環境変数が使えるように
これは最近できるようになったらしい。
Lambdaのコンソールの画面にそれらしいフィールドが増えてて、keyとvalueを入れて保存すると使える。
Nodeのコードからは、このように。
// FOOって環境変数
process.env.FOO;