AWS Lambda ने सर्वरलेस क्षेत्र में अग्रणी भूमिका निभाई। कई डेवलपर्स मानते हैं कि सर्वरलेस विकास का भविष्य है। यह आपको वास्तविक पे-पर-यूज़ मॉडल देता है, बैकेंड इंफ्रास्ट्रक्चर के रखरखाव और स्केलिंग से मुक्त करता है। लेकिन यह चुनौतियों के साथ भी आता है। उनमें से एक है इसकी स्टेटलेसनेस। आपको स्टेट को बाहरी डेटा स्टोर में रखना होगा। दुर्भाग्य से, अधिकांश लोकप्रिय डेटा स्टोर कनेक्शन-आधारित हैं। लेकिन जैसा कि हमने इस पोस्ट में बताया, सर्वरलेस में कनेक्शन प्रबंधन दर्दनाक हो सकता है। इसलिए, हमने Upstash Redis के ऊपर एक उच्च प्रदर्शन REST API विकसित की है। इस ब्लॉग पोस्ट में, मैं AWS Lambda और Upstash Redis का उपयोग करके REST API के साथ एक बहुत ही बुनियादी स्टेटफुल API (पेज काउंटर) लागू करूंगा।
लाइव डेमो देखें: https://3jyz1n07o8.execute-api.us-east-1.amazonaws.com/count
कोड देखें: GitHub रिपॉजिटरी
प्रोजेक्ट सेटअप
हम अपने एप्लिकेशन को डेप्लॉय करने के लिए सर्वरलेस फ्रेमवर्क का उपयोग करेंगे।
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.
कोड
npm install node-fetch के माध्यम से fetch इंस्टॉल करें। फिर Upstash कंसोल से एक डेटाबेस बनाएं। REST API बटन पर क्लिक करें और URL और टोकन कॉपी करें। handler.js को नीचे दिए अनुसार अपडेट करें:
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
};
};
serverless.yml में API एंडपॉइंट जोड़ें:
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
चलाएं और डेप्लॉय करें
आप फ़ंक्शंस को स्थानीय रूप से चला सकते हैं:
serverless invoke local -f hello
आप डेप्लॉय कर सकते हैं:
serverless deploy
कमांड URL आउटपुट करेगा जिसे आप अपने ब्राउज़र में देख सकते हैं।
नोट्स
- सर्वोत्तम प्रदर्शन के लिए, आपका डेटाबेस और AWS Lambda फ़ंक्शन एक ही क्षेत्र में होना चाहिए।
- REST API की बदौलत, हमें डेटाबेस कनेक्शन प्रबंधित करने की आवश्यकता नहीं है और हमें किसी Redis क्लाइंट की आवश्यकता नहीं है।
- अपना API टोकन सार्वजनिक रूप से साझा न करें। यदि गलती से लीक हो जाता है, तो आप अपने डेटाबेस का पासवर्ड रीसेट करके इसे रद्द कर सकते हैं।
- यदि आप एक ही फ़ंक्शन में कई कमांड चलाना चाहते हैं, तो सर्वोत्तम प्रदर्शन के लिए पाइपलाइन API का उपयोग करें।