Lambda Advanced Features
Lambda Layers
- แชร์ code/libraries ข้าม functions
- สูงสุด 5 layers ต่อ function
- เหมาะสำหรับ: custom runtimes, shared dependencies
Lambda Container Images
- Deploy Lambda เป็น container image ขนาดสูงสุด 10 GB
- Image ต้อง implement Lambda Runtime API
- ใช้ ECR เก็บ images
Versions & Aliases
- Version = snapshot ของ code + configuration (immutable)
- Alias = pointer ไปยัง version (เช่น "prod" -> v3, "dev" -> v4)
- Alias ทำ weighted traffic ได้ (เช่น 95% v1, 5% v2 สำหรับ canary)
- $LATEST = version ที่ mutable
Lambda in VPC
- Default: Lambda ทำงานนอก VPC -> เข้าถึง public internet ได้ แต่ไม่ได้ private resources
- Lambda in VPC: ต้องกำหนด Subnet + Security Group -> สร้าง ENI ใน VPC
- ต้องใช้ NAT Gateway ถ้าต้องการเข้าอินเทอร์เน็ตจาก VPC
Performance
- Memory: 128 MB - 10,240 MB (เพิ่ม memory = เพิ่ม CPU อัตโนมัติ)
- Timeout: สูงสุด 15 นาที (900 วินาที)
- /tmp storage: สูงสุด 10 GB (ephemeral)
- ที่ 1,769 MB memory = 1 vCPU equivalent
Concurrency
- Reserved Concurrency — สงวน concurrency ให้ function นี้เท่านั้น
- Provisioned Concurrency — pre-warm instances เพื่อลด cold start
- Default limit: 1,000 concurrent per region (ขอเพิ่มได้)
- Cold Start: ครั้งแรกอาจช้า โดยเฉพาะ Java, .NET
Lambda@Edge & CloudFront Functions
- CloudFront Functions — lightweight, viewer request/response, sub-ms, JavaScript only
- Lambda@Edge — heavier, viewer + origin request/response, Node.js/Python, 5-30 sec timeout
สรุป
| Feature | รายละเอียด |
|---|---|
| Layers | แชร์ code ข้าม functions (สูงสุด 5 layers) |
| Container Images | Deploy เป็น image สูงสุด 10 GB |
| Versions & Aliases | Immutable snapshots + weighted traffic |
| VPC | ต้องใช้ ENI + NAT Gateway สำหรับ internet |
| Memory/Timeout | 128 MB - 10 GB / สูงสุด 15 นาที |
| Concurrency | Reserved, Provisioned, default 1,000 |
| Edge | CloudFront Functions (lightweight) vs Lambda@Edge (full) |