AWS Lambda ফাংশন তৈরি করার সময়, কোড এবং প্রাসঙ্গিক ডিপেনডেন্সি সংরক্ষণ করার জন্য একটি Deployment Package তৈরি করতে হয়। এই প্যাকেজটি AWS Lambda ফাংশনের এক্সিকিউশন পরিবেশে রান করার জন্য প্রয়োজনীয় সমস্ত ফাইল এবং ডিপেনডেন্সি ধারণ করে। AWS Lambda ফাংশন ডিপ্লয় করার জন্য প্রধানত দুটি পদ্ধতি ব্যবহৃত হয়: ZIP Deployment Package এবং Container Image।
ZIP Deployment Package
ZIP Deployment Package হলো একটি সাধারণ পদ্ধতি যা AWS Lambda ফাংশন ডিপ্লয় করতে ব্যবহার করা হয়। এটি মূলত আপনার কোড এবং প্রয়োজনীয় লাইব্রেরি/ডিপেনডেন্সির একটি সংযুক্ত (compressed) ফাইল।
ZIP Deployment Package তৈরি করার ধাপ
কোড লেখুন
প্রথমে আপনার Lambda ফাংশনের কোড লেখুন। উদাহরণস্বরূপ, Python ফাংশন হতে পারে:def lambda_handler(event, context): return "Hello, " + event['name']ডিপেনডেন্সি যুক্ত করুন (যদি প্রয়োজন হয়)
যদি আপনার কোড কোনো নির্দিষ্ট লাইব্রেরি ব্যবহার করে, তবে সেগুলোও প্যাকেজে অন্তর্ভুক্ত করতে হবে। যেমন, যদি আপনি requests লাইব্রেরি ব্যবহার করেন, তাহলে এটি ইনস্টল করতে হবে:pip install requests -t /path/to/your/projectএই কমান্ডটি requests লাইব্রেরি ইনস্টল করবে এবং তা আপনার প্রকল্পের ফোল্ডারে নিয়ে আসবে।
ZIP ফাইল তৈরি করুন
কোড ও সমস্ত ডিপেনডেন্সি একসাথে একটি ZIP ফাইলে প্যাকেজ করুন। এটি করার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:zip -r my_lambda_function.zip .এই কমান্ডটি বর্তমান ডিরেক্টরির সমস্ত ফাইল ও ফোল্ডার (কোড এবং ডিপেনডেন্সি) নিয়ে একটি my_lambda_function.zip ফাইল তৈরি করবে।
- Lambda Console এ আপলোড করুন
AWS Management Console এ গিয়ে, Lambda ফাংশনের Function code সেকশনে ZIP ফাইল আপলোড করুন:- Function code > Code entry type: Select Upload a .zip file
- Upload বাটনে ক্লিক করে তৈরি করা ZIP ফাইলটি আপলোড করুন।
- ফাংশন ডিপ্লয় করুন
কোড আপলোড করার পর, Deploy বাটনে ক্লিক করে ফাংশনটি ডিপ্লয় করুন।
Container Image Deployment Package
AWS Lambda ফাংশন কনটেইনার ইমেজ ব্যবহার করে ডিপ্লয় করা একটি আধুনিক পদ্ধতি, যা আপনাকে কাস্টম Runtime এবং নির্দিষ্ট কনফিগারেশনের সাথে ফাংশন তৈরি করার সুবিধা দেয়। এই পদ্ধতিতে, আপনি আপনার Lambda ফাংশনকে Docker কনটেইনার ইমেজ হিসেবে প্যাকেজ করবেন।
Container Image Deployment Package তৈরি করার ধাপ
Dockerfile তৈরি করুন
একটি Dockerfile তৈরি করুন যা আপনার কোড এবং ডিপেনডেন্সি কনটেইনারে যোগ করবে। উদাহরণস্বরূপ, একটি Python Lambda ফাংশনের জন্য Dockerfile হতে পারে:FROM public.ecr.aws/lambda/python:3.8 # কোড কপি করা COPY app.py ${LAMBDA_TASK_ROOT} # Lambda হ্যান্ডলার সেট করা CMD ["app.lambda_handler"]এখানে:
- FROM public.ecr.aws/lambda/python:3.8: এটি AWS Lambda Python runtime এর একটি ইমেজ।
- COPY app.py ${LAMBDA_TASK_ROOT}: আপনার কোডের ফাইল কনটেইনারে কপি করা হচ্ছে।
- CMD ["app.lambda_handler"]: এটি Lambda ফাংশনের হ্যান্ডলার ফাংশন, যা কনটেইনারে এক্সিকিউট হবে।
Docker ইমেজ বিল্ড করা
Dockerfile তৈরি হওয়ার পর, কনটেইনার ইমেজ তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:docker build -t my-lambda-image .এই কমান্ডটি my-lambda-image নামে একটি Docker ইমেজ তৈরি করবে।
ইমেজ পুশ করা (ECR)
Docker ইমেজটি AWS Lambda এ ডিপ্লয় করার জন্য, আপনাকে ইমেজটি AWS ECR (Elastic Container Registry) এ পুশ করতে হবে। প্রথমে একটি ECR রিপোজিটরি তৈরি করুন এবং তারপর ইমেজটি পুশ করুন:# ECR রিপোজিটরি তৈরি করুন aws ecr create-repository --repository-name my-lambda-repo # ECR লগইন aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com # ইমেজ ট্যাগ এবং পুশ করুন docker tag my-lambda-image:latest <aws_account_id>.dkr.ecr.<region>.amazonaws.com/my-lambda-repo:latest docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/my-lambda-repo:latest- Lambda Console এ কনটেইনার ইমেজ পছন্দ করুন
AWS Lambda Console এ গিয়ে, Create function সেকশনে Container image নির্বাচন করুন। তারপর ECR রিপোজিটরি থেকে ইমেজ পছন্দ করুন। - ফাংশন ডিপ্লয় করুন
ইমেজ পুশ করার পর, Lambda কনসোলে গিয়েই ফাংশনটি ডিপ্লয় করুন।
সারাংশ
AWS Lambda ফাংশন ডিপ্লয় করার জন্য দুটি প্রধান পদ্ধতি রয়েছে: ZIP Deployment Package এবং Container Image। ZIP প্যাকেজ সহজ এবং দ্রুত ব্যবহারের জন্য উপযুক্ত, যেখানে কোড ও ডিপেনডেন্সি একটি ZIP ফাইলে সংরক্ষিত হয়। অন্যদিকে, কনটেইনার ইমেজ পদ্ধতি অধিক কাস্টমাইজেশন এবং কনটেইনারাইজড পরিবেশ ব্যবহারের জন্য উপযুক্ত, যেখানে একটি Docker ইমেজ Lambda ফাংশন হিসেবে পুশ করা হয়। এই দুটি পদ্ধতি AWS Lambda ফাংশন ডিপ্লয়মেন্টের জন্য সুবিধাজনক এবং শক্তিশালী টুলস প্রদান করে।
Read more