Hướng dẫn sử dụng AWS Lambda với NodeJS – phần 1


1060

Serverless là gì?

Trước tiên, hãy để tôi đưa bạn trở lại thời điểm các ứng dụng NodeJS được lưu trữ trên các máy vật lý trong các phòng máy chủ. Hồi đó, các công ty đã xây dựng trung tâm dữ liệu của riêng họ. Quá trình này rất tẻ nhạt, khó khăn và rất khắt khe.

Gần đây, một kỷ nguyên mới đã mở đường cho việc chạy ứng dụng trên đám mây. Bạn không còn cần phải giải trí với ý tưởng xây dựng các trung tâm dữ liệu của riêng mình nữa.

Chỉ trong vài phút, bạn có thể khởi động các máy chủ ở nhiều khu vực và triển khai các ứng dụng trong vài giây. Tuy nhiên, cung cấp máy chủ, mở rộng quy mô và giám sát vẫn là một nhiệm vụ khó khăn.

Giờ đây, sự thay đổi trong điện toán đám mây được gọi là serverless, hoặc  function-as-a service, đã xuất hiện song song. Không cần cung cấp máy chủ, giám sát, logging hoặc quản lý cơ sở hạ tầng bên dưới. Thay vào đó, trọng tâm là logic kinh doanh của bạn, được chia thành các chức năng nhỏ hơn, có mục đích duy nhất như sau:

NodeJS

Serverless không có nghĩa là không có máy chủ, vì thực sự có máy chủ. Nó chỉ có nghĩa là bạn sẽ không còn gánh nặng quản lý các máy chủ này.

Một trong những đơn vị chịu trách nhiệm chăm sóc các máy chủ này là Amazon Web Services.

Service web của Amazon là gì?

Amazon Web Service, hay AWS, là dẫn đầu trong các nền tảng điện toán đám mây.

Theo trang web của họ, AWS cung cấp một “nền tảng cơ sở hạ tầng có độ tin cậy cao, có thể mở rộng, chi phí thấp và cung cấp sức mạnh cho hàng trăm nghìn doanh nghiệp tại 190 quốc gia trên thế giới”. Theo báo cáo năm 2018 của Canalys, AWS nắm giữ 32,6% thị phần. Đó là nhiều hơn những gì được nắm giữ bởi bất kỳ nhà cung cấp nào khác.

Với điều đó đã được thiết lập, bây giờ là lúc để giữ vững chiếc mũ của bạn. Đó là bởi vì bạn sẽ học được điều gì đó thú vị

AWS Lambda functions

Như tôi đã nói ở phần đầu, Lambda là một service máy tính được cung cấp bởi AWS. Nó cho phép bạn chạy code mà không cần phải xử lý các máy chủ trên đám mây. Một event triggers một hàm Lambda và chết sau khi thực thi.

Function Lambda chỉ làm một việc. Nó có thể là một cái gì đó đơn giản như lấy một bài đăng trên blog, tạo một bài đăng trên blog hoặc thậm chí là gửi một email.

Có ba cách bạn có thể tạo một hàm Lambda trên AWS:

  1. Bạn có thể sử dụng AWS console. Đây là giao diện web do AWS cung cấp để quản lý và truy cập các dịch vụ của họ. Tuy nhiên, tôi không khuyến nghị phương pháp này vì rất khó để viết một ứng dụng chính thức từ console.
  2. Bạn có thể sử dụng cloud-based IDE do AWS cung cấp. Điều này cho phép bạn viết, chạy và debug từ trình duyệt của mình.
  3. Bạn có thể sử dụng môi trường local của mình với trình soạn thảo mà bạn chọn và tất nhiên, deploy để hoạt động với một lệnh. Đơn giản! Chúng ta sẽ khám phá điều này trong bài đăng này.

Cách tạo tài khoản AWS

Mọi hàm Lambda đều cần có tài khoản AWS, vì vậy bạn cần phải có một tài khoản. Các yêu cầu cho một tài khoản rất đơn giản.

  • Địa chỉ Email
  • Số điện thoại
  • Credit card 

Đừng lo lắng; bạn không cần phải trả bất cứ thứ gì. AWS cung cấp một tài khoản free tier account. Với gói này, bạn có thể sử dụng hầu hết tất cả các dịch vụ của AWS mà không phải trả một xu nào trong một năm.

Để thiết lập tài khoản miễn phí của bạn,

  1. Đi tới AWS console.
  2. Click vào Create a Free Account.
  3. Điền email và mật khẩu
  4. Điền chi tiết tài khoản
  5. Nhận thông tin credit card mà bạn sử dụng
  6. Hoàn tất quy trình xác minh danh tính bằng cách trả lời cuộc gọi điện thoại của Amazon.
  7. Bạn sẽ thấy một số có bốn chữ số trên màn hình trình duyệt của mình. Nhập nó trên bàn phím điện thoại của bạn.
  8. Xin chúc mừng! Giờ đây, bạn có thể đăng nhập vào tài khoản AWS hoàn toàn mới của mình.

Setup môi trường local

Chúng ta sẽ sử dụng Serverless framework, một công cụ CLI được viết bằng NodeJS cho phép bạn viết và deploy các hàm Lambda. Nó hỗ trợ nhiều nhà cung cấp như AWSMicrosoft AzureIBM OpenWhiskGoogle Cloud Platform, KubelessSpotinst,, v.v.

Framework Serverless rất dễ cài đặt. Đầu tiên, bạn cần runtime NodeJS. Bây giờ, tôi phải nhắc bạn cài đặt phiên bản NodeJS được AWS Lambda hỗ trợ. Tôi sẽ tuân theo thời gian chạy NodeJS 8.10 trong bài đăng này.

Bạn cũng sẽ muốn đảm bảo môi trường local của bạn càng gần với môi trường production càng tốt. Điều này bao gồm runtime.

Nếu bạn đã cài đặt các phiên bản khác, bạn có thể sử dụng NVM để cài đặt NodeJS 8.10 runtime chạy hoặc chuyển đổi giữa các phiên bản của NodeJS.

nvm install v8.10

Nếu bạn muốn chuyển đổi giữa các phiên bản NodeJS, bạn phải làm như sau:

nvm use 8.10

Bây giờ bạn đã có runtime NodeJS, hãy tiến hành cài đặt framework Serverless :

npm install -g serverless

Kiểm tra xem framework Serverless đã được cài đặt chưa.

$ serverless --version
1.40.0

Cách tạo user lập trình trên AWS

Function Lambda sẽ không tồn tại trên môi trường local mãi mãi. Nó cần phải đi vào môi trường AWS trước khi điều kỳ diệu có thể xảy ra. Framework Serverless cần một cách để truy cập tài nguyên AWS và thay mặt bạn deploy các function

Với mục đích này, bạn sẽ cần một tài khoản người dùng lập trình. Tài khoản này sẽ không thể đăng nhập vào bảng điều khiển AWS. Thay vào đó, nó sẽ truy cập tài nguyên AWS thông qua các lệnh gọi API bằng các key truy cập mà chúng ta sẽ sớm tạo.

Tôi đã cung cấp các bước đơn giản để tạo người dùng lập trình bên dưới.

  1. Đăng nhập vào  AWS console và chuyển đến IAM user
AWS Console

2. Click vào Add user để bắt đầu tiến trình tạo user

AWS Add user

3. Gõ trong lambda-example-cli tên user, cho phép truy cập theo chương trình bằng cách chọn checkbox, và click Next: permissions để tiếp tục

lambda-example-cli

4. Click vào Attach existing policy directly và search cho Administrator access. Chọn checkbox AdministratorAccess . Chính sách là một đối tượng trong AWS xác định quyền của user(người dùng), role(vai trò) hoặc group(nhóm) app NodeJS

5. Xem lại các lựa chọn của bạn và sau đó nhấp vào nút Create user. Bạn sẽ thấy màn hình này.

AWS Create User Success

7. Sao chép hoặc tải xuống tệp CSV chứa key ID truy cập và key private truy cập của bạn. Bạn cần phải bảo mật thông tin này.

Bất kỳ ai có quyền truy cập vào các key này đều có thể thực hiện lệnh gọi API giống như bạn. Họ có thể kiểm soát và sử dụng tài khoản AWS của bạn.

8. Cấu hình CLI serverless bằng thông tin đăng nhập AWS của bạn.

serverless config credentials --provider aws --key <your_access_key_id> --secret <your_access_key_secret>

Kết luận

Qua phần 1 , bạn có thể tạo account AWS và thiết lập một số thứ cơ bản.

Hãy xem tiếp tục phần 2 tại đây

Tham khảo thêm về NodeJS: Style code NodeJS

Tham khảo thêm về React: Tự học React JS thời đại dịch Corona nCov – phần 1


Like it? Share with your friends!

1060