[Update] วิธีการใช้งานฟังก์ชัน Application version ใน Elastic Beanstalk
สวัสดีครับ 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
แล้ว 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) ครับ !
บทความที่เกี่ยวข้อง
- ราคา Amazon S3
- [Update] ทดลองเริ่มต้นใช้งาน Sample Elastic Beanstalk ด้วย PHP
- [Update] ทดลอง Deploy PHP ใน Elastic Beanstalk และเชื่อมต่อกับ RDS
- [Update] ทดลอง Deploy Laravel ใน Elastic Beanstalk และเชื่อมต่อกับ RDS
- [Update] วิธี Copy การตั้งค่า Environment ใน Elastic Beanstalk และเริ่มต้นระบบจาก Save Configuration
- AWS Elastic Beanstalk คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2022
- Deployment policies ที่ใช้ได้ใน AWS Elastic Beanstalk มีอะไรบ้าง