কম্পিউটার

Redis REST সহ স্টেটফুল AWS Lambda

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 ব্যবহার করুন৷

  1. ফ্লটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ (REDIS) সহ ফুলস্ট্যাক সার্ভারলেস অ্যাপ - পার্ট 2

  2. ফ্লটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ (REDIS) সহ ফুলস্ট্যাক সার্ভারলেস অ্যাপ - পার্ট 1

  3. সার্ভারলেস রেডিসে পাইপলাইন REST API

  4. ক্লাউডফ্লেয়ার কর্মীদের সাথে রেডিস @ এজ