AWS Lambda ফাংশন তৈরি করার সময় দুটি গুরুত্বপূর্ণ উপাদান থাকে যা ফাংশনের কার্যকারিতা নির্ধারণ করে: Handler এবং Runtime। এই দুটি উপাদান Lambda ফাংশনের কার্যকারিতা এবং পরিবেশের মূল ভিত্তি।
Handler
Handler হলো Lambda ফাংশনের এন্ট্রি পয়েন্ট, যার মাধ্যমে AWS Lambda ফাংশনটি কার্যকর হয়। এটি একটি ফাংশন যা AWS Lambda ইভেন্টের সাথে ইন্টারঅ্যাক্ট করে এবং সেই অনুযায়ী রেসপন্স প্রদান করে।
Lambda ফাংশনটি যখন কোনো ইভেন্ট ট্রিগার হয়, তখন AWS Lambda সেই ইভেন্টটি handler ফাংশনে পাঠায়। Handler ফাংশনটি ইভেন্ট প্রসেস করে, প্রয়োজনীয় কাজ সম্পাদন করে এবং একটি রেসপন্স রিটার্ন করে।
Handler এর গঠন
Handler ফাংশনটি সাধারণত দুটি ইনপুট গ্রহণ করে:
- event: এটি হচ্ছে Lambda ফাংশনের ইনপুট ডেটা, যা ইভেন্ট ট্রিগার থেকে আসে (যেমন, S3 থেকে ফাইল আপলোড হওয়া, API Gateway থেকে HTTP রিকোয়েস্ট ইত্যাদি)।
- context: এটি Lambda ফাংশনের কার্যকারিতার সাথে সম্পর্কিত তথ্য ধারণ করে, যেমন ফাংশনের রেসপন্স টাইম, রিভিউ স্টেটাস ইত্যাদি।
Handler এর Syntax
Lambda ফাংশনের হ্যান্ডলার ফাংশনটি বিভিন্ন প্রোগ্রামিং ভাষায় বিভিন্নভাবে লেখা হয়। তবে সব ভাষাতেই এটি সাধারণত একটি ফাংশন থাকে যেটি দুটি আর্গুমেন্ট (event এবং context) গ্রহণ করে।
Python Example (lambda_handler)
def lambda_handler(event, context):
# ইভেন্ট প্রসেস করা
print("Received event: " + str(event))
# ফাংশনের কাজ সম্পাদন
result = "Hello, " + event['name']
return {
'statusCode': 200,
'body': result
}
এখানে:
event: ইনপুট ইভেন্ট ডেটা, যেখানেnameকী থাকবে।context: Lambda ফাংশনের প্রসেসিং কনটেক্সট, যা এখানে ব্যবহৃত হয়নি।
Node.js Example (exports.handler)
exports.handler = async (event) => {
console.log("Received event:", JSON.stringify(event, null, 2));
const message = `Hello, ${event.name}`;
return {
statusCode: 200,
body: JSON.stringify({ message: message }),
};
};
এখানে:
event: ইভেন্ট ডেটা (যেমনnameনামক ইনপুট)।context: এখানে context ব্যবহৃত হয়নি, তবে এটি ফাংশনের প্রসেসিং কনটেক্সট ধারণ করে।
Runtime
Runtime হলো সেই পরিবেশ যেখানে Lambda ফাংশনটি রান করে। Lambda ফাংশন লেখার সময়, আপনাকে একটি রানটাইম নির্বাচন করতে হয়, যা আপনার কোড চালানোর জন্য প্রয়োজনীয় লাইব্রেরি এবং সাপোর্ট প্রোগ্রাম প্রদান করবে।
Lambda runtime বিভিন্ন প্রোগ্রামিং ভাষা সমর্থন করে, যেমন:
- Python
- Node.js
- Java
- C# (.NET Core)
- Go
- Ruby
- Custom Runtime (যদি আপনি একটি কাস্টম ভাষা বা কনফিগারেশন ব্যবহার করতে চান)
AWS Lambda স্বয়ংক্রিয়ভাবে আপনার কোডের জন্য উপযুক্ত runtime পরিবেশ সেটআপ করে, এবং কোডটি তখন সেই runtime এ এক্সিকিউট হয়। আপনি যে runtime নির্বাচন করবেন, তা Lambda ফাংশনের কোড লেখার প্রক্রিয়া ও এক্সিকিউশনের মধ্যে গুরুত্বপূর্ণ ভূমিকা পালন করবে।
Runtime এর উদাহরণ
- Python Runtime
যদি আপনি Python ব্যবহার করেন, AWS Lambda সেগুলোর জন্য একটি নির্দিষ্ট runtime পরিবেশ (Python 3.x) সরবরাহ করবে, যা আপনাকে Python কোড রান করার জন্য প্রয়োজনীয় সমস্ত লাইব্রেরি এবং ডিপেনডেন্সি ম্যানেজ করে দেয়। - Node.js Runtime
Node.js ব্যবহার করলে, Lambda ফাংশনটি Node.js এর environment এ রান করবে, যেখানে আপনি JavaScript কোড লিখে তা এক্সিকিউট করতে পারবেন। - Java Runtime
Java ফাংশনের জন্য AWS Lambda Java runtime পরিবেশ সরবরাহ করে, যা Java SDK এবং অন্যান্য প্রাসঙ্গিক লাইব্রেরি ইনক্লুড করে থাকে। - Custom Runtime
AWS Lambda আপনাকে কাস্টম runtime সেট আপ করার সুযোগও দেয়, যদি আপনি এমন কোনো ভাষা ব্যবহার করতে চান যা AWS এর ডিফল্ট runtime সাপোর্ট করে না। উদাহরণস্বরূপ, আপনি যদি GoLang ব্যবহার করতে চান, তবে একটি কাস্টম runtime সেটআপ করতে পারেন।
Lambda Function এর একটি সাধারণ কার্যপ্রবাহ:
- ইভেন্ট ট্রিগার: কোনো নির্দিষ্ট ইভেন্ট ঘটে (যেমন, একটি ফাইল S3 বকেটে আপলোড হওয়া)।
- Lambda ফাংশন কল: AWS Lambda ফাংশনটি সেই ইভেন্টকে
eventআর্গুমেন্ট হিসেবে গ্রহণ করে। - Handler Execution: Lambda ফাংশনের handler কোড এক্সিকিউট করা হয়, যা ইভেন্টের ভিত্তিতে কার্য সম্পাদন করে এবং ফলাফল প্রদান করে।
- Return: Lambda ফাংশনটি আউটপুট রিটার্ন করে, যা সফল হওয়ার জন্য HTTP রেসপন্স বা অন্য কোনো আউটপুট হতে পারে।
সারাংশ
AWS Lambda ফাংশনটি দুটি মৌলিক উপাদান দ্বারা পরিচালিত হয়: Handler এবং Runtime। Handler ফাংশনটি Lambda ফাংশনের এন্ট্রি পয়েন্ট, যা ইভেন্ট প্রক্রিয়া করে এবং ফলাফল প্রদান করে। Runtime হলো সেই পরিবেশ যেখানে Lambda ফাংশনটি রান হয় এবং কোড এক্সিকিউট করার জন্য প্রোগ্রামিং ভাষা নির্ধারণ করে। AWS Lambda-এর এই কাঠামোটি ডেভেলপারদের কোডে আরও বেশি স্বচ্ছতা এবং লাইটওয়েট কার্যকারিতা প্রদান করে।
Read more