AWS Lambda সার্ভারহীন স্থান অগ্রগামী. অনেক ডেভেলপার মনে করেন যে সার্ভারহীন উন্নয়নের ভবিষ্যত। এটি আপনাকে প্রকৃত অর্থ-প্রতি-ব্যবহার মডেল দেয়, আপনাকে ব্যাকএন্ড পরিকাঠামোর রক্ষণাবেক্ষণ এবং স্কেলিং থেকে মুক্তি দেয়। তবে এটি চ্যালেঞ্জের সাথেও আসে। তার মধ্যে একটি রাষ্ট্রহীনতা। আপনাকে একটি বহিরাগত ডেটা স্টোরে রাজ্য রাখতে হবে। দুর্ভাগ্যবশত জনপ্রিয় ডেটা স্টোরগুলির বেশিরভাগই সংযোগ ভিত্তিক। কিন্তু আমরা এই পোস্টে যেমন ব্যাখ্যা করেছি, সার্ভারহীনভাবে সংযোগ পরিচালনা করা বেদনাদায়ক হতে পারে। তাই, আমরা Upstash Redis-এর উপরে একটি উচ্চ কার্যক্ষমতা সম্পন্ন REST API তৈরি করেছি। এই ব্লগ পোস্টে, আমি REST API ব্যবহার করে AWS Lambda এবং Upstash Redis-এ একটি খুব মৌলিক স্টেটফুল এপিআই (পৃষ্ঠা কাউন্টার) বাস্তবায়ন করব।
লাইভ ডেমো দেখুন: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
এর মাধ্যমে আনয়ন ইনস্টল করুন . তারপর 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 ফাংশন একই অঞ্চলে হওয়া উচিত।
- আরইএসটি এপিআইকে ধন্যবাদ, আমাদের ডাটাবেস সংযোগগুলি পরিচালনা করার দরকার নেই এবং আমাদের কোনও রেডিস ক্লায়েন্টের প্রয়োজন নেই৷
- আপনার API টোকেন সর্বজনীনভাবে শেয়ার করবেন না। ভুলবশত ফাঁস হয়ে গেলে, আপনি আপনার ডাটাবেসের পাসওয়ার্ড রিসেট করে এটি প্রত্যাহার করতে পারেন।
- যদি আপনি একটি একক ফাংশনে একাধিক কমান্ড চালাতে চান, তাহলে সেরা পারফরম্যান্সের জন্য পাইপলাইন API ব্যবহার করুন৷