AWS लैम्ब्डा ने सर्वर रहित स्थान का बीड़ा उठाया। कई डेवलपर्स सोचते हैं कि सर्वर रहित विकास का भविष्य है। यह आपको वास्तविक भुगतान-प्रति-उपयोग मॉडल देता है, आपको बैकएंड अवसंरचना के रखरखाव और स्केलिंग से राहत देता है। लेकिन यह चुनौतियों के साथ भी आता है। उनमें से एक इसकी स्टेटलेसनेस है। आपको राज्य को बाहरी डेटा स्टोर में रखना होगा। दुर्भाग्य से अधिकांश लोकप्रिय डेटा स्टोर कनेक्शन आधारित हैं। लेकिन जैसा कि हमने इस पोस्ट में समझाया है, सर्वर रहित में कनेक्शन प्रबंधित करना दर्दनाक हो सकता है। इसलिए, हमने Upstash Redis के शीर्ष पर एक उच्च प्रदर्शन REST API विकसित किया है। इस ब्लॉग पोस्ट में, मैं REST API का उपयोग करके AWS लैम्ब्डा और अपस्टैश रेडिस पर एक बहुत ही बुनियादी स्टेटफुल एपीआई (पेज काउंटर) लागू करूंगा।
लाइव डेमो देखें:https://3jyz1n07o8.execute-api.us-east-1.amazonaws.com/count
कोड देखें:https://github.com/upstash/examples/tree/master/aws-lambda-redis-rest
प्रोजेक्ट सेटअप
हम अपने एप्लिकेशन को परिनियोजित करने के लिए सर्वर रहित ढांचे का उपयोग करेंगे।
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
via के माध्यम से फ़ेच इंस्टॉल करें . फिर Upstash कंसोल से एक डेटाबेस बनाएं। REST API बटन पर क्लिक करें और url और टोकन को कॉपी करें। नीचे के रूप में हैंडलर.जेएस अपडेट करें:
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 लैम्ब्डा फ़ंक्शन एक ही क्षेत्र में होना चाहिए।
- आरईएसटी एपीआई के लिए धन्यवाद, हमें डेटाबेस कनेक्शन प्रबंधित करने की आवश्यकता नहीं है और हमें किसी रेडिस क्लाइंट की आवश्यकता नहीं है।
- अपना एपीआई टोकन सार्वजनिक रूप से साझा न करें। यदि गलती से लीक हो गया है, तो आप अपने डेटाबेस का पासवर्ड रीसेट करके इसे निरस्त कर सकते हैं।
- यदि आप एक ही फ़ंक्शन में एकाधिक कमांड चलाना चाहते हैं, तो सर्वोत्तम प्रदर्शन के लिए पाइपलाइन API का उपयोग करें।