AWS Lambda সার্ভার ম্যানেজ না করেই আপনার কোড চালায় — আপনি শুধুমাত্র এক্সিকিউশন সময়ের জন্য অর্থ প্রদান করেন এবং এটি স্বয়ংক্রিয়ভাবে শূন্য থেকে হাজার হাজার সমকালীন অনুরোধে স্কেল করে। এই গাইড স্ক্র্যাচ থেকে API গেটওয়ে সহ ল্যাম্বডাতে একটি পাইথন API স্থাপন করে।
📋 Table of Contents
- ল্যাম্বডা কখন ব্যবহার করবেন
- পদ্ধতি 1: সাধারণ ল্যাম্বডা ফাংশন (কনসোল)
- প্যাকেজিং নির্ভরতা
- এর মত প্যাকেজের জন্য পদ্ধতি 2: সার্ভারহীন ফ্রেমওয়ার্ক (প্রস্তাবিত)
- API গেটওয়ে ইভেন্টগুলি পরিচালনা করা কোল্ড স্টার্টস পরিচালনা
- Lambda "ঠান্ডা শুরু" যখন একটি নতুন ধারক ঘূর্ণায়মান হয় (প্রথম অনুরোধ বা নিষ্ক্রিয় পরে)। প্রভাব ছোট করুন:
- প্রায়শই জিজ্ঞাসিত প্রশ্ন
- প্রশ্নঃ ল্যাম্বডা কত খরচ করে?
- AWS Lambda আপনাকে Python API গুলি স্থাপন করতে দেয় যা স্বয়ংক্রিয়ভাবে স্কেল করে এবং নিষ্ক্রিয় অবস্থায় কিছু খরচ করে না। সার্ভারহীন ফ্রেমওয়ার্ক পদ্ধতি —
ল্যাম্বডা কখন ব্যবহার করবেন
- ভালো ফিট: পরিবর্তনশীল ট্রাফিক, নির্ধারিত কাজ, ইভেন্ট প্রসেসিং, ওয়েবহুক, লাইটওয়েট মাইক্রোসার্ভিস সহ APIs
- দুর্বল ফিট: দীর্ঘ-চলমান প্রক্রিয়া (15-মিনিট সীমা), ধারাবাহিকভাবে উচ্চ ট্র্যাফিক (সর্বদা চালু সার্ভারে সস্তা), অবিরাম সংযোগ প্রয়োজন এমন অ্যাপ্লিকেশন (ওয়েবসকেটগুলির API গেটওয়ে v2 প্রয়োজন)
পদ্ধতি 1: সাধারণ ল্যাম্বডা ফাংশন (কনসোল)
# handler.py — the entry point
import json
def lambda_handler(event, context):
# event contains the request data
name = event.get('queryStringParameters', {}).get('name', 'World')
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps({'message': f'Hello, {name}!'})
}
প্যাকেজিং নির্ভরতা
Lambda আপনার নির্ভরতা বান্ডিল প্রয়োজন.requests:
# Install dependencies into a package directory
mkdir package
pip install requests -t package/
# Add your handler
cp handler.py package/
# Zip it
cd package
zip -r ../deployment.zip .
cd ..
# Upload deployment.zip to Lambda
এর মত প্যাকেজের জন্য পদ্ধতি 2: সার্ভারহীন ফ্রেমওয়ার্ক (প্রস্তাবিত)
npm install -g serverless
serverless create --template aws-python3 --path my-api
cd my-api
npm install serverless-python-requirements
# serverless.yml
service: my-api
provider:
name: aws
runtime: python3.12
region: us-east-1
environment:
STAGE: ${sls:stage}
DB_URL: ${env:DB_URL}
functions:
api:
handler: handler.lambda_handler
events:
- httpApi:
path: /hello
method: get
- httpApi:
path: /users/{id}
method: get
timeout: 29
memorySize: 256
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: true # builds native deps in a Lambda-compatible container
# requirements.txt
requests==2.32.0
boto3==1.34.0
# Deploy
serverless deploy
# Output gives your API Gateway URL:
# endpoint: GET - https://abc123.execute-api.us-east-1.amazonaws.com/hello
API গেটওয়ে ইভেন্টগুলি পরিচালনা করা কোল্ড স্টার্টস পরিচালনা
import json
def lambda_handler(event, context):
# httpApi (v2) event structure
method = event['requestContext']['http']['method']
path = event['requestContext']['http']['path']
params = event.get('pathParameters') or {}
query = event.get('queryStringParameters') or {}
body = json.loads(event['body']) if event.get('body') else {}
if path.startswith('/users/'):
user_id = params.get('id')
return respond(200, {'userId': user_id})
return respond(404, {'error': 'Not found'})
def respond(status, data):
return {
'statusCode': status,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps(data)
}
Lambda “ঠান্ডা শুরু” যখন একটি নতুন ধারক ঘূর্ণায়মান হয় (প্রথম অনুরোধ বা নিষ্ক্রিয় পরে)। প্রভাব ছোট করুন:
প্যাকেজটি ছোট রাখুন:
- কম নির্ভরতা = দ্রুত ঠান্ডা শুরু। শুধুমাত্র আপনি যা ব্যবহার করেন তা আমদানি করুন।হ্যান্ডলারের বাইরে শুরু করুন:
- ডাটাবেস ক্লায়েন্ট এবং কনফিগার প্রতি কন্টেইনারে একবার লোড হয়, উষ্ণ আহ্বান জুড়ে পুনরায় ব্যবহার করা হয়প্রভিশনড কনকারেন্সি ব্যবহার করুন
- লেটেন্সি-ক্রিটিকাল এন্ডপয়েন্টের জন্য (পাত্রকে গরম রাখে, অতিরিক্ত খরচ হয়)স্মৃতিশক্তি বাড়াও:
- আরও মেমরি মানে আরও বেশি সিপিইউ, শুরুর সময় কমানোএনভায়রনমেন্ট ভেরিয়েবল এবং সিক্রেটস
# ✅ Initialize clients OUTSIDE the handler (reused across invocations)
import boto3
dynamodb = boto3.resource('dynamodb') # created once per container
table = dynamodb.Table('users')
def lambda_handler(event, context):
# table is already initialized — no per-request setup cost
return table.get_item(Key={'id': '1'})
প্রায়শই জিজ্ঞাসিত প্রশ্ন
# Non-sensitive config: environment variables (serverless.yml)
environment:
LOG_LEVEL: info
# Sensitive secrets: use AWS Secrets Manager or SSM Parameter Store
import boto3
ssm = boto3.client('ssm')
def get_secret(name):
resp = ssm.get_parameter(Name=name, WithDecryption=True)
return resp['Parameter']['Value']
DB_PASSWORD = get_secret('/myapp/db_password') # loaded once per container
প্রশ্নঃ ল্যাম্বডা কত খরচ করে?
উত্তর: বিনামূল্যের স্তরে 1M অনুরোধ এবং 400,000 GB-সেকেন্ড মাসিক অন্তর্ভুক্ত রয়েছে। এর বাইরে, আপনি প্রতি অনুরোধ এবং প্রতি GB-সেকেন্ড কার্যকর করার জন্য অর্থ প্রদান করেন। পরিবর্তনশীল-ট্র্যাফিক API-এর জন্য, এটি সর্বদা-অন-অন সার্ভারের চেয়ে অনেক সস্তা।
প্রশ্নঃ সর্বোচ্চ কার্যকর করার সময় কত?
A: 15 মিনিট। দীর্ঘ কাজের জন্য, একাধিক Lambdas অর্কেস্ট্রেট করতে AWS স্টেপ ফাংশন ব্যবহার করুন, অথবা দীর্ঘ-চলমান প্রক্রিয়াগুলির জন্য ECS/Fargate-এ যান।
প্রশ্ন: আমি কীভাবে ল্যাম্বডাকে একটি ডাটাবেসের সাথে সংযুক্ত করব?
উত্তর: সার্ভারহীন-বান্ধব ডেটাবেসের জন্য, DynamoDB বা Aurora Serverless ব্যবহার করুন। প্রথাগত Postgres/MySQL-এর জন্য, সংযোগ পুলিং পরিচালনা করতে RDS প্রক্সি ব্যবহার করুন (Lambda এর স্কেলিং অন্যথায় DB সংযোগগুলি নিঃশেষ করতে পারে)।
প্রশ্ন: আমি কি ল্যাম্বডাতে একটি সম্পূর্ণ ওয়েব ফ্রেমওয়ার্ক চালাতে পারি?
উত্তর: হ্যাঁ — Lambda-তে WSGI/ASGI অ্যাপগুলিকে মানিয়ে নিতে Mangum (FastAPI/Starlette-এর জন্য) বা Zappa (Flask/Django-এর জন্য) ব্যবহার করুন। বিদ্যমান অ্যাপগুলি স্থানান্তরিত করার জন্য ভাল, যদিও নেটিভ হ্যান্ডলারগুলি হালকা।
প্রশ্ন: আমি কীভাবে স্থানীয়ভাবে ল্যাম্বডাকে ডিবাগ করব?
উঃ ব্যবহার
অথবা AWS SAM CLI এরserverless invoke local স্থানীয়ভাবে ফাংশন চালানোর জন্য। ক্লাউডওয়াচ লগগুলি সমস্ত প্রোডাকশন এক্সিকিউশন লগ ক্যাপচার করে।sam local start-apiউপসংহার
AWS Lambda আপনাকে Python API গুলি স্থাপন করতে দেয় যা স্বয়ংক্রিয়ভাবে স্কেল করে এবং নিষ্ক্রিয় অবস্থায় কিছু খরচ করে না। সার্ভারহীন ফ্রেমওয়ার্ক পদ্ধতি —
প্লাসserverless.yml — প্যাকেজিং, API গেটওয়ে এবং একটি কমান্ডে স্থাপনা পরিচালনা করে। কোল্ড-স্টার্ট খরচ কমাতে হ্যান্ডলারের বাইরের ক্লায়েন্টদের সূচনা করুন, শংসাপত্রের জন্য এসএসএম/সিক্রেটস ম্যানেজার ব্যবহার করুন এবং লেটেন্সি সত্যিকার অর্থে গুরুত্বপূর্ণ হলেই প্রভিশনড কনকারেন্সিতে পৌঁছান। এটি পরিবর্তনশীল-ট্রাফিক API এবং ইভেন্ট-চালিত কাজের চাপের জন্য একটি চমৎকার ফিট।serverless-python-requirements — প্যাকেজিং, API গেটওয়ে এবং একটি কমান্ডে স্থাপনা পরিচালনা করে। কোল্ড-স্টার্ট খরচ কমাতে হ্যান্ডলারের বাইরের ক্লায়েন্টদের সূচনা করুন, শংসাপত্রের জন্য এসএসএম/সিক্রেটস ম্যানেজার ব্যবহার করুন এবং লেটেন্সি সত্যিকার অর্থে গুরুত্বপূর্ণ হলেই প্রভিশনড কনকারেন্সিতে পৌঁছান। এটি পরিবর্তনশীল-ট্রাফিক API এবং ইভেন্ট-চালিত কাজের চাপের জন্য একটি চমৎকার ফিট।
🔗 Share this article
✍️ Leave a Comment