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

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

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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

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

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

  • มี Application ใน Elastic Beanstalk แล้ว (ในบทความนี้ผมใช้ชื่อ Applications:tinnakorn)

  • มี Application versions อยู่ในฟังก์ชัน Application แล้ว

วิธีเข้ามาที่ Application versions
เข้ามาที่ Service Elastic Beanstalk แล้วมาที่เมนูด้านซ้าย เลือกApplications

แล้วให้ค้นหาชื่อของเรา และคลิกเข้ามาได้เลย เช่นtinnakorn

แล้วดูที่เมนูด้านซ้าย จะเห็นว่าแสดงเป็นชื่อ Application ของเรา ในตัวอย่างนี้คือ▼ tinnakorn
ทีนี้ให้เลือกApplication versions

แล้วดูที่ด้านขวาจะเห็นว่ามีรายการโปรเจกต์เวอร์ชันที่ Deploy ไปก่อนหน้านี้ ถ้าไม่เคยสร้าง Environment มาก่อน ก็จะไม่มีเวอร์ชันที่นี่

  • Environments ที่จะสร้างในบทความนี้
    • Environment:tinnakorn-single
    • Environment:tinnakorn-develop

การสร้าง Environment ใหม่จาก Application versions

การสร้าง Environment นี้ผมจะใช้ชื่อ Environment:tinnakorn-single

มาที่เมนูด้านซ้าย คลิกที่ชื่อ Application ของเรา เช่นtinnakorn

แล้วมาที่ด้านขวา คลิกปุ่มCreate a new environment

ในหัวข้อ Select environment tier นี้ให้เลือกWeb server environmentและคลิกSelect

ตั้งค่าในหัวข้อ Environment information และ Platform ตามต้องการ
จากนั้นเลื่อนลงมาด้านล่างสุดที่หัวข้อApplication codeแล้วตั้งค่าโดยเลือกExisting versionและคลิกที่ช่อง-- Choose a version --

แล้วเลือกเวอร์ชันที่เราต้องการใช้งาน เช่น20220822_1404
หลังจากนี้ก็ตั้งค่า Configure more options ตามที่ต้องการและคลิกCreate environmentแล้วรอระบบเริ่มต้นจนเสร็จ

แล้วกลับมาที่ Application versions อีกครั้ง จะเห็นว่า 20220822_1404 กำลังถูกใช้งานอยู่ใน Environment:tinnakorn-single

การสร้าง Environment ใหม่จาก Saved configurations

การสร้าง Environment นี้ผมจะใช้ชื่อ Environment:tinnakorn-develop

มาที่เมนูด้านซ้าย เลือกSaved configurationsใน Application ของเรา
แล้วมาที่ด้านขวา ติ๊กที่ Configuration name ของเรา และคลิกปุ่มLaunch environment

ในหัวข้อ Select environment tier นี้ให้เลือกWeb server environmentและคลิกSelect

ตั้งค่าในหัวข้อ Environment information และ Platform ตามต้องการ
จากนั้นเลื่อนลงมาด้านล่างสุดที่หัวข้อApplication codeแล้วตั้งค่าโดยเลือกExisting versionและคลิกที่ช่อง-- Choose a version --

แล้วเลือกเวอร์ชันที่เราต้องการใช้งาน เช่น20220815_1043
หลังจากนี้ก็ตั้งค่า Configure more options ตามที่ต้องการและคลิกCreate environmentแล้วรอระบบเริ่มต้นจนเสร็จ

แล้วกลับมาที่ Application versions อีกครั้ง จะเห็นว่า 20220815_1043 กำลังถูกใช้งานอยู่ใน Environment:tinnakorn-develop

การเพิ่ม Application versions

เราสามารถสร้าง Application versions ใหม่โดยการคลิกปุ่ม Upload ได้
ผมจะใช้ชื่อไฟล์20220822_deploy_testในการ Upload ครับ

เข้ามาที่Application versionsของเรา
แล้วมาที่ด้านขวา คลิกปุ่มUploadแล้วจะมี pop-up แสดงขึ้นมา

ตั้งชื่อ Version label ที่ต้องการ แล้วคลิกปุ่มChoose fileเพื่อเลือกไฟล์ และคลิกปุ่มUpload

จะเห็นว่ามี Version label:20220822_deploy_testที่ผมอัปโหลดแสดงขึ้นมาแล้วครับ

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

เราสามารถทำการ Deploy เวอร์ชันที่ต้องการกับ Environment ปัจจุบันได้
ขั้นตอนนี้ผมจะ Deploy Version label:20220822_test_deployกับ Environment:tinnakorn-develop

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

เลือก Environment ที่ต้องการ เช่นtinnakorn-developและคลิกDeploy

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

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

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

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

เข้ามาที่Application versionsของเรา
แล้วมาที่ด้านขวา ติ๊กVersion label ที่ต้องการดาวน์โหลด

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

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

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

การลบ Application versions

ขั้นตอนนี้ผมจะลบ Version label ที่ชื่อว่า
・20220815_1043
・20220817_2215

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

ห้ามใช้ Service S3 ลบไฟล์ ให้ทำการลบ Application Version จาก Service Elastic Beanstalk นะครับ

ทำการลบโดยติ๊กVersion label ที่ต้องการลบ และคลิกที่Action

คลิกDeleteตามด้วยDone

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

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

เราสามารถตั้งค่าได้ตามต้องการโดยใช้ข้อมูลด้านบนนี้ในการอ้างอิงการตั้งค่าได้เลยครับ

※Setting
Lifecycle policy: ✅ Enable
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

การตั้งค่านี้เมื่อถึงจำนวน201Application Versions แล้ว เวอร์ชันเก่าก็จะถูกลบโดยอัตโนมัติ และจะลบไฟล์ ZIP ของ version จาก S3 ออกไปด้วย

การตั้งค่านี้เมื่อครบ30days แล้ว Application versions เก่าจะถูกลบโดยอัตโนมัติ และจะลบจากรายการเท่านั้น โดยไม่ให้ลบไฟล์ ZIP ของ version จาก S3

สรุป

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

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

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

Link อ้างอิง