15.6
Amazon API Gateway
API type আর endpoint type, integration, নিরাপত্তা, throttling আর caching, আর API Gateway বনাম ALB।
24 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই লেসন শেষে তুমি পারবে
- Serverless API-র সামনের দরজা হিসেবে Amazon API Gateway কী করে (client → API Gateway → Lambda → DynamoDB) সেটা বুঝিয়ে বলতে, আর কোন কোন কাজ সে তোমার ঘাড় থেকে নামিয়ে দেয় তার তালিকা দিতে: routing, stage, security, API key আর usage plan, throttling, validation, transformation, caching, OpenAPI import, WebSocket।
- তিন রকম API, মানে REST, HTTP আর WebSocket-এর মধ্যে feature আর দাম দেখে বেছে নিতে।
- একটা API-কে Lambda function (proxy বা custom), HTTP backend, Kinesis Data Streams-এর মতো AWS service, বা mock-এর সাথে জুড়তে, আর 500-এর পেছনে লুকানো permission-এর অভাব ধরে ঠিক করতে।
- Endpoint type বেছে নিতে, edge-optimized, Regional নাকি private, আর ঠিক Region-এর ACM certificate দিয়ে তাতে custom domain বসাতে।
- IAM (SigV4), Cognito user pool, Lambda authorizer, resource policy আর AWS WAF দিয়ে API সুরক্ষিত করতে, আর 401 আর 403-এর তফাত বুঝতে।
- যে limit-গুলো design ঠিক করে দেয় সেগুলো কাজে লাগাতে (২৯ সেকেন্ডের integration timeout, ১০ MB payload, account-এ সেকেন্ডে ১০,০০০ request, cache TTL ৩০০ থেকে ৩,৬০০ সেকেন্ড পর্যন্ত), আর API Gateway, ALB আর Lambda function URL-এর মধ্যে বেছে নিতে।
#একটা API-র কেন সামনের দরজা লাগে
Mobile app, website বা partner-এর server কখনো সরাসরি তোমার database-এর সাথে কথা বলে না। সে call করে একটা API-কে: কিছু HTTPS ঠিকানা, যেমন GET /products/42 বা POST /orders। এই call-গুলো কাউকে না কাউকে নিতে হবে, কে call করছে যাচাই করতে হবে, বন্যার মতো request এলে থামাতে হবে, প্রতিটা call ঠিক code-এর কাছে পাঠাতে হবে, তারপর উত্তর ফেরত দিতে হবে। Server-ভিত্তিক design-এ এই কাজ করে তোমার web server আর নিজের লেখা একগাদা middleware, যেগুলো patch-ও তোমাকেই করতে হয়।
Amazon API Gateway একটা fully managed service, যে ঠিক এই কাজটা করে। Note-এ একে বলা হয়েছে client (mobile app, website) আর তোমার backend (Lambda, EC2, DynamoDB)-এর মাঝখানের সামনের দরজা বা front door। এটা তোমাকে API বানাতে, publish করতে, রক্ষণাবেক্ষণ করতে, নজরে রাখতে আর সুরক্ষিত করতে সাহায্য করে। টাকা দাও call ধরে; কোনো server নেই, আর কেউ call না করলে কোনো খরচও নেই।
#একটা serverless API, শুরু থেকে শেষ
চেনা serverless API-তে চারটা বাক্স: client HTTPS request পাঠায় API Gateway-কে, সে সেটা (proxy হিসেবে) পাঠায় একটা Lambda function-এর কাছে, আর function একটা DynamoDB table-এ CRUD করে। চারটার কোনোটাতেই তোমার চালানো server লাগে না, চারটাই traffic-এর সাথে বাড়ে-কমে, আর ভোর ৪টায় bill প্রায় শূন্যে নেমে যায়। Note-এর প্রথম exam trick: প্রশ্নে যদি থাকে “serverless architecture” বা “expose AWS Lambda as a RESTful API”, তাহলে উত্তর API Gateway।
Lambda নিজে lesson ১৫.১ আর ১৫.২-এ; DynamoDB lesson ১৫.৪-এ। এখানে আমরা request-টার পিছু নেব সামনের দরজা দিয়ে: আগে সব ঠিক থাকলে কী হয়, তারপর যে পাঁচটা চেনা উপায়ে সেটা ভেস্তে যায়।
একটা serverless API: একটা request, শুরু থেকে শেষ
ঢাকার একটা e-commerce shop-এর product API: browser call করে API Gateway-কে, সে চালায় একটা Lambda function, আর function পড়ে DynamoDB থেকে। Patch করার মতো কোনো server তোমার নেই। তারপর দেখো, একই request কোন পাঁচ ভাবে গোলমাল হয়।
পরিস্থিতি
Lambda proxy integration-এ স্বাভাবিক পথ: REST API-র পেছনে DynamoDB-তে CRUD।
Browser API-র HTTPS ঠিকানায় call করে। সামনের দরজা API Gateway-এর হাতে: TLS, URL-এর route (resource /products/{id}, method GET), আর path-এর stage (prod)।
#API Gateway তোমার জন্য কী কী করে
“Gateway” এই একটা শব্দের পেছনে অনেকগুলো feature। পরীক্ষায় আর আসল project-এ যেগুলো কাজে লাগে:
| Feature | কী দেয় | উদাহরণ |
|---|---|---|
| কোনো infrastructure নেই | পেছনে Lambda থাকলে patch বা scale করার মতো কিছুই নেই | মাসে কয়েক ডলারে চলা একটা startup API |
| Route আর method | Resource আর method (REST) বা route (HTTP) প্রতিটা path আর verb-কে একটা backend-এর সাথে জোড়ে | GET /products/{id} → function A, POST /orders → function B |
| Stage | একই API-র কয়েকটা deploy করা কপি: dev, test, prod, প্রত্যেকটার নিজের URL আর setting | https://abc123.execute-api.ap-southeast-1.amazonaws.com/prod |
| Versioning | Client-রা v2-তে যেতে যেতে v1 চালু রাখা (আলাদা stage, আলাদা API বা path) | পুরোনো app version এখনো /v1/orders call করে |
| Security | IAM, Cognito, Lambda authorizer, resource policy, WAF, mutual TLS | Rider-রা Cognito দিয়ে sign in করে |
| API key, usage plan, throttling | প্রতিটা client-কে চেনা, তার rate আর মাসিক quota বেঁধে দেওয়া | Partner-দের জন্য একটা free আর একটা paid plan |
| Request validation আর transformation | Backend চলার আগেই ভুল input ফেরত দেওয়া; mapping template দিয়ে request আর response-এর আকার বদলানো | Product ID ছাড়া order এলে 400 |
| Caching | একটা TTL পর্যন্ত response রেখে দেওয়া, যাতে একই call বারবার backend-এ না যায় | Delivery zone ৫ মিনিট cache-এ |
| OpenAPI (Swagger) import আর export | পুরো API একটা file-এ সংজ্ঞায়িত করা; export করে client SDK আর documentation বানানো | Mobile team একটা বানিয়ে দেওয়া Android SDK পায় |
| WebSocket | দুই দিকে, অনেকক্ষণ খোলা connection, server থেকে push | Rider-এর live location |
| Monitoring | CloudWatch metric (Count, Latency, IntegrationLatency, 4XXError, 5XXError, CacheHitCount), access আর execution log, X-Ray tracing | 5XX error-এর ওপর একটা alarm |
#Stage আর deployment
REST API-তে কোনো method বদলালে client-রা কিছুই টের পায় না, যতক্ষণ না তুমি সেটা একটা stage-এ deploy করো। Deployment হলো API-র একটা snapshot; stage একটা deployment-এর দিকে দেখায় আর নিজের setting যোগ করে: throttling, caching, logging, WAF, আর stage variable (key–value জোড়া, যেমন lambdaAlias=prod, যাতে prod stage function-এর prod alias call করে আর dev call করে dev)। Stage-এর canary setting দিয়ে সবাইকে দেওয়ার আগে নতুন deployment-এ traffic-এর ছোট একটা অংশ পাঠানো যায়। HTTP API প্রতিটা পরিবর্তন নিজে থেকেই একটা stage-এ auto-deploy করতে পারে, dev-এর জন্য খুব কাজের।
Note অনুযায়ী: stage দিয়ে একই API-র কয়েকটা version বা environment (dev, test, prod) পাশাপাশি চালানো যায়। Lambda alias (lesson ১৫.১)-এর সাথে মিলিয়ে এভাবেই নতুন version ছাড়া হয়, মানুষের ফোনে আগে থেকে থাকা app না ভেঙে।
#REST, HTTP নাকি WebSocket API
API Gateway তিন রকম API দেয়। পরীক্ষা বেশিরভাগ সময় শুধু “API Gateway” বলে, আর বোঝায় REST API; আসল project-এ ভেবেচিন্তে বেছে নেওয়া উচিত।
| REST API | HTTP API | WebSocket API | |
|---|---|---|---|
| কথা বলার ধরন | Request–response | Request–response | দুই দিকে, অনেকক্ষণ খোলা connection, server থেকে push |
| Endpoint type | Edge-optimized (default), Regional, private | শুধু Regional | Regional |
| দাম (us-east-1, প্রথম ধাপ) | প্রতি ১০ লাখ request-এ প্রায় $৩.৫০ | প্রতি ১০ লাখ request-এ প্রায় $১.০০ | প্রতি ১০ লাখ message-এ প্রায় $১.০০ + প্রতি ১০ লাখ connection-minute-এ $০.২৫ |
| API key, usage plan, client ধরে throttling | আছে | নেই | নেই |
| Caching | আছে (০.৫–২৩৭ GB, ঘণ্টা ধরে bill) | নেই | নেই |
| Request validation, body transformation, mock integration | আছে | নেই (শুধু parameter mapping) | Route selection আর কিছু mapping |
| AWS WAF, resource policy, private endpoint | আছে | নেই | WAF নেই |
| Authorizer | IAM, Cognito user pool, Lambda | IAM, JWT (Cognito বা যেকোনো OIDC issuer), Lambda | IAM, Lambda ($connect-এ) |
| Integration timeout | ৫০ ms – ২৯ সে (Regional/private বেশি চাইতে পারে) | সর্বোচ্চ ৩০ সে, বদলানো যায় না | ২৯ সে |
| বাড়তি যা আছে | Canary deployment, X-Ray, execution log, developer portal, response streaming | Automatic deployment, Cloud Map-এ private integration, কম latency | $connect, $disconnect, $default route; @connections callback |
AWS documentation-এর সোজা নিয়ম: API key, client ধরে throttling, request validation, WAF, caching বা private endpoint লাগলে REST নাও; না লাগলে HTTP নাও, কারণ সেটা সস্তা আর দ্রুত।
#এক অনুচ্ছেদে WebSocket API
WebSocket API client আর API Gateway-এর মধ্যে একটা connection খোলা রাখে। Client JSON message পাঠায়; $request.body.action-এর মতো একটা route selection expression প্রতিটা message-কে একটা route-এ পাঠায় (sendMessage, updateLocation), আর আছে তিনটা বিশেষ route: $connect (authorize করা আর connection ID রেখে দেওয়া, যেমন DynamoDB-তে), $disconnect (গুছিয়ে ফেলা) আর $default। কোনো client-কে message push করতে backend সেই client-এর connection ID দিয়ে @connections callback URL call করে। একটা connection সর্বোচ্চ ২ ঘণ্টা টেকে, আর ১০ মিনিট চুপচাপ থাকলে বন্ধ হয়ে যায়; একটা message ১২৮ KB পর্যন্ত হতে পারে (৩২ KB-র frame-এ)। Chat app, live dashboard, multiplayer game, আর ride-sharing map-এ rider-এর icon নড়াচড়া, সবই এখানে মানায়।
#Integration: দরজার পেছনে কী থাকে
Integration একটা route বা method-কে একটা backend-এর সাথে জোড়ে। Slide-এ বড় দাগে তিন রকম, আর REST API-তে চতুর্থ একটা।
- Lambda function। Lambda-চালিত REST API খুলে দেওয়ার সহজ উপায়।
- Lambda proxy (
AWS_PROXY): পুরো request (path, query string, header, body, caller-এর পরিচয়) হয়ে যায় event; function ফেরত দেয়statusCode,headersআর একটা stringbody। প্রায় সবাই এটাই ব্যবহার করে। - Lambda custom (non-proxy,
AWS): mapping template (VTL-এ লেখা) request-কে event-এর আকারে আর function-এর ফলকে HTTP response-এর আকারে বদলায়। পুরোনো, খাটুনিও বেশি, তবে function-কে HTTP নিয়ে কিছু জানতে হয় না।
- Lambda proxy (
- HTTP। যেকোনো HTTP endpoint-এ পাঠানো: EC2 বা container-এর সামনের একটা ALB, অফিসের ভেতরের একটা পুরোনো API, partner-এর URL। যা আগে থেকেই চলছে তার সামনে API Gateway বসাব কেন? যাতে সেটা না ছুঁয়েই rate limiting, caching, authentication আর API key যোগ করা যায়। VPC-র ভেতরের backend-এ (private ALB বা NLB) পৌঁছাতে লাগে একটা VPC link।
- AWS service। মাঝে কোনো Lambda ছাড়াই সরাসরি যেকোনো AWS API call করা: SQS-এ
SendMessage, Step Functions workflow চালু করা, Kinesis Data Streams-এPutRecord, DynamoDB-তেPutItem। API Gateway call-টা sign করে তোমার দেওয়া একটা IAM role দিয়ে। কেন? Code ছাড়াই service-এর সামনে authentication, একটা public HTTPS ঠিকানা আর rate নিয়ন্ত্রণ পাওয়ার জন্য। HTTP API একই জিনিস দেয় তৈরি করা “first-class” integration হিসেবে: SQS, EventBridge, Kinesis Data Streams, Step Functions আর আরও কয়েকটা। - Mock (শুধু REST): API Gateway নিজেই একটা নির্দিষ্ট response দিয়ে উত্তর দেয়। Backend তৈরি না হওয়া পর্যন্ত, বা CORS preflight-এর জন্য কাজে লাগে।
Slide-এর AWS service উদাহরণটা একটা clickstream pipeline: client → API Gateway → Kinesis Data Streams → Data Firehose → S3 (.json file)। যেকোনো হারে event নেয়, অথচ তোমার একটা function-ও চলে না (lesson ১৩.৫ আর ১৩.৬)।
API Gateway-এর পেছনে কী থাকে
তিন রকম backend: একটা Lambda function, যেকোনো HTTP endpoint, বা সরাসরি call করা কোনো AWS service-এর API। সাথে একটা mock, আর সবচেয়ে সাধারণ ভুল configuration।
পরিস্থিতি
Lambda-কে REST API হিসেবে খুলে দেওয়ার স্বাভাবিক উপায়।
Client POST /orders call করে। Route-টা proxy mode-এর (AWS_PROXY) একটা Lambda integration-এ জোড়া।
#Endpoint type আর custom domain
একটা API সবসময় একটা Region-এই থাকে। Client কীভাবে সেখানে পৌঁছাবে, সেটা ঠিক করে endpoint type।
| Endpoint type | Client কীভাবে পৌঁছায় | কখন বাছবে |
|---|---|---|
| Edge-optimized (REST-এর default) | Request AWS-এ ঢোকে সবচেয়ে কাছের CloudFront edge location দিয়ে, তারপর AWS backbone ধরে Region-এ যায় | Client-রা সারা পৃথিবীতে ছড়ানো |
| Regional | সরাসরি Region-এর endpoint-এ | Client-রা একই Region-এ বা কাছাকাছি; অথবা তুমি সামনে নিজের CloudFront distribution চাও, caching আর behaviour-এর পুরো নিয়ন্ত্রণসহ |
| Private (শুধু REST) | শুধু একটা VPC থেকে, execute-api-এর একটা interface VPC endpoint দিয়ে (private IP-ওয়ালা একটা ENI, AWS PrivateLink) | এমন internal API, যা কখনোই internet থেকে পৌঁছানো যাবে না; কে ঢুকবে ঠিক করে একটা resource policy |
দুটো কথা slide-এ নেই। প্রথমত, edge-optimized তোমার response edge-এ cache করে না; শুধু network-এর পথটা ছোট করে (API caching আলাদা একটা stage setting)। দ্বিতীয়ত, edge-optimized যে CloudFront distribution ব্যবহার করে সেটা AWS চালায়, তুমি সেটা configure করতে পারো না; CloudFront-এ WAF, geo restriction বা নিজের cache rule চাইলে নিজের distribution-এর পেছনে একটা Regional endpoint রাখো। Interface endpoint নিজে lesson ২২.২-এ।
#Custom domain name আর ACM certificate
Partner-এর চুক্তিপত্রে কেউ abc123.execute-api.ap-southeast-1.amazonaws.com ছাপতে চায় না। api.shop.example-এর মতো একটা custom domain name এক বা একাধিক API আর stage-এর দিকে দেখায় (API mapping দিয়ে, যেমন /v1 → API A-র stage prod)। এর HTTPS-এর জন্য লাগে AWS Certificate Manager-এর একটা certificate (lesson ২১.৪), আর সেই certificate কোন Region-এ থাকবে, এটা পরীক্ষার খুব প্রিয় খুঁটিনাটি:
- Edge-optimized custom domain → certificate থাকতেই হবে us-east-1-এ (N. Virginia), কারণ পেছনের CloudFront distribution global, আর CloudFront certificate পড়ে ওখান থেকে।
- Regional custom domain → certificate থাকতে হবে API-র নিজের Region-এ।
- তারপর একটা Route 53 alias (A বা AAAA) record, বা একটা CNAME বানাও, যেটা নামটাকে domain-এর target-এর দিকে দেখায় (edge-optimized হলে একটা CloudFront নাম, Regional হলে একটা Regional
d-…execute-apiনাম)। Alias আর CNAME-এর তফাত lesson ৮.২-এ।
২০২৪-এর শেষ থেকে private REST API-তেও custom domain name দেওয়া যায়, access association দিয়ে VPC endpoint-এর সাথে ভাগ করে। ২০২৫-এ API Gateway আরও দুটো জিনিস যোগ করেছে: dual-stack (IPv4 আর IPv6) endpoint (মার্চে, REST, HTTP আর WebSocket API আর custom domain সবগুলোর জন্য), আর custom domain-এ routing rule (জুনে, শুধু REST API-র জন্য: header বা path দেখে কোন API-তে যাবে ঠিক করা, যেমন ধীরে ধীরে v1 থেকে v2-তে সরানোর জন্য)। এগুলো পাশের কথা; পরীক্ষা জিজ্ঞেস করে certificate-এর Region।
Edge-optimized, Regional নাকি private
API সবসময় একটা Region-এই থাকে। Client কীভাবে সেখানে পৌঁছাবে, সেটা ঠিক করে endpoint type: CloudFront edge location হয়ে, সরাসরি Region-এ, নাকি শুধু একটা VPC-র ভেতর থেকে।
পরিস্থিতি
REST API-র default: সারা পৃথিবীর client-দের জন্য।
উপসাগরীয় দেশ আর ইউরোপে থাকা বাংলাদেশি কর্মীরা একটা remittance app ব্যবহার করেন, যার API সিঙ্গাপুরে। Edge-optimized endpoint হলে তাদের request AWS-এ ঢোকে সবচেয়ে কাছের CloudFront edge location দিয়ে।
#Security: API কে call করতে পারবে
Slide-এ user authenticate করার তিনটা উপায় আছে; পুরো তালিকাটা একটু লম্বা।
| উপায় | কার জন্য মানানসই | কীভাবে কাজ করে |
|---|---|---|
IAM authorization (AWS_IAM) | ভেতরের caller, যাদের কাছে আগে থেকেই AWS credential আছে: EC2, ECS task, Lambda, অন্য account | Caller প্রতিটা request SigV4 দিয়ে sign করে; API Gateway signature আর execute-api:Invoke-এর জন্য caller-এর IAM policy দেখে। অন্য account থেকে এলে API-র resource policy-ও লাগে |
| Amazon Cognito user pool | বাইরের user: mobile আর web app-এর user, লাখে লাখে | User Cognito-তে sign in করে JWT token পায়; Cognito authorizer (REST) বা JWT authorizer (HTTP API) তোমার কোনো code ছাড়াই token-এর signature আর মেয়াদ যাচাই করে (lesson ১৫.৭) |
| Lambda authorizer (আগের নাম “custom authorizer”) | তোমার নিজের যুক্তি: বাইরের কোনো identity provider, partner-এর দেওয়া bearer token, নিজের database-এ রাখা key, কোনো header যাচাই | API Gateway তোমার function-কে token (token type) বা header আর context (request type) দিয়ে call করে; function ফেরত দেয় একটা IAM policy (Allow বা Deny) আর একটা principal ID। ফলটা একটা TTL পর্যন্ত cache হয় (default ৩০০ সে, সর্বোচ্চ ৩,৬০০ সে) |
| Resource policy (REST) | উৎস দেখে আটকানো: account, IP range, VPC, VPC endpoint | API-র গায়ে লাগানো একটা JSON policy, বাকি যাচাইয়ের সাথে মিলিয়ে দেখা হয়; private API আর অন্য account থেকে IAM access-এর জন্য লাগবেই |
| AWS WAF (REST) | আক্রমণ: SQL injection, cross-site scripting, খারাপ bot, IP ধরে rate limit | Stage-এ লাগানো একটা web ACL, সবকিছুর আগে মেলানো হয় (chapter ২১, lesson ২১.৬) |
| Mutual TLS | Client certificate-ওয়ালা partner আর device | Client-কে এমন certificate দেখাতে হয় যা S3-এ রাখা তোমার truststore বিশ্বাস করে (custom domain লাগবে) |
Status code ঠিকমতো পড়তে শেখো। 401 Unauthorized মানে “তুমি কে?”: token নেই, বা ভুল, বা মেয়াদ শেষ। 403 Forbidden মানে “তুমি কে জানি, কিন্তু না”: Lambda authorizer Deny দিয়েছে, IAM execute-api:Invoke দেয়নি, resource policy বা WAF উৎসটা আটকেছে। দুটোই ফেরত আসে তোমার backend চলার আগেই, তাই Lambda-র কোনো সময় খরচ হয় না।
API কে call করতে পারবে?
একটা ride-sharing app-এর API backend চালানোর আগে প্রত্যেক caller-কে যাচাই করে: rider-দের জন্য Cognito user pool, partner-এর নিজের token-এর জন্য Lambda authorizer, ভেতরের service-এর জন্য IAM, আর সাথে resource policy ও WAF।
পরিস্থিতি
Rider login করে; API Gateway নিজেই token যাচাই করে।
একজন rider app-এ sign in করে। Cognito user pool লাখো বাইরের user রাখে: sign-up, password, MFA, social login (lesson 15.7)।
#Throttling, usage plan আর caching
#Throttling: চার স্তর
Throttling তোমার backend আর bill-কে request-এর বন্যা থেকে বাঁচায়। API Gateway ব্যবহার করে একটা token bucket: একটা স্থির rate (সেকেন্ডে কতটা request) আর একটা burst (bucket-এর আকার, একসাথে কতটা আসতে পারে)। সীমা পেরোলে caller পায় 429 Too Many Requests, আর তার উচিত exponential backoff দিয়ে আবার চেষ্টা করা। সীমাগুলো এই ক্রমে বসে, আর যেটা সবচেয়ে কড়া সেটাই জেতে:
- Client ধরে (শুধু REST): সেই client-এর API key-র usage plan-এর সীমা, চাইলে method ধরেও।
- Method ধরে: stage-এর method-স্তরের সীমা, যেমন
POST /ordersসেকেন্ডে ২০০। - Stage ধরে: stage-এর সব method-এর default।
- Account আর Region ধরে: default-এ সেকেন্ডে ১০,০০০ request, সাথে ৫,০০০-এর burst bucket, account-এর ওই Region-এর সব REST, HTTP আর WebSocket API মিলিয়ে ভাগাভাগি (কিছু নতুন Region-এ শুরু ২,৫০০ থেকে)। Service Quotas-এ বাড়ানোর আবেদন করা যায়।
Note-এ default বলা আছে সেকেন্ডে ১০,০০০; production-এ যে শব্দটা কামড় দেয় সেটা হলো ভাগাভাগি: একটা API-র হঠাৎ চাপে account-এর বাকি সব API-ও throttle হতে পারে। Stage আর method-এর সীমা বসাও, যাতে কোনো একটা API একাই পুরো account-এর সীমা খেয়ে ফেলতে না পারে।
#Usage plan আর API key
Usage plan (শুধু REST) বলে দেয় একটা client কতটা ব্যবহার করতে পারবে: একটা throttle (rate আর burst) আর একটা quota (দিনে, সপ্তাহে বা মাসে কতটা request)। Client পায় একটা API key, key জোড়া হয় একটা plan-এর সাথে, আর plan জোড়া হয় API-র stage-এর সাথে। যে method-এ key লাগবে সেখানে API key required চালু থাকে। Rate পেরোলে client পায় 429; quota পেরোলে period নতুন না হওয়া পর্যন্ত “Limit Exceeded” সহ 429। Note-এর exam trick: “usage plans”, “API keys” বা “throttling third-party developers” মানে API Gateway (আরও নির্দিষ্ট করে REST API)।
#Response cache করা
Note-এর দ্বিতীয় exam trick: “API-র performance বাড়াও আর backend-এর চাপ কমাও” → API caching চালু করো। একটা REST API-র stage-এ cache রাখা যায়:
- TTL default-এ ৩০০ সেকেন্ড (৫ মিনিট), ০ (caching বন্ধ) থেকে ৩,৬০০ সেকেন্ড পর্যন্ত বদলানো যায়।
- Cache key হলো method আর path, সাথে তুমি যে parameter বাছো (query string, header)। সাবধানে বাছো: কোনো parameter বাদ পড়লে একজনের উত্তর আরেকজনকে দেখানো হয়ে যাবে।
- Cache-এর bill হয় size ধরে ঘণ্টা হিসেবে, ০.৫ GB থেকে ২৩৭ GB, ব্যবহার হোক বা না হোক; একটা cache করা response ১ MB পর্যন্ত হতে পারে।
- পুরো stage cache flush করা যায়, আর method ধরে caching বদলানো যায়। কোনো client
Cache-Control: max-age=0পাঠিয়ে একটা request-এর জন্য cache এড়াতে পারে, যদি তার IAM permissionexecute-api:InvalidateCacheথাকে; এই permission বাধ্যতামূলক রাখো, নইলে যে কেউ তোমার cache এড়িয়ে যাবে। - HTTP আর WebSocket API-তে নিজস্ব cache নেই; লাগলে সামনে CloudFront বসাও।
Caching গতির বদলে টাটকা ভাব কিছুটা ছাড়ে। Flash sale-এর সময় দামের ওপর পাঁচ মিনিটের TTL পুরোনো দাম দেখাতে পারে; data কতটা পুরোনো চলবে সেটা দেখে TTL ঠিক করো, দরকার হলে flush করো।
Throttling, usage plan আর cache
Pathao-র মতো একটা delivery platform তাদের tracking API অন্য company-দের কাছে বিক্রি করে: একটা free plan আর একটা paid plan, প্রত্যেকটা চেনা যায় একটা API key দিয়ে। তারপর account-জোড়া সীমা, আর সেই cache যে Lambda-কে চুপ রাখে।
পরিস্থিতি
Free: সেকেন্ডে ১০টা request, মাসে ১০,০০০। Paid: সেকেন্ডে ৫০০, মাসে ৫০ লাখ।
Paid partner x-api-key header-এ নিজের API key দিয়ে সেকেন্ডে ৪০০টা request পাঠায়। তার usage plan সেকেন্ডে ৫০০ পর্যন্ত দেয়।
#যে limit-গুলো design ঠিক করে দেয়
| Limit | মান | Design-এ এর মানে |
|---|---|---|
| Integration timeout, REST | Default-এ ৫০ ms – ২৯ সে; Regional আর private REST API বেশি চাইতে পারে (জুন ২০২৪), তাতে account-এর throttle quota কমতে পারে; edge-optimized পারে না | লম্বা কাজ synchronous call-এ রাখা চলবে না: 202 ফেরত দাও আর কাজটা পেছনে করো (SQS, Step Functions) |
| Integration timeout, HTTP API | সর্বোচ্চ ৩০ সে, বাড়ানো যায় না | একই |
| Payload size (REST আর HTTP) | ১০ MB | File সরাসরি S3-এ upload করো presigned URL দিয়ে (lesson ১০.১২) |
| Lambda synchronous payload | Request আর response ৬ MB | ১০ MB-র নিচে হলেও Lambda backend ৬ MB-র ওপরে ব্যর্থ হয় |
| Account throttle | ১০,০০০ rps, burst ৫,০০০, Region ধরে, ভাগাভাগি | Stage/method-এর সীমা, quota বাড়ানো, caching |
| Cache TTL | Default ৩০০ সে, ০ – ৩,৬০০ সে | |
| Lambda authorizer cache | Default ৩০০ সে, সর্বোচ্চ ৩,৬০০ সে | বাতিল করা token cache-এর মেয়াদ শেষ না হওয়া পর্যন্ত পার পেয়ে যেতে পারে |
| WebSocket connection | সর্বোচ্চ ২ ঘণ্টা, চুপচাপ ১০ মিনিট | Client-কে আবার connect করতে হয় |
২৯ সেকেন্ডের timeout-টাই পরীক্ষার প্রশ্নে সবচেয়ে বেশি আসে। এর পেছনের ফাঁদ: API Gateway হাল ছেড়ে 504 ফেরত দিলেও Lambda function নিজের timeout (১৫ মিনিট পর্যন্ত) পর্যন্ত চলতেই থাকে আর bill হয়, অথচ তার উত্তর কোথাও পৌঁছায় না। Lambda-র timeout API-র timeout-এর চেয়ে ছোট রাখো।
#যাচাইগুলোর ভেতর দিয়ে একটা request-এর পিছু নাও
এবার সব একসাথে মেলাও। API type, token, client-এর traffic, cache, backend কত সময় নেয় আর body-র size বেছে নাও, তারপর button চাপো আর দেখো কোন যাচাইয়ে request থামে, কোন status code নিয়ে, কত সময় পরে, আর Lambda চলার জন্য টাকা গেল কি না।
API Gateway-এর ভেতর দিয়ে একটা request-এর পিছু নাও
Delivery platform-এর tracking API: Cognito authorizer দিয়ে সুরক্ষিত, usage plan দিয়ে বিক্রি হয়, পেছনে Lambda। Request সাজাও, পাঠাও, তারপর দেখো কোন যাচাইয়ে সেটা থামে আর কেন।
API type
Token
Client-এর traffic
Cache
Backend-এর সময়
Request body
Request-এর পিছু নিতে “Request পাঠাও” চাপো।
#API Gateway বনাম Application Load Balancer
দুটোই client-এর HTTP traffic নেয় আর backend-এ পাঠায়। Note-এর তুলনা, inventory যে সংশোধনগুলো পেয়েছে সেগুলোসহ:
| API Gateway | Application Load Balancer | |
|---|---|---|
| মূল কাজ | API চালানো আর সুরক্ষা দেওয়া, বিশেষ করে serverless (Lambda), তবে HTTP backend আর AWS service-ও | EC2 instance, ECS container, IP address, আর Lambda function-এর মধ্যেও traffic ভাগ করা (lesson ৬.৩) |
| টাকা দেওয়ার ধরন | Request ধরে (সাথে cache-এর ঘণ্টা, বাইরে যাওয়া data); চুপচাপ থাকলে কিছু না | ঘণ্টা ধরে, সাথে LCU (load balancer capacity unit); চালু থাকলেই টাকা কাটে, রাতেও |
| API management | Rate limiting, throttling, API key, usage plan, request validation, transformation | এর কোনোটাই নেই; এটা একটা load balancer। WAF-এর rate-based rule দিয়ে IP ধরে সীমা দেওয়া যায় |
| Caching | নিজস্ব (REST) | নেই |
| Authentication | IAM (SigV4), Cognito, Lambda authorizer, resource policy | HTTPS listener-এ Cognito আর যেকোনো OIDC identity provider |
| Timeout আর size | ২৯ সে (HTTP API ৩০ সে), ১০ MB | Idle timeout default ৬০ সে, ৪,০০০ সে পর্যন্ত; Lambda target-এ request আর response ১ MB |
| WebSocket | WebSocket API (serverless) | তোমার server পর্যন্ত WebSocket connection পার করে দেয় |
| Scale | পুরো managed, account-এ default ১০,০০০ rps | LCU-র সাথে নিজে নিজে বাড়ে, সেকেন্ডে লাখো request |
কোন সামনের দরজা মানায়?
একটা scenario বেছে নাও, আন্দাজ করো, তারপর কারণটা পড়ো। Keyword-গুলো খেয়াল করো: plan আর key, সবচেয়ে সস্তা, push, server বা container, private, একটা function, WAF আর cache।
১. একটা scenario বেছে নাও(প্রথমবারেই ঠিক: 0/7)
একটা delivery platform নিজের tracking API অন্য company-দের জন্য খুলে দিচ্ছে: মাসে ১০,০০০ call-এর একটা free plan আর বেশি সীমার একটা paid plan। প্রত্যেক company পায় নিজের key, আর কেউ অন্যদের ভাগ খেয়ে ফেলতে পারবে না।
২. তোমার উত্তর
#কোথায় গোলমাল হয়
| লক্ষণ | সম্ভাব্য কারণ | সমাধান |
|---|---|---|
| ২৯ সেকেন্ড পরে 504; Lambda-র log বলছে সে পরে শেষ করেছে | কাজটা integration timeout-এর চেয়ে লম্বা | Asynchronous বানাও (202 + SQS বা Step Functions + polling বা WebSocket); কাজ দ্রুত করো; Regional/private REST হলে বেশি timeout চাও |
| 502 Bad Gateway “Malformed Lambda proxy response” | Function statusCode, headers, string body ছাড়া অন্য কিছু ফেরত দিয়েছে, বা error ছুড়েছে | Proxy format-এ ফেরত দাও; body-কে JSON.stringify করো; function-এর log পড়ো |
| 500, log-এ “Invalid permissions on Lambda function” | apigateway.amazonaws.com-এর জন্য resource-based policy নেই | API-র source ARN দিয়ে aws lambda add-permission |
| 413 Request Entity Too Large | Body ১০ MB-র বেশি (Lambda হলে ৬ MB-র বেশি) | Presigned S3 upload |
| শুধু একটা client পাচ্ছে 429 | তার usage plan-এর rate বা quota | Backoff দিয়ে আবার চেষ্টা; plan upgrade |
| সবাই পাচ্ছে 429, সব API জুড়ে | একটা API-র চাপে account-এর সীমা (Region-এ ১০,০০০ rps) ছুঁয়ে গেছে | Stage আর method-এর throttle; quota বাড়ানো; caching |
| 401 | Token নেই, বিকৃত, বা মেয়াদ শেষ | Authorization header পাঠাও; token refresh করো |
| দেখতে ঠিক URL-এ 403 “Missing Authentication Token” | ভুল path বা stage, বা এমন method যা নেই | URL-এর stage-এর নাম আর resource path মিলিয়ে দেখো |
| বৈধ user পাচ্ছে 403 | Lambda authorizer-এর Deny, IAM policy, resource policy বা WAF | কোন স্তর আটকেছে দেখো (execution log, WAF log) |
| Browser console-এ CORS error, অথচ curl চলে | Preflight-এ বা proxy response-এ Access-Control-Allow-Origin নেই | CORS চালু করো; Lambda proxy হলে function-এও header যোগ করো |
| Console-এ বদল করলাম, কিছুই হলো না | REST API stage-এ আবার deploy করা হয়নি | Stage-এ deploy করো (HTTP API-তে auto-deploy) |
| User-রা কয়েক মিনিট ধরে পুরোনো data দেখছে | API cache-এর TTL | ওই method-এর TTL কমাও, cache flush করো, cache key ভেবে বাছো |
| বাতিল করা partner এখনো ঢুকতে পারছে | Lambda authorizer-এর ফল cache-এ | সংবেদনশীল API-তে authorizer-এর TTL ছোট রাখো |
| Custom domain certificate খুঁজে পাচ্ছে না | Edge-optimized domain, অথচ certificate us-east-1-এর বাইরে | us-east-1-এ request বা import করো |
| VPC থেকে private API-তে পৌঁছানো যাচ্ছে না | execute-api-এর interface endpoint নেই, বা resource policy ওই endpoint-কে অনুমতি দেয় না | Endpoint বানাও, aws:SourceVpce-কে অনুমতি দাও |
#System design-এ API Gateway
- Serverless-এর default সামনের দরজা: client → API Gateway → Lambda → DynamoDB, user-এর জন্য Cognito (lesson ১৫.৮-এর to-do app আর blog-এর design)।
- Default-এ HTTP API, আর key, plan, caching, validation, WAF বা private endpoint লাগলে REST API। অনেক company দুটোই চালায়: নিজের app-এর জন্য সস্তা HTTP API, আর partner-দের জন্য একটা REST API।
- Synchronous call ছোট রাখো: কয়েক সেকেন্ডের মধ্যে। এর চেয়ে লম্বা যেকোনো কাজ যায় queue বা workflow দিয়ে, আর client poll করে বা WebSocket-এ কান পেতে থাকে।
- সরাসরি service integration (SQS, Kinesis, Step Functions, DynamoDB) মাঝের “আঠা” Lambda function বাদ দেয়, তাতে টাকা, latency আর concurrency তিনটাই বাঁচে।
- স্তরে স্তরে সুরক্ষা: edge-এ WAF, পরিচয়ের জন্য authorizer, client ধরে usage plan, stage আর method-এর throttle, পেছনের function-এ reserved concurrency (lesson ১৫.২), যাতে একটা বন্যা সব শুষে নিতে না পারে।
- যা অনেকে চায় শুধু সেটাই cache করো; key আর TTL method ধরে বাছো।
- Environment ধরে stage, stage ধরে Lambda alias, ঝুঁকির পরিবর্তনে canary release; সবকিছু OpenAPI বা infrastructure as code-এ লিখে রাখো।
- নজর রাখো:
5XXError,LatencyআরIntegrationLatency-এর ওপর alarm; access log; ধীর পথ খুঁজতে X-Ray।
#নিজে করে দেখো
একটা function-এর সামনে একটা HTTP API, তারপর usage plan আর cache-ওয়ালা একটা REST API, ap-southeast-1-এ, account 111122223333। Output ছোট করে দেখানো।
# 1. Quick-create an HTTP API with a Lambda proxy integration (one route, $default stage, auto-deploy)
aws apigatewayv2 create-api --name shop-http-example --protocol-type HTTP \
--target arn:aws:lambda:ap-southeast-1:111122223333:function:products-example
# { "ApiId": "a1b2c3d4e5", "ApiEndpoint": "https://a1b2c3d4e5.execute-api.ap-southeast-1.amazonaws.com", ... }
# Quick create adds the invoke permission; with a manual setup you must add it yourself:
aws lambda add-permission --function-name products-example \
--statement-id apigw-invoke --action lambda:InvokeFunction \
--principal apigateway.amazonaws.com \
--source-arn "arn:aws:execute-api:ap-southeast-1:111122223333:a1b2c3d4e5/*"
curl -s https://a1b2c3d4e5.execute-api.ap-southeast-1.amazonaws.com/products/42
# {"id":"42","name":"Panjabi","price":2450}
# 2. A REST API (Regional) for partners: create a usage plan with throttle and quota
aws apigateway create-usage-plan --name free-example \
--throttle burstLimit=20,rateLimit=10 --quota limit=10000,period=MONTH \
--api-stages apiId=x9y8z7w6v5,stage=prod
# { "id": "pl4n1d", "name": "free-example", "throttle": {"burstLimit": 20, "rateLimit": 10.0}, ... }
aws apigateway create-api-key --name shop-a-example --enabled
# { "id": "k3y1d", "value": "Ab12Cd34Ef56Gh78Ij90Kl12Mn34Op56Qr78St90", ... }
aws apigateway create-usage-plan-key --usage-plan-id pl4n1d --key-id k3y1d --key-type API_KEY
# 40 calls in one second from the free key: some come back 429
for i in $(seq 40); do curl -s -o /dev/null -w "%{http_code} " \
-H "x-api-key: Ab12Cd34Ef56Gh78Ij90Kl12Mn34Op56Qr78St90" \
https://x9y8z7w6v5.execute-api.ap-southeast-1.amazonaws.com/prod/track/7781 & done; wait
# 200 200 200 ... 429 429 200 429 ...
# 3. Turn on a 0.5 GB cache on the prod stage, TTL 600 s for all methods
aws apigateway update-stage --rest-api-id x9y8z7w6v5 --stage-name prod --patch-operations \
op=replace,path=/cacheClusterEnabled,value=true \
op=replace,path=/cacheClusterSize,value=0.5 \
op=replace,path=/*/*/caching/enabled,value=true \
op=replace,path=/*/*/caching/ttlInSeconds,value=600
# Data changed? Flush the stage cache
aws apigateway flush-stage-cache --rest-api-id x9y8z7w6v5 --stage-name prod
# 4. Check the account throttle limits for the Region
aws apigateway get-account --query throttleSettings
# { "burstLimit": 5000, "rateLimit": 10000.0 }
Loop চলার সময় CloudWatch-এ Count, 4XXError, 5XXError, CacheHitCount আর CacheMissCount metric দেখো। কাজ শেষে cache মুছে দিয়ো: যতক্ষণ থাকে, প্রতি ঘণ্টায় bill হয়।
#সারসংক্ষেপ
মূল কথাগুলো
- API Gateway হলো একটা API-র managed সামনের দরজা: routing, stage, security, API key আর usage plan, throttling, validation, transformation, caching, OpenAPI import, SDK বানানো, WebSocket, request ধরে টাকা। চেনা serverless API: client → API Gateway → Lambda → DynamoDB। “Expose Lambda as a RESTful API” → API Gateway।
- তিন রকম API: REST (সব feature: key, usage plan, cache, validation, WAF, private endpoint; প্রতি ১০ লাখে প্রায় $৩.৫০), HTTP (সস্তা, প্রতি ১০ লাখে প্রায় $১.০০, দ্রুত, JWT authorizer, শুধু Regional, ৩০ সে), WebSocket (দুই দিকে, server push,
$connect/$disconnect,@connections)। - Integration: Lambda proxy (function ফেরত দেয় statusCode, headers, body) বা mapping template-সহ custom; HTTP backend (ALB, অফিসের server, VPC link), যাতে rate limiting, caching, auth আর key যোগ হয়; সরাসরি AWS service-এর API (Kinesis Data Streams → Firehose → S3, SQS, Step Functions), একটা IAM role দিয়ে; mock। Lambda-র
apigateway.amazonaws.com-এর জন্য resource policy লাগে। - Endpoint: edge-optimized (REST-এর default, CloudFront edge হয়ে, তবু এক Region-এ, edge-এ caching নেই), Regional (একই Region-এর client, বা নিজের CloudFront), private (interface VPC endpoint + resource policy)। Custom domain-এর certificate edge-optimized হলে us-east-1-এ, Regional হলে API-র Region-এ; Route 53 alias বা CNAME।
- Security: ভেতরের caller-এর জন্য IAM/SigV4, বাইরের user-এর জন্য Cognito user pool (API Gateway নিজেই JWT যাচাই করে), নিজের যুক্তির জন্য Lambda authorizer (IAM policy ফেরত দেয়, default-এ ৩০০ সে cache), উৎস ধরে resource policy আর WAF। 401 = তুমি কে; 403 = অনুমতি নেই। API key authentication না।
- Throttling: token bucket, account-এ Region ধরে ১০,০০০ rps + ৫,০০০ burst, সব API-র ভাগাভাগি; stage, method আর client ধরে usage plan-এর সীমা; সীমা পেরোলে → 429। Throttling DDoS-এর সুরক্ষা না: WAF আর Shield নাও।
- Caching (শুধু REST): TTL default ৩০০ সে, ০–৩,৬০০ সে, ০.৫–২৩৭ GB ঘণ্টা ধরে bill, stage ধরে, flush করা যায়; “performance বাড়াও আর backend-এর চাপ কমাও” → caching চালু করো।
- Limit: ২৯ সে integration timeout (504, function তবু চলতে থাকে; বাড়ানো যায় শুধু Regional/private REST-এ; ২০২৫ থেকে streaming ১৫ মিনিট পর্যন্ত), ১০ MB payload (Lambda-তে ৬ MB), তাই লম্বা কাজ async-এ আর বড় file presigned URL দিয়ে S3-এ। CORS error → CORS চালু করো।
- API Gateway বনাম ALB: request ধরে দাম + API management + cache + IAM/Cognito/Lambda authorizer, বনাম ঘণ্টা + LCU, EC2/container (আর Lambda)-এর জন্য load balancing, HTTPS listener-এ Cognito/OIDC। “EC2/container-এ monolith” → ALB; “usage plans, API keys, throttle third-party developers” → API Gateway; একটা function, একটা URL → function URL।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
একটা company তাদের mobile app-এর জন্য কয়েকটা AWS Lambda function-কে RESTful API হিসেবে খুলে দিতে চায়, কোনো server না চালিয়ে। Function-গুলোর সামনে কোন service বসবে?
নিজেকে যাচাই করোপ্রশ্ন
API Gateway REST API-র cache-এর default TTL কত, আর কোন সীমার মধ্যে বদলানো যায়?
নিজেকে যাচাই করোপ্রশ্ন
https://shop.example-এর একটা single-page app https://api.shop.example-এর একটা API call করে। curl দিয়ে API ঠিকই চলে, কিন্তু browser console-এ same-origin policy নিয়ে error দেখায় আর call আটকে যায়। Developer কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
কোন feature REST API-তে আছে কিন্তু HTTP API-তে নেই?
নিজেকে যাচাই করোপ্রশ্ন
একটা startup-এর React app ২০টা Lambda-চালিত route call করে। User-রা Amazon Cognito দিয়ে sign in করে। API key, caching বা WAF লাগবে না, আর চাই সবচেয়ে কম খরচ আর latency। কোনটা সবচেয়ে মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
একটা ride-sharing app-কে কয়েক সেকেন্ড পরপর driver-এর অবস্থান যাত্রীর ফোনে push করতে হবে, একটা অনেকক্ষণ খোলা দুই দিকের connection দিয়ে, কোনো server না চালিয়ে। Architect কী ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা news app API Gateway দিয়ে clickstream event পাঠায়। Team চায় event-গুলো Kinesis Data Streams-এ যাক, তারপর JSON file হয়ে S3-এ, আর রক্ষণাবেক্ষণ করার মতো কোনো Lambda function না থাকুক। কোন design মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
Lambda proxy integration-ওয়ালা একটা API 502 Bad Gateway দিচ্ছে। CloudWatch Logs বলছে function চলেছে আর product object ফেরত দিয়েছে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা API Gateway Regional REST API-র পেছনের report endpoint একটা Lambda function call করে, যা ৪৫ সেকেন্ড চলে। Client-রা 504 পাচ্ছে। পরীক্ষার জন্য সবচেয়ে উপযুক্ত সমাধান কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
একটা API Gateway integration ২৯ সেকেন্ড পরে timeout হলো আর client পেল 504। Lambda function-এর কী হলো?
নিজেকে যাচাই করোপ্রশ্ন
একজন seller company-র API দিয়ে ২৫ MB-র product video upload করে, আর upload 413 দিয়ে ব্যর্থ হয়। সুপারিশ করা design কী?
নিজেকে যাচাই করোপ্রশ্ন
API Gateway integration নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
AWS CLI দিয়ে একটা API বানিয়ে একটা Lambda function-এর সাথে জোড়া হয়েছে। প্রতিটা call 500 দিচ্ছে, আর execution log বলছে “Invalid permissions on Lambda function”। কী নেই?
নিজেকে যাচাই করোপ্রশ্ন
একটা remittance app-এর user মধ্যপ্রাচ্য, ইউরোপ আর এশিয়ায়; তার REST API চলে ap-southeast-1-এ। Team চায় দূরের user-দের network পথ সবচেয়ে কম খাটুনিতে ভালো হোক। কোন endpoint type মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
একটা company ap-southeast-1-এর edge-optimized REST API-র জন্য api.remit.example custom domain বানাচ্ছে। ACM certificate কোথায় থাকতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
Private REST API নিয়ে কোন দুটো কথা সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা global API-র দরকার CloudFront-এ AWS WAF rule, geo restriction আর নিজের cache behaviour, যা team নিজে চালাবে। কোন setup মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
Task role নিয়ে ECS-এ চলা ভেতরের microservice-গুলোকে একটা internal API call করতে হবে। Company কোনো token বা password সামলাতে চায় না। API কোন authorization ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা hotel partner API call করে নিজের identity system-এর দেওয়া bearer token দিয়ে, যেটা IAM-ও না, Cognito-ও না। API এগুলো কীভাবে যাচাই করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা partner-এর চুক্তি শেষ, এক মিনিট আগে তার token বাতিল করা হয়েছে, তবু Lambda authorizer দিয়ে আরও কয়েক মিনিট তার call সফল হচ্ছে। কেন?
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো response API Gateway backend একেবারেই না চালিয়ে ফেরত দেয়?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা company নিজের tracking API অন্য company-দের কাছে বিক্রি করে: একটা free tier, সেকেন্ডে ১০ request আর মাসে ১০,০০০ request পর্যন্ত, আর বেশি সীমার একটা paid tier। API Gateway-এর কোন feature এটা বানায়?
নিজেকে যাচাই করোপ্রশ্ন
ঈদের সন্ধ্যায় একটা account-এর একটা API সেকেন্ডে ১৪,০০০ request পায়। একই account আর Region-এর একেবারে অন্য একটা API-ও 429 দিতে শুরু করে। কেন?
নিজেকে যাচাই করোপ্রশ্ন
একটা API-র স্থির সীমা সেকেন্ডে ১০,০০০ request, আর burst-এর জন্য ৫,০০০-এর একটা token bucket। Traffic লাফিয়ে সেকেন্ডে ১৪,০০০ হয় আর সেখানেই থাকে। মোটামুটি কতক্ষণ bucket বাড়তিটা সামলাবে, আর তারপর কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা REST API-র খরচ বেশি, কারণ তার Lambda backend প্রতিটা request-এ delivery zone-এর একই তালিকা পড়ে। Data দিনে প্রায় একবার বদলায়। Performance বাড়ানো আর backend-এর চাপ কমানোর সবচেয়ে সহজ উপায় কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা team একটা REST API-র prod stage-এ ০.৫ GB API cache চালু করে। us-east-1-এ এর দাম ঘণ্টায় প্রায় $০.০২। ৭৩০ ঘণ্টার মাসে মোটামুটি কত খরচ, আর কখন bill হয়?
নিজেকে যাচাই করোপ্রশ্ন
একটা API মাসে ৫ কোটি request পায়। প্রথম ধাপের দাম প্রতি ১০ লাখে $৩.৫০ আর $১.০০ ধরে, REST API আর HTTP API-তে request-এর খরচ মোটামুটি কত?
নিজেকে যাচাই করোপ্রশ্ন
একটা company Auto Scaling group-এর ১২টা EC2 instance-এ একটা monolithic Java application চালায়, সারাদিন স্থির traffic, আর কিছু admin request দুই মিনিট নেয়। HTTPS আর health check লাগবে। সামনে কী বসানো সবচেয়ে মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
Note-এর API Gateway বনাম ALB তুলনার কোন কথাটা সংশোধন করা দরকার?
নিজেকে যাচাই করোপ্রশ্ন
API Gateway-এর throttling নিয়ে কোন কথাটা সত্যি না?
নিজেকে যাচাই করোপ্রশ্ন
Payment সফল হলেই একটা payment provider-কে একটা Lambda function call করতে হবে: একটা HTTPS URL, কোনো routing নেই, API key নেই, caching নেই, আর যত কম setup আর খরচ। কোনটা সবচেয়ে মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
এই লেসনে বলা API Gateway-এর কোন দুটো feature Application Load Balancer-এ নেই?
বেছে নাও ২