Viết và Deploy một Lambda Function trên Netlify
Bài viết được sự cho phép của tác giả Lưu Bình An
Lambda function là gì?
Giải thích về Serverless bạn đọc bài trước có đăng
Nếu bạn chỉ có một trang blog như thế này, viết bằng Gatsby, không có backend làm sao bạn có thể có được tính năng cho phép user đăng ký nhận bản tin? Ví dụ dùng dịch vụ của MailChimp đi.
Chúng ta ko thể đưa API key vào trang frontend được, hiển nhiên quá mà! Ai cũng có thể lấy được cái key này thì sao.
Chúng ta phải thông qua một bên ở giữa, là Lambda function trên Netlify, chúng ta đưa key này cho Netlify, nó sẽ có trách nhiệm bảo mật key này và truyền thông tin tới MailChimp
Chữ Lambda được phát minh đầu tiên bởi Amazon AWS, sau này Netlify cũng dùng luôn tên này, nó là kiểu các hàm trung gian, giúp chúng ta giao tiếp với phía server (vì đây là dạng serverless, chúng ta dùng dịch vụ của nó cung cấp, giống như vua chúa, nếu muốn giao tiếp với anh thì chú cứ thông qua thái dám, họ sẽ truyền tin tới cho anh)
Cứ dùng trang mặc định của Gatsby
Tạo một thư mục bên trong source code, nó sẽ chứa toàn bộ các hàm sẽ giao tiếp với Lambda. Thư mục này đặt đâu cũng được, cứ đặt vào dưới thư mục gốc tên functions
Mỗi file chỉ chứa 1 function
test.js
exports.handler = function(event, context, callback) { }
Mỗi function sẽ nhận 3 parameter
event
: chứa post data, headercontext
: function này được call ở đâu, thông tin user hiện tạicallback
: hàm callback thôi, hàm này nhận param đâu tiền là error nếu có lỗi
Chạy các function Lambda ở local
Cần cài netlify-lambda
để chạy test dưới local
npm install netlify-lambda
netlify-lambda serve <functions_directory>
<functions_directory>
là thư mục chứa mấy function chúng ta viết
Thêm đoạn shortcut vào trong package.json để chạy lệnh này
Bước cuối cùng cần làm, tạo file config để báo với Netlify, đây không phải là thư mục chứa source code của chúng ta, đây là thư mục sau khi build. Tạo file Netlify.toml
trong thư mục gốc
Sau khi build, file bên trong functions
sẽ được đưa vào thư mục tên lambda
Chạy lại đoạn script shortcut hồi nãy khai báo npm run start:lambda
, bên dưới hình này đoạn chạy bị lỗi là khi chưa tạo file Netlify.toml
, chúng ta bắt buộc phải tạo file này trước khi chạy
Mở Postman lên gọi test thử
Function đầu tiên đã chạy thành công!!!
Chúng ta truyền thêm một object { "name" : "James" }
, và muốn nhận được một JSON object thay vì là một string
. Muốn vậy trong phần body chúng ta phải gọi JSON.stringify
callback(null, { statusCode: 200, body: JSON.stringify({ msg: "Thanks for visiting " + name }) }); // nếu không nhận được name= james callback(new Error("You're not James"));
Test trên Postman
Trường hợp phát sinh lỗi
Deploy lên Netlify
Nãy giờ chúng ta đang chạy các Lambda function ở dưới local bằng lệnh serve
, để đưa lên Netlify, chúng ta cần build
source code trước khi đẩy lên Netlify
Chúng ta phải setup chạy 2 script, một để build Gatsby, sau đó build mấy functions lambda
"props": "npm run build; npm run build:lambda"
Lưu ý: do đang dùng gatsby, nên cần 2 lệnh này, nếu bạn dùng một thằng khác, thì lệnh sẽ khác, tuy cách setup
Phải cập nhập lại Netlify.toml, chúng ta sẽ báo với Netlify: “Ê, khi nào tao chạy xong prop
, thì mày deploy nhe”
Sau khi commit lên Github, Netlify sẽ bắt đầu trigger deploy, vào trang chính của Netlify, trong tab Deployment, bạn có theo dõi xem nó đang deploy tới đâu rồi
Sau khi deploy thành công, bạn có thể chuyển qua tab Function, các function nào đã có sẽ được liệt kê ở đây
Cơ bản là thế thôi, các bạn có thể làm “mọi thứ” với function mình viết (miễn là nó có cho), như gửi email, lưu dữ liệu xuống DB, gọi một API
Bài viết gốc được đăng tải tại VuiLapTrinh
Có thể bạn quan tâm:
- Auto deploy dự án với Github Actions
- Tìm hiểu về Serverless, FaaS, deploy functions lên Firebase Cloud Functions
- Deploy ứng dụng web đến một máy chủ từ xa nhờ vào Git push
Xem thêm các công ty HOT tuyển dụng IT tại TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?