Netlify Lambda Functions Hướng dẫn

Cách sử dụng Chức năng Netlify Lambda và thêm xử lý động vào các trang web JAMstack

Tôi đã viết về Netlify trước đây trênHướng dẫn Netlify. Tôi sử dụng nó để lưu trữ blog này, và nó thật tuyệt.

I also use it to run other sites, and all run on Hugo - which makes my stack 100% JAMstack.

Điều thú vị về JAM là tất cả không chỉ giới hạn ở các trang web tĩnh và “ngu ngốc” - bạn có thể thực hiện RẤT NHIỀU thứ động như bạn muốn.

Hầu hết sức mạnh đó đến dưới dạnghàm lambda.

Bạn có thể có JavaScript trên trang web của mình (hoặc các dạng HTML thuần túy) gọi một điểm cuối URL, điểm cuối này khi được gọi sẽ thực thi một số mã định trước. Các nhà cung cấp khác nhau cung cấp hỗ trợ cho các ngôn ngữ khác nhau. Netlify hiện hỗ trợ Node.js và Go.

Trong hướng dẫn này, chúng tôi tập trung vào các hàm lambda được viết bằng Node.js.

Netlify cung cấp cho chúng tôi giới hạn bậc miễn phí rộng rãi, với tối đa 125.000 lệnh gọi hàm và tổng thời gian chạy là 100 giờ mỗi tháng. Các hàm có bộ nhớ 128MB và mỗi hàm có thể thực thi trong tối đa 10 giây. Đối với nhu cầu thông thường, điều này là quá đủ.

Nội bộ, Netlify chạy chức năng này trênAWS Lambda, loại bỏ tất cả sự phức tạp của AWS cho bạn.

Làm cách nào để chúng ta tạo một hàm? Chúng tôi tải lên một tệp JavaScript trongfunctionsthư mục của trang web.

Trong tệp này, chúng ta phải tuân theo một phương thức có tênhandler:

exports.handler = (event, context, callback) => {
  //functionality
}

Nếu bạn đã quen thuộc với AWS Lambda, thì mã hàm sẽ quen thuộc với bạn. Nếu bạn chưa bao giờ sử dụng nó, đừng lo lắng - đây là tổng quan ngắn gọn về các tham số mà trình xử lý của chúng tôi nhận được:

  • eventlà một đối tượng chứa dữ liệu theo yêu cầu
  • contextchứa thông tin người dùng khi sử dụng Identity để xác thực người dùng
  • callbacklà một chức năng chúng ta có thể sử dụng để tạo phản hồi

Điều đơn giản nhất chúng ta có thể làm là gửi lại phản hồi tích cực. Để làm như vậy, chúng tôi sử dụngcallback()phương pháp:

exports.handler = (event, context, callback) => {
  callback(null, {
    statusCode: 200,
    body: 'No worries, all is working fine!'
  })
}

Lưu cái này vào mộtfunctions/test.jstập tin.

Điều duy nhất bạn cần làm để làm cho nó hoạt động là định cấu hình thư mục cho các chức năng trongnetlify.tomltập tin:

[build]
functions = "./functions"

Try this. Create the file in an empty folder, push it to a GitHub repository and create a new Netlify site from that repo.

Once you do so, in the Settings -> Functions menu in Netlify a new menu will show up which shows the details of our functions usage:

The function, which was stored in the functions/test.js file, is accessible at https://YOURSITENAME.netlify.com/.netlify/functions/test.

To access the request parameters, use the event object:

  • event.path the request path
  • event.httpMethod the request HTTP method
  • event.headers the request headers
  • event.queryStringParameters the request query parameters
  • event.body the request body in JSON format

Before we used

callback(null, {
  statusCode: 200,
  body: 'No worries, all is working fine!'
})

to craft a response. You can also add a headers object which contains an associative array (object) with the header values.

This repository by Netlify https://github.com/netlify/netlify-functions-example contains a lot of samples for Netlify Lambda Functions.


More services tutorials: