この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
東京リージョンも来て、さらに盛り上がっているAWS Lambda。 ただ、そんな時、Node.jsのバージョンを気にしておく必要があります。
AWS Lambdaが動くNode.jsのバージョンは・・・
公式ドキュメントを見ればわかるのですが、 AWS Lambda上で動いているNode.jsのバージョンは、v0.10.33 となります。 また、現行公式サイトからダウンロードできるNode.jsはv0.12.6のため、かなり乖離があることがわかります。
Promiseが使えない
Angular.jsで開発している方には既にお馴染みのPromiseがNode.jsでも実装されています。 しかし、使えるのはv0.12以降のため、Lambda上では使うことができません。 使おうとすると以下の様なエラーが出ます。
{
"errorMessage": "Process exited before completing request"
}
もし、Promiseを使いたい場合は、bluebird等の実装がありますので、 そちらを組み込んだ上で動かすことでPromiseを用いた実装をすることが可能です。
$ npm install -save bluebird
app.js
var Promise = require("bluebird");
ローカルでLambdaファンクションを実行したい。
参考元の記事そのままなのですが、下記のようなドライバを作成することで、 ローカルでLambdaファンクションを実行することが可能です。 また、doneの中のdataを参照することで処理の結果の確認も可能です。
driver.js
// We will put dummy objects for event and context;
var event = {};
var context = {
// InvokeID may be unique invocation id for AWS Lambda.
invokeid: 'string',
// context.done() should be called for end of each invocation.
// We would want to stub this.
done: function(err,data){
console.log(data);
return;
}
};
// Then we can load and run your function.
var yourLambdaFunction = require('./app');
yourLambdaFunction.handler(event,context);
$ node driver.js
まとめ
Node.jsのバージョンので発生する障害と、ぷちtipsのご紹介でした。