AWS Lambda là gì?
AWS Lambda là dịch vụ serverless compute cho phép bạn chạy code mà không cần quản lý server. Bạn chỉ cần triển khai function, định nghĩa trigger, và Lambda sẽ tự động scale theo nhu cầu.
Lambda được thiết kế theo mô hình Event-Driven: một Event từ dịch vụ AWS khác (ví dụ: S3, DynamoDB, API Gateway) sẽ kích hoạt Function chạy.
Cách hoạt động
- Một event được gửi đến Lambda (ví dụ upload file lên S3).
- Lambda thực thi function đã được định nghĩa (code do bạn viết).
- Kết quả được trả về cho dịch vụ hoặc ứng dụng gọi.
Người dùng chỉ trả phí cho thời gian chạy function và số request.
Các thành phần chính
- Function: code bạn viết (hỗ trợ Node.js, Python, Java, Go, C#, Ruby, v.v.)
- Handler: điểm bắt đầu của function (entry point).
- Event Source: nguồn phát sinh sự kiện (S3, DynamoDB, API Gateway, v.v.)
- Execution Role: quyền IAM cho phép Lambda truy cập các tài nguyên AWS khác.
Cấu hình cơ bản
- Runtime: môi trường chạy code (Python, Node.js, Java, v.v.)
- Memory: từ 128 MB đến 10 GB (ảnh hưởng đến hiệu năng và chi phí).
- Timeout: tối đa 15 phút cho mỗi lần chạy.
- Concurrency: số lượng function có thể chạy đồng thời (có thể giới hạn để kiểm soát chi phí).
Event Sources phổ biến
- Amazon S3: trigger khi có file được upload hoặc xóa.
- Amazon DynamoDB Streams: xử lý thay đổi dữ liệu trong bảng.
- Amazon API Gateway: gọi Lambda khi có request HTTP.
- Amazon EventBridge / CloudWatch Events: trigger theo lịch hoặc sự kiện hệ thống.
- Amazon SNS / SQS: nhận message và xử lý bất đồng bộ.
Ưu điểm
- Không cần quản lý server.
- Tự động scale theo lượng request.
- Tích hợp hợp được với nhiều services của AWS
- Chi phí thấp và trả theo mức sử dụng thực tế.
Hạn chế của Lambda
- Cold start (độ trễ khi function được gọi lần đầu).
- Giới hạn runtime (15 phút).
- Không phù hợp cho workload cần kết nối lâu dài hoặc xử lý liên tục.
Các use case phổ biến
- Xử lý file: upload ảnh lên S3, Lambda resize và lưu vào bucket khác.
- Backend API: API Gateway gọi Lambda để xử lý logic nghiệp vụ.
- Real-time data processing: Lambda đọc stream từ Kinesis hoặc DynamoDB.
- Automation: chạy job tự động theo lịch với EventBridge.
Cách tính phí Lambda (Lambda Pricing)
Lambda là một dịch vụ có Idle Cost = 0. Người dùng chỉ trả tiền cho chi phí chạy thực tế, cụ thể:
- Thời gian execute của Lambda theo đơn vị GB*second
- Số lượng request
Ví dụ: Bạn có 1 Lambda 512Mb memory, mỗi request chạy trong 5s, 1 tháng có 100,000 requests:
- 250,000 GB*second = $4.175
- (250,000/1,000,000)*0.2 = $0.05