2019.4.19
NetlifyにはFuntionsという機能があります。これを使えばNetlifyでデプロイしたサイトでAmazon Lambdaを使えるようになります。
チュートリアルをやってみました。
deploying a copy to Netlify.
のリンクを踏むと自分のNetlifyに飛んで、プロジェクトをコピーするかどうか聞かれます。私はGithubアカウントと連携しているのでGithubにリポジトリをコピーしました。
出来上がったリポジトリはこちら。
これをNetlifyでデプロイすると先程のチュートリアルページと全く同じものがデプロイされます。こちらのurlにデプロイしてみました。
https://netlify-functions-example-kwst.netlify.com/
下記エラーが出ました。
TypeError: Cannot read property 'properties' of undefined
at module.exports (/Users/satoshi/practice/netlify-functions-example/node_modules/webpack-cli/bin/config-yargs.js:89:48)
at Object.<anonymous> (/Users/satoshi/practice/netlify-functions-example/node_modules/webpack-dev-server/bin/webpack-dev-server.js:86:25)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
at Module.load (module.js:560:32)
at tryModuleLoad (module.js:503:12)
at Function.Module._load (module.js:495:3)
at Function.Module.runMain (module.js:682:10)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:613:3
Webpackのエラーなので、Webpack周りのモジュールを最新にしてみると直りました。
修正してPR送ってみたら、マージされました🎉
https://github.com/netlify/functions/pull/22
http://localhost:8080
にアクセスしてみると先程のチュートリアルのページが表示されます。
package.json
を見てみるとnetlify-lambda
というモジュールでlambdaのスクリプトを動かしているみたいです。
"start:server": "netlify-lambda serve src/lambda -c webpack.server.js",
netlify.toml
のfunctions
で指定したディレクトリのjsファイルをスクリプトとして動かすことができるようです。
[build]
command = "yarn build"
publish = "dist/client"
functions = "dist/server"
試しにhello2.js
を追加してみます。
src/lambda/hello2.js
exports.handler = function(event, context, callback) {
callback(null, {
statusCode: 200,
body: "Hello, World2"
});
};
これでpushしてみるとデプロイが走り下記urlからhello2.js
が動いていることがわかります。アクセスしたときのログもNetlify上で見れるので便利です。
https://netlify-functions-example-kwst.netlify.com/.netlify/functions/hello2