การ Deploy Web Application ด้วย AWS Elastic Beanstalk

การ Deploy Web Application ด้วย AWS Elastic Beanstalk

บทความนี้เป็นส่วนหนึ่งของซีรีย์บทเรียน "Deploy Web Application Platform PHP ด้วย AWS Elastic Beanstalk" ที่ผมได้ทดลองทำแล้วสำเร็จ จึงอยากนำมาแบ่งปันความรู้ ให้ผู้ที่สนใจได้อ่านครับ โดยเนื้อหาในแต่ละบทความสามารถทำตามได้อย่างอิสระ เหมาะสำหรับผู้ที่เริ่มต้นสร้างเว็บไซต์ซึ่งจะมีทั้งหมด 6 ขั้นตอน สามารถทำตามได้ครับ
2026.03.18

สวัสดีครับ เบิร์ด จาก Classmethod Thailand ครับ

บทความนี้จัดทำขึ้นเพื่อ อธิบายและสาธิตวิธีการ Deploy Web Application ที่พัฒนาด้วย PHP บน AWS โดยใช้บริการ Elastic Beanstalk ซึ่งเป็น Managed Service ที่ช่วยให้นักพัฒนาสามารถโฟกัสกับการเขียนโค้ดได้อย่างเต็มที่ โดยไม่ต้องกังวลกับการจัดการ Infrastructure ที่ซับซ้อนในระดับลึก

เนื้อหาในแต่ละบทความของซีรีย์นี้ สามารถทำตามได้อย่างอิสระ แต่หากเป็นมือใหม่แนะนำให้เริ่มตั้งแต่ต้นเพื่อความเข้าใจที่ครบถ้วนครับ

AWS Elastic Beanstalk คืออะไร ?

Elastic Beanstalk คือบริการประเภท PaaS (Platform as a Service) ที่ช่วยให้คุณสามารถ Deploy เว็บแอปพลิเคชันขึ้นสู่ AWS Cloud ได้อย่างง่ายดาย โดยรองรับหลากหลาย Platform

เพียงแค่ Build และ Deploy แอปพลิเคชันของคุณ Elastic Beanstalk จะดูแลส่วนที่เหลือให้ทั้งหมด ไม่ว่าจะเป็น การจัดสรร Amazon EC2 Instances, การตั้งค่า Load Balancing, การตรวจสอบสุขภาพระบบ (Health Monitoring) รวมถึงการปรับขนาด Environment ให้โดยอัตโนมัติ

นอกจาก Web Server Environment แล้ว Elastic Beanstalk ยังมี Worker Environment ซึ่งคุณสามารถใช้เพื่อประมวลผลข้อความจาก Amazon SQS Queue ได้ด้วย ซึ่งเหมาะสำหรับงานที่ทำงานแบบ Asynchronous หรืองานที่ใช้เวลานาน

บทความนี้อ้างอิงตามลิงก์ด้านล่างครับ

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html
การสร้าง Host Web Application ด้วย PHP และ AWS Elastic Beanstalk จะมีขั้นตอนดังต่อไปนี้ครับ

ขั้นตอนที่ 1 - สร้างแอปพลิเคชัน
ขั้นตอนที่ 2 - กำหนดค่าสภาพแวดล้อม
ขั้นตอนที่ 3 - ปรับใช้แอปพลิเคชัน
ขั้นตอนที่ 4 - เเสดงสภาพแวดล้อม
ขั้นตอนที่ 5 - อัปเดตแอปพลิเคชัน
ขั้นตอนที่ 6 - ปรับขนาดแอปพลิเคชัน
การลบทรัพยากร

ขั้นตอนที่ 1 - สร้างแอปพลิเคชัน

1.1. Login → AWS Console
จากนั้น ค้นหา "Elastic Beanstalk" กด "Create application"

c1-1

1.2. Configuration Environment เลือก "Web Server Environment"
d1-0


1.3. ตั้งชื่อ Application Name ของเรา ตัวอย่างตามด้านล่าง
Application Name : getting-started-app
Environment Name : gs-app-web-env

d1-1

1.4. ตั้งค่า Platform
Platform :"PHP"
Application Code : "Sample Application" เนื่องจากเป็นการทดลองใช้งานของเว็บไซต์ กรณีนี้เราจะใช้โค้ดตัวอย่างของ AWS ไม่ต้องมีโค้ดของตัวเอง Deploy ได้ง่ายมากครับ

d1-3

จากนั้นเลื่อนลงมาด้านล่าง กด "Next"

d1-2

1.5. การสร้าง IAM Role ใน Elastic Beanstalk AWS สร้างให้อัตโนมัติ กรณีนี้เราไม่ต้องการใช้ Key Pair
กด "Next" ได้เลย
Permissions policies ที่ถูกสร้างได้เเก่ :

aws-elasticbeanstalk-service-role :

  • AWSElasticBeanstalkEnhancedHealth
  • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

aws-elasticbeanstalk-ec2-role :

  • AWSElasticBeanstalkWebTier
  • AWSElasticBeanstalkWorkerTier
  • AWSElasticBeanstalkMulticontainerDocker

d1-4

ขั้นตอนที่ 2 - กำหนดค่าสภาพแวดล้อม

2.1. VPC และ Public IP Address เราจะไม่มีการตั้งค่าในขั้นตอนนี้
VPC จะเป็นค่า "Default"

"ในขั้นตอนนี้เราจะข้ามการตั้งค่า Public IP เนื่องจากเรายังมีขั้นตอน Scale application ในตอนท้าย tutorial ซึ่ง Load Balancer จะเป็นตัวรับ Traffic แทน EC2"

d1-5

2.2. Database ไม่มีการตั้งค่า กด "Next" ได้เลยครับ

d1-6

2.3. Root Volume Type : เลือก "Container Default".
กรณีนี้ Elastic Beanstalk จะเลือก EBS Volume Type ที่ optimize สำหรับ Platform ให้เราโดยอัตโนมัติครับ
d1-7

2.4. Fleet Composition เลือก ==> "On-Demand Instance"
Spot Instance จะเหมาะกับงานวิเคราะห์ข้อมูลขนาดใหญ่ Big Data Analysis, Batch Processing มีโอกาสหยุดได้ทุกเมื่อ เพราะกระบวนการเหล่านี้เน้นใช้เวลา หยุดได้ เริ่มใหม่ได้และลดต้นทุน
d1-8

2.5. Instance Types เนื่องจาก Elastic Beanstalk เลือกให้เราแล้ว ขยับลงมาด้านล่างสุด
กด "Next" ได้เลย

d1-9

2.6. System : เลือก "Enhanced"
เราสามารถทำ Real-Time Health Monitoring ได้ เช่น ดู CPU Utilization, Memory Usage ฯลฯ

d1-10

จากนั้นเลื่อนลงมาล่างสุด ==> กด "Next"

d1-11

2.7. Review
จะแสดงการตั้งค่าที่เราตั้งค่ามาทั้งหมด
d1-12

ขั้นตอนที่ 3 - ปรับใช้แอปพลิเคชัน

หลังจากตรวจสอบดูแล้ว เลื่อนลงมาล่างสุด กด "Create" ได้เลยครับ

d1-13

ขั้นตอนที่ 4 - เเสดงสภาพแวดล้อม

4.1. มาที่แอปพลิเคชัน กดเลือกแอปของเรา "getting-started-app"

p1-1m

4.2. กด "Go to environment" เพื่อเปิดดูแอปพลิเคชันของเรา
กดลิงก์ URL ที่แสดงในช่อง "Domain" เพื่อเปิดแอปพลิเคชันของเรา

f-6m

เท่านี้เว็บไซต์ของเราก็ปรากฏขึ้นมาแล้ว
"หมายเหตุสำคัญ": การเชื่อมต่อจะเป็น "HTTP" (ไม่ใช่ HTTPS) ดังนั้นอาจมีคำเตือนปรากฏขึ้นในเบราว์เซอร์ของคุณ ซึ่งถือเป็นเรื่องปกติ
b-1m

ขั้นตอนที่ 5 - อัปเดตแอปพลิเคชัน

การอัปเดตแอปพลิเคชัน เราสามารถติดตั้ง (Deploy) เวอร์ชันใหม่ได้ตลอดเวลา "ตราบใดที่ไม่มีการดำเนินการอัปเดตอื่นๆ ที่กำลังดำเนินอยู่บนสภาพแวดล้อม (Environment) ของเรา" วิธีนี้สะดวกและง่ายมากๆ สามารถทำได้อย่างยืดหยุ่นตามความต้องการสำหรับผู้ใช้งาน

5.1. ดาวน์โหลดแอปพลิเคชันตัวอย่าง PHP ต่อไปนี้:
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/php-v2.zip

5.2. หลังดาวน์โหลดไฟล์แล้วไปที่ : Environment ⇒ "Upload and deploy"

f-2m

5.3. กดปุ่ม "Choose File" ไปที่ Download ==> เลือก "php-v2.zip"
กดปุ่ม " Deploy "

b1-3

5.4. จากนั้นรอสักครู่ ในขณะที่ Elastic Beanstalk กำลัง Deploy ไฟล์ของคุณไปยัง Amazon EC2 Instances เราสามารถดูสถานะการ Deploy ได้จากหน้า Environment Overview
เมื่อ Health " OK " แล้ว จากนั้นคลิก " Domain "

f-4m

เท่านี้ Application ของเราได้อัปเดตเป็นแอปที่เราต้องการแล้ว

f-5m

ขั้นตอนที่ 6 - ปรับขนาดแอปพลิเคชัน

ก่อนที่เราจะทำการปรับขนาด (Scale) แอปพลิเคชัน ให้สังเกตว่าในขณะนี้ระบบมี EC2 Instance ทำงานอยู่เพียง 1 ตัว
เท่านั้น คือ "gs-app-web-env" นั่นคือจุดเริ่มต้นก่อนการ Scale เราจะเห็นว่าระบบรองรับการทำงานด้วย Instance เดียว ซึ่งอาจไม่เพียงพอหากมีผู้ใช้งานจำนวนมาก ดังนั้นในขั้นตอนถัดไป เราจะทำการปรับขนาดเพื่อเพิ่มประสิทธิภาพและความสามารถในการรองรับ Load ที่มากขึ้น

mm1

6.1. ไปที่ Environment ของเรา "gs-app-web-env"
Configuration ==> Instance Traffic and Scaling เลือก "Edit"

mm2

6.2. หมวด Capacity
ตั้งค่า Auto Scaling Group : Single Instance ==> "Load Balanced"

p4-m

6.3. ตั้งค่า Min instances : " 2 "
อธิบาย :
Min = 2 → ระบบจะรัน อย่างน้อย 2 Instance ตลอดเวลา (HA - High Availability)
Max = 4 → ระบบจะ Scale ได้ สูงสุด 4 Instance เมื่อ Load สูง
p5-m

6.4. เลื่อนลงมาข้างล่างสุด กด "Apply"

p6-m

เราจะสังเกตว่ามี EC2 อีกตัวหนึ่งกำลังถูกสร้างขึ้น เท่านี้เราก็ดำเนินการได้สำเร็จแล้วครับ
p7-m

"Congratulations"

You have finished AWS Elastic Beanstalk on AWS tutorial!
sug

⚠️ หมายเหตุ : Tutorial นี้อาจมีค่าใช้จ่ายเกิดขึ้น
แนะนำให้ทำ การลบทรัพยากร ทันทีหลังทดลองเสร็จ

การลบทรัพยากร

ขอแนะนำวิธีการลบ Resources ที่เราได้สร้างขึ้นมาเพื่อป้องกันค่าใช้จ่ายที่ไม่คาดคิด

  1. เข้ามาที่ Application เลือก Application ของเรา "getting-started-app"
    จากนั้นเลือก Actions ==> "Delete application"

s1-m

  1. กด "Delete" (ปุ่มสีส้ม) เพื่อยืนยันการลบ
    ระบบจะ ลบทั้ง Application และ Environment พร้อมกัน
    Resources จะมีดังนี้ :
  • EC2 Instance
  • Load Balancer
  • Instance Security Group
  • Amazon S3 Bucket
  • Amazon CloudWatch Alarms
  • CloudFormation Stack

s2-m

สรุป

  1. ตั้งค่า Platform : "PHP" ซึ่งเราไม่จำเป็นต้องเตรียม Platform เอง Elastic Beanstalk จะสร้างให้อัตโนมัติ
  2. การอัปเดตแอปพลิเคชันใหม่ ในกรณีที่ผู้ใช้งานต้องการเปลี่ยนเป็นแอปพลิเคชันอื่น สามารถอัปเดตได้ง่ายมาก
  3. Scale your application จาก Instance ที่ถูกสร้างเพียงตัวเดียว ซึ่งอาจไม่เพียงพอหากมีผู้ใช้งานจำนวนมาก ดังนั้นจำเป็นต้องปรับขนาดเพื่อเพิ่มประสิทธิภาพ และความสามารถในการรองรับ Load ที่มากขึ้น
  4. ลบ Resources ที่เราได้สร้างขึ้นมาเพื่อป้องกันค่าใช้จ่ายที่ไม่คาดคิด

บทความอ้างอิง

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.html

บทความอื่นๆที่เกี่ยวข้องกับ AWS Elastic Beanstalk

(Thai)
https://dev.classmethod.jp/articles/aws-2022-introductory-edition-aws-elastic-beanstalk/
(Japanese)

https://dev.classmethod.jp/articles/elastic-beanstalk-application-ks/
https://dev.classmethod.jp/articles/elastic-beanstalk-windows-server-2025/

この記事をシェアする

FacebookHatena blogX

関連記事