Netlify FunctionsとはNetlify版のいわゆるFaaS(ファース・Function as a Service)。
Netlify Functionsの使い方としてはnetlify.tomlという設定ファイルでNetlify Functionsの関数を置く場所を指定しファイルを置くとエンドポイントが自動で付与されるので、それを使用する感じ。
テストはnpmでnetlify-lambdaというパッケージが配布されているため、それを用いる。
$ npm init -f
$ npm install netlify-lambda
次に設定ファイルのnetlify.tomlを用意する。
$ touch netlify.toml
$ vi netlify.toml
[build]
functions = "functions"
上記の設定により、functionsディレクトリ内にNetlify Functionsのファイルを置けるようになった。
次にsrcディレクトリ内に関数ファイルを設置する。
$ mkdir src
$ touch src/test.js
$ vi src/test.js
exports.handler = (event, context, callback) => {
callback(null, {
statusCode: 200,
body: 'Hello World!!',
})
};
そして下記のコマンドでテストしてみる。
$ npx netlify-lambda serve ./src/
そうするとコンソールに下記のような感じでポート番号が書かれるのでブラウザでアクセスしてみる(下記の例ではhttp://localhost:9000)。
Lambda server is listening on 9000
問題ないようであれば、package.jsonに下記のbuildコマンドを記述し、netlify.tomlにそのbuildコマンドを実行するように指定する。
$ vi package.json
~ 略
"scripts": {
"build": "netlify-lambda build ./src/"
},
~ 略
$ vi netlify.toml
[build]
functions = "functions"
command = "npm run build"
functionsディレクトリはgit管理しないようにし、pushすると、自動ビルドされるようになる。
これで一旦ひと通りの流れは完了となる。
Netlify Functionsは内部的にはAWS Lambda(ラムダ)を使っているらしい。
無料版では2019年6月24日現在、月に125,000リクエスト、実行時間は100時間まで利用できるため、個人で使うぶんには問題なく無料で使えそう。
ただしURLはNetlify独自の形式から変更できない、メモリは128MB、実行時間は10秒までとなっている。