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"
![Viết và Deploy một Lambda Function trên Netlify](https://scotch-res.cloudinary.com/image/upload/dpr_1,w_800,q_auto:good,f_auto/v1540315111/hv7omcr0angknnup175q.png)
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
- C Cách tích hợp ChatGPT vào Google Search siêu dễ
- V VoiceGPT là gì? Giới thiệu tính năng và cách cài đặt sử dụng Voice GPT
- G GPT-4o Mini – Thông minh hơn và tiết kiệm hơn?
- C ChatGPT-4o là gì? Điểm mới của ChatGPT-4o vs ChatGPT-4
- C Chat GPT 4.0 là gì? Có gì vượt trội so với Chat GPT phiên bản cũ?
- C Cách tự học code web, tìm kiếm công việc dễ dàng và hạnh phúc mỗi ngày
- G Giới thiệu 15 website học và luyện hack hợp pháp
- T Tầm quan trọng của các chương trình đào tạo sau đại học trong kỷ nguyên 4.0
- i iOS 17.5 Beta 1 vừa được phát hành, những thay đổi nào đáng chú ý?
- i iOS 18 khi nào ra mắt? iOS 18 sẽ không hỗ trợ máy nào?