Lambda Versions and Aliases
Lambda Versions
จนถึงตอนนี้ เวลาเราทำงานกับ Lambda functions เราใช้เวอร์ชัน LATEST อยู่เสมอ เวอร์ชันนี้เป็น mutable หมายความว่าเราสามารถแก้ไขโค้ดและการตั้งค่าได้
อย่างไรก็ตาม สิ่งที่ยังไม่ได้ทำคือการ publish Lambda function เพื่อสร้างเวอร์ชันใหม่เมื่อเราโอเคกับสถานะโค้ดของเรา
- เมื่อกด publish ฟังก์ชันจะกลายเป็น Version 1 (V1)
- V1 เป็น immutable หมายถึง เราไม่สามารถแก้ไขโค้ด ตัวแปรสภาพแวดล้อม หรือการตั้งค่าอื่น ๆ หลังจาก publish
- การ publish เพิ่มเติมจะสร้างเวอร์ชันต่อ ๆ ไป เช่น V2, V3 … แต่ละเวอร์ชันเป็นอิสระ และมี ARN ของตัวเอง
ข้อดี: วิธีนี้ช่วยให้เราสามารถทำ iteration ของโค้ดและติดตามความคืบหน้าจนกว่าจะปล่อยฟังก์ชัน

Lambda Aliases
ถ้าเราต้องการให้ผู้ใช้งานมี endpoint มาตรฐาน เราสามารถใช้ Lambda Aliases
- Aliases คือ pointer ที่อ้างอิงไปยัง Lambda function version
- สามารถสร้าง alias เช่น DEV, TEST, PROD และชี้ไปยังเวอร์ชันต่าง ๆ

คุณสมบัติ:
- Aliases เป็น mutable → สามารถแก้ไขได้
- ตัวอย่าง: สร้าง alias DEV ชี้ไปที่ LATEST → เราสามารถแก้ไขโค้ดและทดสอบได้ทันที
- สร้าง alias TEST ชี้ไปที่ V2 → ใช้สำหรับทดสอบ
- สร้าง alias PROD ชี้ไปที่ V1 → ใช้งานกับเวอร์ชันที่เสถียร
ทำไมต้องใช้ Aliases?
- Aliases ช่วยให้ทำ canary deployments ได้ → สามารถกำหนด traffic weight ให้แต่ละเวอร์ชัน
ตัวอย่าง:
- ใน PROD ต้องการสลับจาก V1 → V2
- แทนที่จะสลับทันที → ส่ง 95% traffic ไป V1 และ 5% ไป V2
- วิธีนี้ช่วยทดสอบ V2 ใน production ก่อนส่ง traffic 100%
ข้อสำคัญ:
- แต่ละ alias มี ARN ของตัวเอง
- Aliases ไม่สามารถอ้างอิง alias อื่นได้ → สามารถอ้างอิง เวอร์ชันเท่านั้น
Key Takeaways
- Lambda function versions เป็น immutable snapshot ของโค้ดและการตั้งค่า
- การ publish จะสร้างเวอร์ชันใหม่พร้อมเลขเวอร์ชันเพิ่มขึ้น
- Lambda Aliases เป็น pointer แบบ mutable ชี้ไปยังเวอร์ชันเฉพาะ → ช่วยให้ routing ยืดหยุ่น
- Aliases ช่วยทำ canary deployment โดยกำหนด traffic weight ให้เวอร์ชันต่าง ๆ