AWS Lambdaで Node.js v8.10(LTS)が使用できるようになっており、Lambdaを新規作成すると、exports.handler
が async関数になっています。
API Gatewayからこの最新のAsync な Lambda を呼んでいる場合、returnでobjectを返してやれば、HTTPレスポンスボディとなるようですね。
Node.js v8.10 でのAPI Gateway Lambda スケルトン:
exports.handler = async (event) => {
var response = {
param: event, err: null, data: null, };
try {
response.data = await foo(event);
} catch (err) {
response.err = err;
}
return response;//これがレスポンスボディ
};
v6.10の時は、ハンドラーに渡されるcallbackを呼び出していたのですが、もしかしてPromiseを解決した値がレスポンスボディになっていたのか?今更だけど。
exports.handler = (event, context, callback) => {
var response = {
param: event, err: null, data: null, };
foo(event).then( data => {
response.data = data;
callback(null, response);
}).catch( err => {
response.err = err;
callback(null, response);
});
};
0 件のコメント:
コメントを投稿