NetlifyでLambda Functionsを試す
プロフィールサイトやブログなど何かとお世話になっているNetlifyのLambda Functionsを利用していきます
[ 目次 ]
はじめに
こんばんは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。
今回はNetlifyのLambda Functionsを試していきたいと思います。
"Lamdba Functions"の存在は知っていたものの「AWSのLambdaみたいなものだろう」という認識しかありませんでした・・・
この"Lambda Functions"を利用することでNetlifyでもAPIが定義できますね!!
簡単に利用できるようなので入門編を書いていきたいと思います。
私のプロフィールサイトに組み込んでいきながら進めていきます。
公式のドキュメントは以下になります。
https://www.netlify.com/docs/functions/
"netlify-lambda"のインストール
netlify-lambda
はローカルで確認するためのサーバーを提供しています。
また、NetlifyにLambdaをデプロイする時のビルドにも利用するコマンドです。
■ npmを利用する場合
$ npm install netlify-lambda
■ yarnを利用する場合
$ yarn add netlify-lambda
Netlify用にプロジェクト内にインストールしましたが、ローカルではglobalとして定義してもいいかもしれません。私そうしてしまいました。
Lambdaの構成を整理
Lambdaに必要となるファイルを用意していきます。
まずは、Netlifyのデプロイ設定に必要なnetlify.toml
をプロジェクトルートに作成します。
netlify.toml
[build]
command = "npm run build"
functions = "functions"
publish = "dist"
functionsのディレクトリ設定は functions
としました。
この場合、/.netlify/functions/{function_name}
というURLで公開されます。
ビルドコマンドとpublishディレクトリは、プロフィールサイトで利用するVue.jsの設定になります。
lambdaを作成(hello.js)
今回は、src/lambda
ディレクトリにLambdaのソースを配置します。
(src配下はVue.jsのディレクトリ構成になっているので、Lambda用にディレクトリを別途設けました)
exports.handler = function(event, context, callback) {
callback(null, {
statusCode: 200,
body: "Hello, World"
});
}
ビルドコマンドの修正(package.json)
Lambdaのビルドも必要になるので、package.json
のビルドコマンドを修正します。
以下のように修正してください。
{
....
"scripts": {
"serve": "vue-cli-service serve",
"lambda": "netlify-lambda serve src/lambda",
"build": "netlify-lambda build src/lambda && vue-cli-service build",
"lint": "vue-cli-service lint"
},
....
}
buildコマンドに netlify-lambda build src/lambda
を追加しています。
また、ローカルで確認できるようにlambdaコマンドも追加しました。
ローカル確認
以下のコマンドを実行してローカルからLambdaを確認しましょう。
$ npm run lambda
http://localhost:9000/hello から確認アクセスできます。
"Hello, World" が表示されることを確認してください。
Netlifyにデプロイ&確認
githubにpushしてNetlifyにデプロイします。
https://nakamu.life/.netlify/functions/hello
ローカル同様 "Hello, World" が確認できれば成功です
補足
Lambdaは無料枠があります。全てが無料な訳ではありません。
以下のような制限がありますのでご注意ください。個人サイトであればDosアタックくらわない限り大丈夫な気がします・・・
- リクエスト数 : 125k/month
- 実行時間 : 100hour
最後に
Netlifyの便利さをすごく感じています。
すでにプロフィールサイトやブログをNetlifyで構築していてドメイン代以外お金かかってないし最高だなって思ってます。
そして、今回試したLambdaも利用できるとなるとさらに色々できそうですよね。
引き続きNetlifyを追ってみたいと思います。