AWS Documentation · Tiếng Việt

AWS Lambda

Dịch vụ Serverless Compute chạy code mà không cần quản lý server — Tài liệu toàn diện từ kiến trúc, cấu hình đến tối ưu hiệu năng

Cập nhật 04/2026
Compute · Serverless
AWS Core Service
01 · Tổng quan

Lambda là gì?

AWS Lambda là dịch vụ serverless compute của AWS, cho phép bạn chạy code mà không cần provision hay quản lý server. Bạn chỉ cần upload code, Lambda sẽ tự động xử lý mọi thứ cần thiết để chạy và scale ứng dụng với high availability. Bạn chỉ trả tiền cho thời gian compute thực tế sử dụng — tính theo millisecond.

🚀
Serverless
Không cần quản lý server, OS, patching. AWS lo toàn bộ infrastructure.
Event-Driven
Tự động trigger từ 200+ AWS services và SaaS applications.
💰
Pay-per-use
Trả tiền theo số request + thời gian chạy (ms). Free tier 1M requests/tháng.
📈
Auto Scaling
Tự động scale từ 0 đến hàng nghìn concurrent executions trong vài giây.
🔒
Bảo mật tích hợp
IAM roles, VPC integration, encryption at rest. Isolation giữa các execution.
🌍
Đa ngôn ngữ
Hỗ trợ Python, Node.js, Java, Go, .NET, Ruby, và custom runtime.

Mô hình hoạt động

Lambda hoạt động theo mô hình event-driven: một sự kiện (event) xảy ra → Lambda function được invoke → code xử lý event → trả về kết quả. Toàn bộ quá trình diễn ra tự động, không cần bạn can thiệp vào infrastructure.

Use Cases phổ biến

  • API Backend: Kết hợp API Gateway để xây dựng REST/GraphQL API serverless
  • Data Processing: Xử lý file upload trên S3, transform data, ETL pipelines
  • Real-time Stream Processing: Xử lý data từ Kinesis, DynamoDB Streams
  • Scheduled Tasks (Cron): Chạy tác vụ định kỳ với EventBridge/CloudWatch Events
  • Chatbot & IoT: Backend cho Alexa skills, IoT rule actions
  • Image/Video Processing: Resize ảnh, transcode video khi upload lên S3
  • Security Automation: Tự động respond khi phát hiện security event từ GuardDuty
  • CI/CD Pipeline: Custom steps trong CodePipeline, deployment automation

So sánh Lambda vs EC2 vs Fargate

Tiêu chí Lambda (Serverless) EC2 (Server) Fargate (Container)
Quản lý server Không cần Tự quản lý toàn bộ Không cần (serverless container)
Scaling Tự động, tức thì (ms) Auto Scaling Group (phút) Auto Scaling (giây-phút)
Thời gian chạy tối đa 15 phút Không giới hạn Không giới hạn
Memory 128 MB – 10,240 MB Tùy instance type 0.5 GB – 120 GB
Pricing Per request + duration (ms) Per hour/second (chạy liên tục) Per vCPU + memory (giây)
Cold start Có (100ms – vài giây) Không (luôn chạy) Có (chậm hơn Lambda)
Use case phù hợp Event-driven, API, short tasks Long-running, stateful, GPU Microservices, batch jobs
💡 Khi nào chọn Lambda?
Chọn Lambda khi workload của bạn là event-driven, chạy ngắn (<15 phút), traffic không đều (spiky), và bạn muốn tối thiểu chi phí vận hành. Lambda đặc biệt hiệu quả cho API backend, data processing, và automation tasks.

Pricing Model tổng quan

Lambda tính phí dựa trên 3 yếu tố:

  • Số lượng requests: $0.20 / 1 triệu requests (sau free tier 1M requests/tháng)
  • Duration: Tính theo GB-second. Ví dụ: 128 MB chạy 1 giây = 0.125 GB-second
  • Provisioned Concurrency: Phí riêng nếu bạn cấu hình provisioned concurrency
✅ Free Tier hào phóng
Lambda Free Tier bao gồm 1 triệu requests400,000 GB-seconds compute time mỗi tháng — không hết hạn, áp dụng vĩnh viễn cho mọi AWS account.
02 · Kiến trúc

Kiến trúc Lambda

Hiểu kiến trúc bên trong Lambda giúp bạn tối ưu hiệu năng, giảm cold start, và thiết kế ứng dụng serverless hiệu quả hơn.

Execution Environment (Môi trường thực thi)

Mỗi Lambda function chạy trong một execution environment (hay còn gọi là micro-VM) được cách ly hoàn toàn. Execution environment bao gồm:

  • Runtime: Ngôn ngữ lập trình (Python, Node.js, Java, ...)
  • /tmp storage: 512 MB – 10,240 MB ephemeral storage
  • Memory: 128 MB – 10,240 MB (CPU tỷ lệ thuận với memory)
  • Layers: Tối đa 5 layers, tổng unzipped ≤ 250 MB
  • Environment variables: Tối đa 4 KB tổng cộng

Vòng đời Execution Environment

Execution environment trải qua 3 giai đoạn chính:

1. INIT Phase (Cold Start)

  • Tạo execution environment mới
  • Download code và layers
  • Khởi tạo runtime (JVM, Python interpreter, ...)
  • Chạy code ngoài handler (global scope / static initialization)
  • Thời gian: 100ms – vài giây (tùy runtime, package size, VPC)

2. INVOKE Phase (Warm)

  • Gọi handler function với event và context
  • Xử lý logic business
  • Trả về response
  • Thời gian: tùy code của bạn (tối đa 15 phút)

3. SHUTDOWN Phase

  • Sau một khoảng thời gian không có request (thường 5-15 phút)
  • Runtime shutdown hooks được gọi
  • Execution environment bị destroy
  • Mọi data trong /tmp bị xóa
Vòng đời Execution Environment của Lambda ❄️ INIT (Cold Start) 1. Tạo micro-VM 2. Download code + layers 3. Khởi tạo runtime 4. Static initialization ~100ms – vài giây 🔥 INVOKE (Warm) 1. Nhận event + context 2. Chạy handler function 3. Xử lý business logic 4. Return response Tối đa 15 phút 💤 SHUTDOWN 1. Idle timeout 2. Shutdown hooks 3. Destroy environment 4. Xóa /tmp data Sau ~5-15 phút idle 🔄 Warm Invoke (tái sử dụng) Không cần INIT → nhanh hơn nhiều Cold Start: INIT + INVOKE Latency cao hơn (thêm 100ms-10s) Warm Start: chỉ INVOKE Latency thấp (ms)

Cold Start vs Warm Start

❄️ Cold Start
  • Xảy ra khi không có execution environment sẵn
  • Phải trải qua toàn bộ INIT phase
  • Latency thêm: 100ms (Python) → 10s (Java trong VPC)
  • Xảy ra khi: request đầu tiên, scale up, code update
  • Java/C# cold start chậm hơn Python/Node.js
🔥 Warm Start
  • Tái sử dụng execution environment đã có
  • Bỏ qua INIT phase → chỉ chạy INVOKE
  • Latency: vài milliseconds
  • Biến global, DB connections được giữ lại
  • File trong /tmp vẫn còn từ lần chạy trước
⚠️ Lưu ý quan trọng về Warm Start
Không bao giờ giả định function sẽ luôn warm. Luôn thiết kế code để hoạt động đúng trong cả cold start và warm start. Đặc biệt: không lưu state quan trọng trong biến global hay /tmp — chúng có thể bị xóa bất cứ lúc nào.

Firecracker MicroVM

Lambda sử dụng Firecracker — một Virtual Machine Monitor (VMM) do AWS phát triển — để tạo micro-VM cho mỗi execution environment. Firecracker cung cấp:

  • Isolation mạnh: Mỗi function chạy trong VM riêng biệt (không phải container)
  • Boot nhanh: Khởi tạo micro-VM trong <125ms
  • Memory overhead thấp: Mỗi micro-VM chỉ tốn ~5 MB overhead
  • Security: Hardware-level isolation giữa các tenant
03 · Cấu hình

Lambda Function Configuration

Cấu hình đúng Lambda function là bước quan trọng để đảm bảo hiệu năng, chi phí, và reliability. Dưới đây là tất cả các thông số cấu hình quan trọng.

Runtime (Ngôn ngữ hỗ trợ)

Runtime Ngôn ngữ Phiên bản Cold Start Ghi chú
python3.12 Python 3.12 Nhanh (~200ms) Phổ biến nhất, boto3 built-in
nodejs20.x Node.js 20 LTS Nhanh (~200ms) AWS SDK v3 built-in
java21 Java 21 (Corretto) Chậm (~3-8s) Hỗ trợ SnapStart để giảm cold start
dotnet8 C# / .NET .NET 8 Trung bình (~1-3s) Native AOT giảm cold start
provided.al2023 Custom Amazon Linux 2023 Tùy thuộc Go, Rust, C++ qua custom runtime
ruby3.3 Ruby 3.3 Nhanh (~300ms) Ít phổ biến hơn

Handler

Handler là entry point của Lambda function — nơi Lambda gọi khi function được invoke.

Python Handler — lambda_function.py
# Handler format: {file_name}.{function_name}
# Ví dụ: lambda_function.lambda_handler

import json

def lambda_handler(event, context):
    """
    event: dict chứa data từ trigger (S3, API GW, SQS, ...)
    context: object chứa runtime info (request_id, memory, timeout, ...)
    """
    # Xử lý business logic
    name = event.get('name', 'World')

    return {
        'statusCode': 200,
        'body': json.dumps({'message': f'Hello, {name}!'})
    }
Node.js Handler — index.mjs
// Handler format: {file_name}.{export_name}
// Ví dụ: index.handler

export const handler = async (event, context) => {
    const name = event.name || 'World';

    return {
        statusCode: 200,
        body: JSON.stringify({ message: `Hello, ${name}!` })
    };
};

Memory & CPU

Lambda phân bổ CPU tỷ lệ thuận với memory. Đây là cách duy nhất để tăng CPU cho function:

Memory vCPU tương đương Ghi chú
128 MB ~0.08 vCPU Tối thiểu. Chỉ cho task rất nhẹ
512 MB ~0.3 vCPU API đơn giản, CRUD operations
1,024 MB ~0.6 vCPU Phổ biến cho hầu hết workload
1,769 MB 1 vCPU Mốc quan trọng: full 1 vCPU
3,538 MB 2 vCPU Multi-threaded workload
5,307 MB 3 vCPU Data processing nặng
10,240 MB 6 vCPU Tối đa. ML inference, video processing
✅ Mẹo tối ưu Memory
Dùng AWS Lambda Power Tuning (open-source tool) để tìm memory tối ưu. Đôi khi tăng memory lên 2x giúp function chạy nhanh hơn 3x → tổng chi phí thực tế giảm vì duration ngắn hơn.

Timeout

  • Mặc định: 3 giây
  • Tối đa: 900 giây (15 phút)
  • Nên set timeout phù hợp với workload thực tế + buffer
  • API Gateway integration: timeout tối đa 29 giây (giới hạn của API GW)

Environment Variables

Sử dụng Environment Variables
# Python — đọc env var
import os

TABLE_NAME = os.environ['DYNAMODB_TABLE']
STAGE      = os.environ.get('STAGE', 'dev')
API_KEY    = os.environ['API_KEY']  # Nên encrypt bằng KMS

# Node.js — đọc env var
const tableName = process.env.DYNAMODB_TABLE;
const stage = process.env.STAGE || 'dev';
⚠️ Bảo mật Environment Variables
Environment variables được encrypt at rest bằng AWS KMS. Tuy nhiên, chúng hiển thị dạng plaintext trong Lambda Console. Với secrets nhạy cảm (DB password, API keys), nên dùng AWS Secrets Manager hoặc SSM Parameter Store (SecureString) thay vì env vars.

Ephemeral Storage (/tmp)

  • Mặc định: 512 MB, có thể tăng lên 10,240 MB
  • Dùng để cache file, download tạm, xử lý data
  • Tồn tại giữa các warm invocations (nhưng không đảm bảo)
  • Phí thêm: $0.0000000309 / GB-second (phần vượt 512 MB)