Computer >> Máy Tính >  >> Lập trình >> Redis

AWS Lambda trạng thái với Redis REST

AWS Lambda đi tiên phong trong không gian không máy chủ. Nhiều nhà phát triển nghĩ rằng serverless là tương lai của sự phát triển. Nó cung cấp cho bạn mô hình trả tiền cho mỗi lần sử dụng thực sự, giúp bạn giảm bớt việc bảo trì và mở rộng cơ sở hạ tầng phụ trợ. Nhưng nó cũng đi kèm với những thách thức. Một trong số đó là tính vô trạng của nó. Bạn cần giữ trạng thái trong kho dữ liệu bên ngoài. Thật không may, hầu hết các cửa hàng dữ liệu phổ biến đều dựa trên kết nối. Nhưng như chúng tôi đã giải thích trong bài đăng này, việc quản lý các kết nối có thể trở nên khó khăn trong serverless. Đó là lý do tại sao, chúng tôi đã phát triển API REST hiệu suất cao trên Upstash Redis. Trong bài đăng blog này, tôi sẽ triển khai một api trạng thái rất cơ bản (bộ đếm trang) trên AWS Lambda và Upstash Redis bằng cách sử dụng API REST.

Xem bản demo trực tiếp:https://3jyz1n07o8.execute-api.us-east-1.amazonaws.com/count

Xem mã:https://github.com/upstash/examples/tree/master/aws-lambda-redis-rest

Thiết lập dự án

Chúng tôi sẽ sử dụng khung công tác không máy chủ để triển khai ứng dụng của mình.


git:(master) ✗ serverless

Serverless: No project detected. Do you want to create a new one? Yes

Serverless: What do you want to make? AWS Node.js

Serverless: What do you want to call this project? aws-lambda-redis-rest

Project successfully created in 'aws-lambda-redis-rest' folder.

Cài đặt tìm nạp qua npm install node-fetch . Sau đó, tạo cơ sở dữ liệu từ bảng điều khiển Upstash. Nhấp vào nút REST API và sao chép url và mã thông báo. Cập nhật handler.js như bên dưới:

const fetch = require("node-fetch");

module.exports.hello = async (event) => {
  const url =
    "https://us1-last-panther-33620.upstash.io/incr/counter?_token=AACQgMzYyNGM0OGMtZWQ3MC00OTRlLWFmOGEtODc3ZWQxYWQyZGJjZjgyOTlkM2JhNWIxE3OTJlNmE2NGVjNGM=";
  let data = await fetch(url);
  let result = await data.text();
  return { statusCode: 200, body: result };
};

Thêm điểm cuối API vào serverless.yml như sau:

service: aws-lambda-redis-rest
frameworkVersion: '2'

provider:
 name: aws
 runtime: nodejs12.x
 lambdaHashingVersion: 20201221

functions:
 hello:
   handler: handler.hello
   events:
     - httpApi:
         path: /count
         method: get

Chạy và Triển khai

Bạn có thể thực hiện các chức năng cục bộ:

serverless invoke local -f hello

Bạn có thể triển khai với:

serverless deploy

Lệnh sẽ xuất ra url mà bạn có thể kiểm tra trong trình duyệt của mình.

Ghi chú

  • Để có hiệu suất tốt nhất, cơ sở dữ liệu và chức năng AWS Lambda của bạn phải ở cùng một khu vực.
  • Nhờ có REST API, chúng tôi không cần quản lý các kết nối cơ sở dữ liệu và chúng tôi không cần bất kỳ ứng dụng Redis nào.
  • Không chia sẻ công khai mã thông báo API của bạn. Nếu bị rò rỉ do nhầm lẫn, bạn có thể thu hồi bằng cách đặt lại mật khẩu cơ sở dữ liệu của mình.
  • Nếu bạn muốn chạy nhiều lệnh trong một chức năng, hãy sử dụng API đường ống để có hiệu suất tốt nhất.