AWS Lambda Web Functions: یه وبسرور معمولی Node.js روی Lambda
خلاصهٔ کاملتر
AWS نوع جدیدی از توابع Lambda به اسم Web Functions عرضه کرده. تا امروز کد Lambda همیشه یه event handler بود، یعنی برای هر رویداد (مثل پیام صف یا آپلود فایل تو S3) یه بار صدا زده میشد؛ AWS حالا به این مدل قدیمی میگه Event Function. تو Web Function کدت یه سرور HTTP استاندارده که روی یه پورت گوش میده. پس Express، Fastify و Hono بدون adapter اجرا میشن و Next.js در حالت standalone فقط یه index.js کوچیک برای تنظیم host و port لازم داره.
هر Web Function سه بخش داره: خود تابع، Revision (یعنی یه snapshot تغییرناپذیر از کد و تنظیمات که با هر deploy ساخته میشه و برای rollback به درد میخوره) و Endpoint که یه دامنهٔ HTTPS اختصاصی با نوع احراز هویت و قوانین مسیریابی ترافیکه. فعلاً Node.js 24 روی Arm64 با 2 vCPU و 2 GB حافظه برای هر محیط پشتیبانی میشه و اتصال به VPC هم داره. آدرس گوش دادن از متغیر AWS_LAMBDA_HTTP_ENDPOINT میاد:
const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || "0.0.0.0:3000").split(":");
server.listen(Number(port), host);تفاوت اصلی تو همزمانیه. Event Function هر بار فقط یه درخواست رو جواب میده و بین درخواستها فریز میشه، ولی Web Function یه پروسهٔ طولانیعمره که میتونه کار پسزمینه انجام بده و stream رو باز نگه داره. با maxConcurrencyPerEnvironment تعداد درخواست همزمان هر محیط رو تا 128 تنظیم میکنی (پیشفرض 64). روی endpoint هم maxEnvironments و rateLimit هست تا دیتابیس یا APIهای پاییندستی زیر بار نرن. درخواستهای بیش از حد، HTTP 429 میگیرن و صف نمیشن.
تو تست نویسنده، 300 درخواست streaming که تا 200 تاش همزمان باز بود فقط با 5 محیط جواب داده شد. اوج اتصال روی یه محیط 59 بود و کل CPU مصرفی همهٔ محیطها حدود 4.75 ثانیه. به گفتهٔ نویسنده، با Event Function همین 200 stream باز میتونست تا 200 محیط لازم داشته باشه.
مدل هزینه هم active-CPU billing هست، یعنی بابت درخواستها، حافظه و زمانی که CPU واقعاً کار میکنه پول میدی، نه کل زمانی که پروسه زندهست. پس وقتی کدت منتظر دیتابیس یا یه مدل AI هست، این انتظار ارزونتر از مدل wall-clock درمیاد.
با endpoint از نوع MultiRegion کد و تنظیمات به چند منطقه کپی میشه و Route 53 هر درخواست رو به نزدیکترین منطقه میفرسته. تو تست نویسنده از انگلیس، تأخیر از 90 میلیثانیه (us-east-1) به 16 میلیثانیه (لندن) رسید. احراز هویت هم دو حالت داره: ApplicationManaged که endpoint عمومیه و خود کدت احراز هویت میکنه، و IamAuth با امضای SigV4. برای دامنهٔ اختصاصی و WAF باید CloudFront رو جلوش بذاری.
نکات کلیدی:
- Web Functions نوع دوم توابع Lambda هست که یه سرور HTTP معمولی Node.js رو بدون adapter اجرا میکنه.
- در شروع کار: Node.js 24 روی Arm64، با 2 vCPU و 2 GB حافظه برای هر محیط.
- هر محیط تا 128 درخواست همزمان جواب میده (پیشفرض 64)؛ درخواستهای اضافه HTTP 429 میگیرن.
- هزینه بر اساس CPU فعال، حافظه و تعداد درخواست حساب میشه، نه زمان کل اجرا.
- deploy با یه دستور aws lambda-web deploy یا CloudFormation انجام میشه.
- endpoint چندمنطقهای با مسیریابی Route 53 تو تست، تأخیر رو از 90 به 16 میلیثانیه رسوند.




