Lambda Invocation Types
Lambda รองรับการเรียกใช้งาน (invocation) หลายรูปแบบ ซึ่งแตกต่างกันในเรื่อง วิธีจัดการ response และ error handling
Synchronous Invocation
- ผู้เรียกรอผลลัพธ์ทันที
- ใช้โดย: CLI, SDK, API Gateway, ALB, CloudFront (Lambda@Edge)
- Error handling ต้องทำฝั่ง client (retry)
Asynchronous Invocation
- ผู้เรียกไม่ต้องรอผลลัพธ์
- Event ถูกวางใน internal queue แล้ว Lambda process ทีหลัง
- ใช้โดย: S3, SNS, CloudWatch Events/EventBridge
- AWS retry อัตโนมัติ 2 ครั้ง (รวม 3 attempts)
- กำหนด DLQ (SQS/SNS) สำหรับ events ที่ fail
- Lambda Destinations — ส่ง result ไปยัง SQS/SNS/Lambda/EventBridge (ทั้ง success และ failure)
Event Source Mapping
- Lambda poll จาก source: SQS, Kinesis, DynamoDB Streams, MSK, MQ
- Event Source Mapping เรียก Lambda synchronously
- Batching — ประมวลผลหลาย records พร้อมกัน
- Error: ทั้ง batch ถูก reprocess จนกว่าจะสำเร็จ (หรือ items expire)
- DLQ ตั้งที่ SQS, ไม่ใช่ที่ Lambda
สรุป
| รูปแบบ | ตัวอย่าง Service | Retry | Error Handling |
|---|---|---|---|
| Synchronous | API Gateway, CLI, ALB | Client retry | Client จัดการเอง |
| Asynchronous | S3, SNS, EventBridge | AWS retry 2 ครั้ง | DLQ หรือ Destinations |
| Event Source Mapping | SQS, Kinesis, DynamoDB Streams | Reprocess batch | DLQ ตั้งที่ source (SQS) |