[Update] วิธีการใช้งานฟังก์ชัน Application version ใน Elastic Beanstalk

เราสามารถใช้งานฟังก์ชัน Application version ใน Elastic Beanstalk เพื่อสร้าง Environment หรือ Deploy ไปยัง Environment ที่กำลังใช้งานอยู่ได้อย่างง่ายดาย ในบทความนี้จะมาแนะนำเนื้อหาไปพร้อมกับการใช้งานจริงครับ

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

ครั้งนี้จะมาแนะนำเกี่ยวกับการใช้งานฟังก์ชัน Application version ใน Elastic Beanstalk โดยจะเน้นไปที่ฟังก์ชัน Application version ที่มีอยู่ตรงเมนูด้านซ้ายใน Applications ครับ

สิ่งที่ต้องมี

※มี Application ใน Elastic Beanstalk แล้ว
ในบทความนี้จะใช้ชื่อ Applications: tinnakorn

ดูตัวอย่างได้ที่หัวข้อ: สร้าง Application ใน Elastic Beanstalk

※มี Application versions อยู่ในฟังก์ชัน Application แล้ว
หากเคยสร้าง Environment และ Terminate environment ไปแล้ว Application versions จะไม่ถูกลบไปด้วย

ดูตัวอย่างได้ที่หัวข้อ: สร้าง Environment ใน Elastic Beanstalk

ตัวอย่างการใช้งาน Elastic Beanstalk

สามารถเลือกใช้งาน Elastic Beanstalk โดย Deploy Project ตามต้องการได้เลย

วิธีเข้ามาที่ Application versions

เข้ามาที่ Service Elastic Beanstalk แล้วเลือก Applications จากเมนูด้านซ้าย แล้วค้นหาและคลิก Application ของเรา

แล้วเลือก Application versions ใน "Application: Your environment name" จากเมนูด้านซ้าย
ก็จะมีรายการ Version label (โปรเจกต์) ที่ Deploy ไปก่อนหน้านี้ และถ้าไม่เคยสร้าง Environment มาก่อนจะไม่แสดงที่นี่ และไม่สามารถ Upload ไฟล์โปรเจกต์โดยที่ไม่มี Version label ก่อนหน้านี้ได้

Environment ที่จะสร้าง

  • การสร้าง Environment ครั้งนี้จะใช้ชื่อตามนี้
    • Environment: tinnakorn-single
    • Environment: tinnakorn-develop

สร้าง Environment จาก Application versions

การสร้าง Environment ขั้นตอนนี้จะใช้ชื่อ tinnakorn-single

คลิก Application: your_environment_name จากเมนูด้านซ้าย แล้วคลิก Create new environment ด้านขวา

การตั้งค่า Step 1: Configure environment นี้จะอธิบายแค่ในส่วนของ "Application code" เท่านั้น ในส่วนที่เหลือให้ตั้งค่าตามความเหมาะสมของโปรเจกต์ที่ Deploy ได้เลย

หัวข้อ Application code
・Existing version: เลือก version ที่มีอยู่ เช่น 20240319_1454

แล้วเริ่มทำตาม ตัวอย่างการใช้งาน Elastic Beanstalk ในหัวข้อ "สร้าง Environment ใน Elastic Beanstalk" ได้เลย

เมื่อเริ่มต้นระบบเสร็จแล้วให้กลับมาที่หน้าจอ Application versions
ในตัวอย่างนี้จะเห็นว่า Version label ที่ชื่อ 20240319_1454 กำลังทำงานอยู่ใน Environment ของ tinnakorn-single

สร้าง Environment จาก Saved configurations

Copy การตั้งค่า Environment

การ Copy การตั้งค่า Environment นี้จะใช้ชื่อ single

สร้าง Environment จาก Saved configurations

การสร้าง Environment ขั้นตอนนี้จะใช้ชื่อ tinnakorn-develop

เมื่อ Copy การตั้งค่า Environment เสร็จแล้วจะเข้ามาหน้าจอนี้อัตโนมัติ ให้ติ๊ก ที่ Configuration name ของเรา ครั้งนี้คือ single แล้วคลิก Launch environment

การตั้งค่า Step 1: Configure environment นี้จะอธิบายแค่ในส่วนของ "Platform" และ "Application code" เท่านั้น ในส่วนที่เหลือให้ตั้งค่าตามความเหมาะสมของโปรเจกต์ที่ Deploy ได้เลย

หัวข้อ Platform
*หากสร้าง Environment จาก Saved configurations จะเห็นว่าหัวข้อ Platform แสดงเป็น Saved configuration: single ตามที่สร้างไว้ก่อนหน้านี้

หัวข้อ Application code
・Existing version: เลือก version ที่มีอยู่ เช่น 20240326_1147

แล้วเริ่มทำตาม ตัวอย่างการใช้งาน Elastic Beanstalk ในหัวข้อ "สร้าง Environment ใน Elastic Beanstalk" ได้เลย

เมื่อเริ่มต้นระบบเสร็จแล้วให้กลับมาที่หน้าจอ Application versions
ในตัวอย่างนี้จะเห็นว่า Version label ที่ชื่อ 20240326_1147 กำลังทำงานอยู่ใน Environment ของ tinnakorn-develop

Upload Application versions

การ Upload ครั้งนี้จะใช้ชื่อ 20240326_deploy_test

*กรณีที่ไม่มี Version label ใน Application versions อยู่เลยจะไม่สามารถ Upload Version label ได้ แต่ถ้ามี Version label อยู่ก่อนแล้วจะสามารถ Upload Version label ได้ตามต้องการ

เข้ามาที่ Application versions แล้วคลิก Upload

แล้วจะมี pop-up แสดงขึ้นมา ให้คลิก Choose file เพื่อเลือกไฟล์ที่ต้องการ Upload แล้วป้อนชื่อ Version label ตามต้องการ และคลิก Upload

แล้วจะมี Version label ที่ชื่อ 20240326_deploy_test แสดงขึ้นมาแล้ว

Deploy จาก Application versions ไปยัง Environment

เราจะ Deploy จาก Application versions ไปยัง Environment ที่กำลังทำงานอยู่

เราสามารถ Deploy เวอร์ชันที่ต้องการไปยัง Environment ที่กำลังทำงานอยู่ได้
ขั้นตอนนี้ผมจะ Deploy Version label ที่ชื่อ 20240326_deploy_test ไปยัง Environment ของ tinnakorn-develop

เข้ามาที่ Application versions แล้วติ๊ก Version label ที่ต้องการ เช่น 20240326_deploy_test แล้วคลิก Action และเลือก Deploy

แล้วจะมี pop-up แสดงขึ้นมา ให้เลือก Environment ที่ต้องการ เช่น tinnakorn-develop แล้วคลิก Deploy

แล้วดูที่ "Deployed to" จะเห็นว่ามีชื่อ Environment ของ tinnakorn-develop แสดงขึ้นมาแล้ว
นอกจากนี้ยังสามารถใช้ในกรณีที่ต้องการกลับมาใช้เวอร์ชันเก่าได้อีกด้วย

กรณีที่กำลังใช้ Rolling update สามารถทำการ Deploy โดยไม่ต้องหยุดให้บริการได้ครับ
อ่านเพิ่มเติมได้ที่ลิงก์นี้: Deployment policies ที่ใช้ได้ใน AWS Elastic Beanstalk มีอะไรบ้าง

ดาวน์โหลดไฟล์จาก Application versions

เราสามารถ Download ไฟล์ ZIP โดยคลิกที่ Source จากรายการได้
ขั้นตอนนี้ผมจะดาวน์โหลดไฟล์ Version label ที่ชื่อ 20240326_deploy_test

เข้ามาที่ Application versions แล้วคลิกที่ไฟล์ที่ต้องการดาวน์โหลดในช่อง Source

ตรวจสอบที่บันทึกไฟล์จริงของ Application versions

ที่บันทึกไฟล์จริงของ Application versions จะอยู่ใน S3 Buckets

เข้ามาที่ Service S3 แล้วเลือก Buckets จากเมนูด้านซ้าย แล้วค้นหาและเลือก Bucket โดยป้อน elasticbeanstalk-[region]-[aws-account-id]

จะเห็นว่าไฟล์เวอร์ชั่นต่างๆ ถูกบันทึกอยู่ในนี้ ซึ่งจะเป็นชื่อไฟล์ [ลำดับสตริงก์สุ่ม]-[version-name].zip เช่น 1711446697664-20240326_deploy_test.zip (ตอนค้นหาชื่อไฟล์ในนี้ต้องใส่ชื่อเต็มของ Source จึงจะแสดงแบบนี้ หรือจะกดปุ่ม Ctrl+F เพื่อค้นหาก็ได้)

ลบ Application versions

ขั้นตอนนี้ผมจะลบ Version label ที่ชื่อว่า
・20240320_1010
・20240320_1143

เมื่อ Application versions มีมากขึ้นเรื่อยๆ ก็จะถูกเก็บเป็นไฟล์ใน S3 มากขึ้นเรื่อยๆ แล้ว S3 จะมีค่าใช้จ่ายแค่ส่วน Storage ที่เราใช้งานไปเท่านั้น ดังนั้นควรลบเวอร์ชันเก่าหรือเวอร์ชันที่ไม่ได้ใช้งานออกเพื่อลดค่าใช้จ่าย

ไม่แนะนำให้ลบไฟล์ Application Version ใน S3 Bucket โดยตรง ให้ลบจาก Service Elastic Beanstalk ดีกว่าครับ

เข้ามาที่ Application versions แล้วติ๊ก Version label ที่ต้องการลบ และคลิก Action เลือก Delete

คลิก Delete

แล้ว Version label ที่ลบก็จะหายไป

ลบ Application versions โดยอัตโนมัติ

เราสามารถตั้งค่าการลบ Application versions โดยอัตโนมัติได้ดังนี้

Application version lifecycle settings

Lifecycle policy: ✅ Activate
Lifecycle rule:
◉ Set the application versions limit by total count: [จำนวนเวอร์ชัน] Application Versions (เมื่อเกินจำนวนเวอร์ชันที่เรากำหนดไว้ Application versions เก่าจะถูกลบโดยอัตโนมัติ)
◉ Set the application versions limit by age: [จำนวนวัน] days (เมื่อเกินจำนวนวันที่เรากำหนดไว้ Application versions เก่าจะถูกลบโดยอัตโนมัติ)
Retention:
Delete source bundle from S3 (ลบไฟล์ ZIP ของ version จาก S3)
Retain source bundle in S3 (ให้ลบจากรายการเท่านั้น โดยไม่ให้ลบไฟล์ ZIP ของ version จาก S3)

ตัวอย่างการตั้งค่า

มาที่ Application versions คลิก Setting

Lifecycle rule
・◉ Set the application versions limit by total count: 200 Application versions
・Retention: Retain source bundle in S3
การตั้งค่านี้เมื่อถึงจำนวน 200 Application Versions แล้ว เวอร์ชันเก่าจะถูกลบโดยอัตโนมัติ และไฟล์ ZIP ของ version จะถูกลบจาก S3 ด้วย

Lifecycle rule
・◉ Set the application versions limit by age: 180 days
・Retention: Delete source bundle from S3
การตั้งค่านี้เมื่อครบ 180 days แล้ว Application versions เก่าจะถูกลบโดยอัตโนมัติ และจะลบจากรายการเท่านั้น โดยไม่ให้ลบไฟล์ ZIP ของ version จาก S3

สรุป

การใช้งานฟังก์ชัน Application version สามารถใช้ในการสร้าง Environment หรือ Deploy ไปยัง Environment ที่กำลังใช้งานอยู่ได้ นอกจากนี้ยังสามารถ Deploy กลับมาใช้เวอร์ชันเก่าได้อีกด้วย

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !

บทความที่เกี่ยวข้อง