Skip to main content

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 ของโค้ดและติดตามความคืบหน้าจนกว่าจะปล่อยฟังก์ชัน

An image

Lambda Aliases

ถ้าเราต้องการให้ผู้ใช้งานมี endpoint มาตรฐาน เราสามารถใช้ Lambda Aliases

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

An image

คุณสมบัติ:

  • 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 ให้เวอร์ชันต่าง ๆ