如何使用Netlify Lambda函数并为JAMstack网站添加动态处理功能
我之前在我的Netlify教程中写过关于Netlify的介绍。我用它来托管这个博客,它很不错。
我还用它来运行其他网站,所有的网站都在Hugo上运行--这使得我的堆栈100%是JAMstack。
JAM最酷的地方在于,它并不局限于静态和 "哑巴 "网站--你可以做很多你想做的动态事情。
这种能力大部分是以lambda函数的形式出现的。
你可以让你网站上的JavaScript(或普通的HTML表格)调用一个URL端点,当被调用时执行一些预先确定的代码。不同的供应商提供对各种语言的支持。Netlify目前支持Node.js和Go。
在本教程中,我们重点讨论用Node.js编写的lambda函数。
Netlify给我们提供了一个慷慨的免费层级限制,每个月最多可以调用125.000个函数,总共100小时的运行时间。函数有128MB的内存,每个函数可以执行长达10秒。对于正常需求来说,这已经足够了。
在内部,Netlify在AWS Lambda上运行这个函数,为您抽象出AWS的所有复杂性。
我们如何创建一个函数?我们在网站的functions 文件夹中上传一个JavaScript文件。
在这个文件中,我们必须遵循一个名为handler 的方法。
exports.handler = (event, context, callback) => {
//functionality
}
如果你熟悉AWS Lambda,这个函数的代码你会很熟悉。如果你从来没有使用过它,不用担心--这里简要介绍一下我们的处理程序接收的参数。
event是一个包含请求数据的对象context包含用户信息,当使用个人信息进行用户认证时callback是一个函数,我们可以用它来创建一个响应
我们能做的最简单的事情是返回一个积极的响应。要做到这一点,我们使用callback() 方法。
exports.handler = (event, context, callback) => {
callback(null, {
statusCode: 200,
body: 'No worries, all is working fine!'
})
}
将其保存到一个functions/test.js 文件。
你需要做的唯一一件事是为netlify.toml 文件中的函数配置文件夹,使其发挥作用。
[build]
functions = "./functions"
试试这个。在一个空的文件夹中创建该文件,将其推送到GitHub仓库,并从该仓库创建一个新的Netlify网站。
一旦你这样做了,在Netlify的Settings -> Functions 菜单中就会出现一个新的菜单,显示我们的函数使用细节。

存储在functions/test.js 文件中的函数,可以在YOURSITENAME.netlify.com/.netlify/fu…

要访问请求参数,请使用event 对象。
event.path请求路径event.httpMethod请求的HTTP方法event.headers请求头文件event.queryStringParameters请求的查询参数event.bodyJSON格式的请求正文
之前我们用
callback(null, {
statusCode: 200,
body: 'No worries, all is working fine!'
})
来制作一个响应。你也可以添加一个headers 对象,其中包含一个包含头信息值的关联数组(对象)。
这个由Netlifygithub.com/netlify/net…的资源库包含了很多Netlify Lambda函数的样本。