Amazon Elastic Compute Cloud (Amazon EC2) เป็นบริการเว็บที่มีความสามารถในการประมวลผลที่ปรับขนาดได้ในระบบคลาวด์ ซึ่งออกแบบมาเพื่อช่วยให้ Developer ประมวลผลแบบ Web-Scale ได้ง่ายขึ้น – EC2 FAQS
จุดเด่นของ EC2
ข้อดีของการใช้งาน EC2 มีดังนี้
![Screenshot 2567 06 13 At 09.06.46](https://softubon.com/wp-content/uploads/2024/06/Screenshot-2567-06-13-at-09.06.46-1024x519.png)
ฟังก์ชันการใช้งาน
ต่อไปเราจะมาดูฟังก์ชันการใช้งานของ EC2 กันค่ะ
Instances
คือ หน่วยเซิร์ฟเวอร์จัดการประมวลผลของ AWS EC2 หรือที่เราเรียกกันว่า “อินสแตนซ์” เมื่อสร้างอินสแตนซ์ ต้องกำหนดตัวเลือกต่างๆ เช่น AMI (Amazon Machine Image) ประเภทอินสแตนซ์ ตั้งค่าเครือข่าย กำหนด Volume และ tag เป็นต้น
AMI
คือ Template ที่กำหนดค่าต่างๆ อย่างเช่น ระบบปฏิบัติการ (Operating System) แอปพลิเคชันเซิร์ฟเวอร์(Application server) หรือซอฟต์แวร์ที่จำเป็นสำหรับการเปิดใช้งานอินสแตนซ์ไว้แล้วล่วงหน้า
การกำหนดค่า AMI แบบเดียวกัน ทำให้เราสามารถสร้างอินสแตนซ์แบบเดียวกันหลายอินสแตนซ์ได้
ยกตัวอย่างให้เห็นภาพง่ายขึ้น เหมือนกับเวลาที่เราแต่งภาพ อาจจะตั้งค่าให้เพิ่มแสง เพิ่มความสว่างต่างๆ และเซฟเป็น preset เก็บเอาไว้ เมื่อเราจะแต่งภาพครั้งต่อไปก็ใช้ preset ที่เคยตั้งค่าไว้แล้วเพื่อให้ได้ภาพที่มีสีหรือโทนเดียวกัน การทำงานของ AMI ก็จะคล้ายๆลักษณะนี้ค่ะ
โดยเราสามารถใช้ AMI ที่ AWS จัดเตรียมไว้ หรือใช้ของที่ supplier ซอฟต์แวร์เจ้าอื่นๆจัดหาให้ หรือผู้ใช้จะสร้างสภาพแวดล้อมของตนเองบน EC2 และแปลงเป็น AMI (เช่นเดียวกับการทำ Back up หรือการสำรองข้อมูล) ก็ได้เช่นเดียวกัน
สามารถดูวิธีการสร้าง AMI ได่ที่นี่ → การใช้ AMI เพื่อ Copy ข้อมูลของ EC2 Instance
Instance type
ผู้ใช้สามารถสร้างอินสแตนซ์ โดยเลือกประเภทของอินสแตนซ์ให้เหมาะสมกับความต้องการได้ ไม่ว่าจะเป็นในส่วนของ CPU หน่วยความจำ พื้นที่เก็บข้อมูล เครื่องข่าย หรืออื่นๆ
โดยชื่ออินสแตนซ์ก็จะบ่งบอกประเภทและขนาดของอินสแตนซ์นั้นๆ ซึ่งเราสามารถเลือกประเภทอินสแตนซ์ที่เหมาะสมกับความต้องการใช้ เพื่อให้สามารถประหยัดค่าใช้จ่ายได้อย่างคุ้มค่า
![](https://devio2023-media.developers.io/wp-content/uploads/2022/07/ec2-1.png)
สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับประเภทอินสแตนซ์ที่มีให้บริการทั้งหมดได้ที่ AWS Official Website
อินสแตนซ์แต่ละประเภทมีความสามารถในการขยายประสิทธิภาพการใช้งาน หรือที่เราเรียกว่า Burstable Performance ในช่วงเวลาใดเวลาหนึ่งได้แตกต่างกัน
Burstable Performance Instances คืออินสแตนซ์ที่สามารถขยายประสิทธิภาพการใช้งานได้ โดยสามารถเพิ่มขนาดอินสแตนซ์จากสเปคขั้นพื้นฐานเป็นสเปคที่ต้องการ และเปิดใช้แค่ในช่วงเวลาที่จำเป็นได้
การเริ่มเลือกใช้อินสแตนซ์สเปคพื้นฐานและขยายเพียงในช่วงเวลาหนึ่งที่จำเป็น ช่วยให้เราสามารถปรับค่าใช้จ่ายให้ตรงกับความต้องการใช้งานได้มากที่สุด เรียกได้ว่าจะช่วยให้เราประหยัดได้มากขึ้นนั่นเองค่ะ
EC2 มีอินสแตนซ์หลายประเภท แต่ละประเภทจะมีจุดเด่นแตกต่างกันไป อย่างเช่น เด่นในเรื่องหน่วยการประมวลผล หรือหน่วยความจำ โดยอินสแตนซ์ที่สามารถ “Burst” หรือขยายการใช้งานได้คืออินสแตนซ์ประเภท T ได้แก่ ประเภท T4g, T3a, T3 และ T2 ซึ่งเป็นรุ่นก่อนหน้าด้วย
Storage
ในอินสแตนซ์ประกอบด้วยพื้นที่จัดเก็บภายในอินสแตนซ์ (Instance Storage) และ พื้นที่จัดเก็บภายนอกอินสแตนซ์ซึ่งมีหลายประเภท แต่ในส่วนของบล็อกนี้จะพูดถึงพื้นที่จัดเก็บที่เรียกว่า EBS (Elastic Block Store) เป็นหลักค่ะ
พื้นที่จัดเก็บภายในอินสแตนซ์จะมี Disk type (HDD, SSD, NvMe SSD) และขนาดที่แตกต่างกันออกไปตามประเภทอินสแตนซ์ ดังนั้น เราจำเป็นต้องตรวจสอบก่อนเลือกใช้ว่าประเภท Disk นั้นๆเหมาะกับงานที่เราต้องการหรือไม่
สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ Volume ของแต่ละประเภทอินสแตนซ์ได้ที่ AWS document
สาเหตุที่เราควรจะเก็บข้อมูลไว้ภายใน EBS เพราะมีความทนทานต่อการสูญหายหรือถูกทำลายไปมากกว่าการเก็บไว้ใน Instance Storage ที่ข้อมูลจะถูกทำลายไปตาม Lifecycle ของแต่ละอินสแตนซ์ ดังนั้นถ้าเราจัดเก็บข้อมูลไว้ใน EBS ข้อมูลจะไม่สูญหายตราบใดที่ EBS ยังอยู่นั่นเองค่ะ
ถ้าเราจัดเก็บหรือสำรองข้อมูลไว้ที่ EBS ก่อนลบอินสแตนซ์ ก็จะสามารถเก็บข้อมูลไว้และนำข้อมูลนั้นมาสร้างอินสแตนซ์ต่อไปได้
นอกจากนี้ EBS ยังสามารถทำการเข้ารหัส และสามารถทำ snapshot สำรองข้อมูล (back up) ได้เช่นเดียวกับ AMI
Network
AWS VPC (Amazon Virtual Private Cloud) คือ virtual network ของ AWS
![](https://devio2023-media.developers.io/wp-content/uploads/2022/08/VPC-EC22-RDS1_done-1-2-640x360.png)
ภาพแสดงตัวอย่าง เมื่อเราสร้าง EC2 และ RDS ไว้ในหลาย Availability Zone บน VPC
เราสามารถแบ่งพื้นที่สำหรับสร้างอินสแตนซ์โดยการแยก “subnet” ได้ดังรูปด้านบน จะเห็นได้ว่าแบ่งออกเป็น 4 subnet และสามารถตั้งค่าแต่ละ Subnet ให้แยก Availability zone กันได้ อย่างเช่นแยกแต่ละ subnet ให้อยู่ใน Availability zone A (ด้านซ้ายในรูป) และ Availability zone B (ด้านขวาในรูป) หรือสามารถสร้างอินสแตนซ์ EC2 หลายๆอินสแตนซ์ในหลายๆ Availability zone ก็ได้เช่นกัน จึงมั่นใจได้ในเรื่องของความพร้อมใช้งานสูง
โดยปกติแล้ว IP address ของอินสแตนซ์ จะถูกกำหนดให้สามารถรับส่งข้อมูลผ่าน Private IP ภายใน VPC เท่านั้น แต่ในกรณีที่ต้องการให้อินสแตนซ์สามารถรับส่งข้อมูลกับอินเตอร์เน็ตได้ จำเป็นจะต้องเชื่อมต่อ Internet gateway (IGW) เข้ากับ subnet ก่อน
หรือหากต้องการแค่ส่งข้อมูลออกไปยังอินเตอร์เน็ต ก็สามารถทำได้โดยการเชื่อมต่อกับ NAT gatewayPublic IP address ที่จำเป็นสำหรับการรับส่งข้อมูลทางอินเตอร์เน็ต สามารถสร้างได้โดยอัตโนมัติในตอนที่สร้างอินสแตนซ์ หรือสามารถกำหนดได้ด้วยการเชื่อมต่อกับ Elastic IP address ที่เป็น Fix IP address
สำหรับ Bandwidth จะแตกต่างกันไปขึ้นอยู่กับ vCPU ของอินสแตนซ์นั้นๆ
“Bandwidth ของอินสแตนซ์ที่สามารถใช้ได้จะแตกต่างกันไปตามจำนวน vCPU ยกตัวอย่างเช่น อินสแตนซ์ m5.8xlarge มีจำนวน 32 vCPU และ 10 Gbps Bandwidth ส่วน อินสแตนซ์ m5.16xlarge มีจำนวน 64 vCPU และ 20 Gbps Bandwidth อย่างไรก็ตาม มีบางกรณีที่อินสแตนซ์อาจไม่สามารถได้รับ Bandwidth ในปริมาณเท่านั้นได้ เช่น ในกรณีความทนทานของเครือข่ายเกินระดับอินสแตนซ์ (เช่น จำนวน packet ต่อวินาที หรือจำนวนการเชื่อมต่อ) จำนวน Bandwidth ที่ traffic สามารถใช้ได้นั้นขึ้นอยู่กับจำนวนและปลายทางของ vCPU เช่น อินสแตนซ์ m5.16xlarge มีจำนวน 64 vCPU ดังนั้น การรับส่งข้อมูลไปยังอินสแตนซ์อื่นใน region สามารถใช้ Bandwidth ทั้งหมด (20 Gbps) ที่มีอยู่ได้ อย่างไรก็ตาม การรับส่งข้อมูลไปยังอินสแตนซ์อื่นๆใน region สามารถใช้ Bandwidth ได้เพียง 50% (10 Gbps) เท่านั้น – แปลจาก AWS document ภาษาอังกฤษ
ในกรณีที่ต้องการประสิทธิภาพเครือข่ายที่สูงกว่า TCP พื้นฐาน เช่นเดียวกับ Machine Learning สามารถใช้งาน EFA (Elastic Fabric Adapter) ที่รับส่งข้อมูลได้เสถียรและใช้เวลาแฝงต่ำกว่า ทั้งยังรองรับ throughput ที่สูงกว่า TCP อีกด้วย
อย่างไรก็ตาม เนื่องจากมีบางอินสแตนซ์ของ EC2 ที่ไม่รองรับ EFA อยู่ จึงจำเป็นต้องตรวจสอบก่อนว่าอินสแตนซ์ใดที่สามารถใช้งานร่วมกับ EFA ได้
Security
โดยทั่วไปแล้ว การให้บริการของ AWS จะเป็นไปตาม Shared Responsibility Model หรือ แผนความรับผิดชอบร่วมกันระหว่าง AWS และผู้ใช้งาน กล่าวคือ AWS จะเป็นผู้รับผิดชอบจัดการในส่วนของ Infrastructure และผู้ใช้จำเป็นต้องรับผิดชอบในส่วนของการรักษาความปลอดภัยภายในระบบคลาวด์เอง
![](https://devio2023-media.developers.io/wp-content/uploads/2022/08/Shared_Responsibility_Model_V2.59d1eccec334b366627e9295b304202faf7b899b-1-640x351.jpg)
ผู้ใช้งานสามารถเพิ่มความปลอดภัยของ EC2 ได้ โดยใช้เครือข่าย ACL (Network Access Control List) สำหรับการกำหนดสิทธิห้ามเข้าถึง และ Security group สำหรับกำหนดสิทธิในการเข้าถึงได้
สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ ACL ได้ที่ AWS document และสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ Security group ได้ที่นี่
หรือหากต้องการเชื่อมกับ Service อื่นๆ ของ AWS แต่ไม่ต้องการใช้การเชื่อมต่อผ่าน Internet gateway สามารถใช้ VPC Endpoint (เปรียบเสมือน IP ของ VPC) เพื่อให้เชื่อมต่อเข้าหากันได้
เมื่อเราทำการเชื่อมต่อกับ AWS Service ด้วยการใช้ VPC Endpoint ดังเช่นรูปด้านล่างนี้ จะทำให้เราสามารถกำหนด Traffic ต่างๆ เกิดขึ้น เกิดแค่ใน AWS network ได้
เมื่อใช้ VPC Endpoint เพื่อรับส่งข้อมูลกับบริการของ AWS
![](https://devio2023-media.developers.io/wp-content/uploads/2022/07/ec2-2-640x434.png)
ในส่วนของการกำหนดสิทธิการเข้าถึง เราสามารถใช้ฟังก์ชัน IAM ในการจำกัดสิทธิ์ของผู้ใช้ที่สามารถเข้าถึงอินสแตนซ์หรือบริการต่างๆได้ และในขณะเดียวกันก็สามารถใช้เพื่อจำกัดสิทธิ์ของอินสแตนซ์ในการเข้าถึงอินสแตนซ์และบริการอื่นๆได้ด้วยเช่นกัน
อีกทั้งยังสามารถใช้ IAM Role กำหนดบทบาทของ Instance ต่างๆ ใน AWS management console ได้ เช่น การกำหนดการใช้งาน AWS SSM (SystemsManager) เพื่อรีโมตควบคุม instance หรือ การใช้งาน AWS Cloudwatch ในการ Logging
สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ EC2 และ IAM ได้ที่ AWS document
เพื่อเพิ่มความปลอดภัยให้กับระบบคลาวด์ของเรา ควรหมั่นอัปเดทซอฟต์แวร์ภายในอินสแตนซ์ และจัดการข้อมูลบัญชีและ key pair ที่จำเป็นสำหรับการเข้าถึงอินสแตนซ์ หรือจะเปิดใช้งาน VPC flow logs เพื่อทำมอนิเตอร์ริง ร่วมกันกับ CloudWatch ก็ได้เช่นกัน
ค่าบริการ
ทดลองใช้ Amazon EC2 ได้ฟรี วิธีการชำระค่าบริการอินสแตนซ์ Amazon EC2 มี 5 วิธี ได้แก่ On-demand , Savings Plans, อินสแตนซ์แบบเหมาจ่าย และอินสแตนซ์ Spot คุณยังสามารถชำระค่าบริการโฮสต์แบบเฉพาะเจาะจง ซึ่งให้พื้นที่อินสแตนซ์ EC2 บนเซิร์ฟเวอร์จริงสำหรับการใช้งานของคุณได้ด้วย – ราคา Amazon EC2
การเลือกวิธีการชำระค่าบริการที่เหมาะสมกับการใช้งาน จะช่วยให้เราสามารถปรับค่าใช้จ่ายให้เหมาะสมได้ อย่างเช่น เราไม่จำเป็นต้องเลือกใช้แบบ on-demand หากต้องการเปิดใช้งานเซิร์ฟเวอร์เพียงแค่ในช่วงเวลาหนึ่ง ต่อจากนี้จะมาอธิบายถึงวิธีการชำระค่าบริการกันค่ะ
![Screenshot 2567 06 13 At 09.07.50](https://softubon.com/wp-content/uploads/2024/06/Screenshot-2567-06-13-at-09.07.50-1024x702.png)
สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ Saving plans ได้ที่ Saving Plan vs. Reserved Instance ต่างกันยังไง บล็อกนี้มีคำตอบ!
• Reserved Instances (RI)
• Dedicated Hosts
ทดลองสร้าง EC2
เนื่องจากบทความต้นฉบับเขียนไว้ตั้งแต่เดือนกุมภาพันธ์ ปัจจุบันอาจมีการอัปเดตและเปลี่ยนแปลงแล้ว แนะนำให้อ่านบล็อก 【Update】วิธีติดตั้ง Amazon Linux 2 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY ที่เป็นฉบับอัปเดต จะได้ทำตามได้ง่ายขึ้นนะคะ(✿◡‿◡)
สรุป
จบกันไปแล้วนะคะ สำหรับบทความแนะนำ Amazon EC2 หวังว่าบทความนี้จะเป็นประโยชน์สำหรับผู้ที่กำลังสนใจใช้งานคลาวด์นะคะ(ノ◕ヮ◕)ノ*:・゚✧