Coding Gun

ขั้นตอนการสร้าง AWS EC2 Instance

AWS EC2 ย่อมาจาก Elastic Compute Cloud คือ บริการให้ผู้ใช้สร้าง Virtual Machine(VM) ของตัวเอง ซึ่งผู้ใช้สามารถติดตั้ง Software หรือ Service ต่างๆ ลงใน Server ของตัวเอง รวมทั้งยังสามารถปรับ Configuration ต่างๆภายในเครื่องที่เราสร้างขึ้นได้ด้วย

ค่าบริการของ EC2

การคิดค่าบริการ AWS จะคิดค่าบริการตามจำนวนชั่วโมงที่ใช้งานไปนับตั้งแต่ Start จนกระทั่งเรา Stop instance นั้นๆ ส่วนค่าบริการรายชั่วโมงนั้นจะขึ้นอยู่กับ Region และ Spec ของเครื่องที่เราสร้างขึ้นมา

ถ้าเป็น Instance ที่ใช้ OS และ Database เหล่านี้

จะเรียกเก็บเงินเป็นรายวินาที แต่ถ้าเป็น Instance อื่นๆนอกจากนี้จะคิดเป็นรายชั่วโมงทั้งหมด

AWS มี t2.micro เป็น Free-tier ให้เราใช้งานได้ฟรี 750 ชั่วโมงต่อเดือน และจะสามารถใช้ได้นาน 12 เดือนนับตั้งแต่วันที่สมัคร Account

ประเภทของ EC2 Instance

เราสามารถเลือก Instance Types ให้เหมาะกับการใช้งานแต่ละแบบตามความต้องการของ Application ได้ โดยจะมี Instance Types เราจะแบ่งออกเป็น Instance families และ Instance sizes

Instance Families

Instance Families เป็นการแบ่งแยกประเภท Compute Unit ตามการใช้งาน โดยมี Instance Families ต่างๆดังนี้

Instance Sizes

เป็นขนาดของ Instance ซึ่งจะแบ่งตามขนาดของ CPU และ Memory โดยจะแบ่งออกเป็น

Model vCPU CPU Credits/Hour Mem(GiB) Network Performance
t2.nano 1 3 0.5 Low
t2.micro 1 6 1 Low to Moderate
t2.small 1 12 2 Low to Moderate
t2.medium 2 24 4 Low to Moderate
t2.large 2 36 8 Low to Moderate
t2.xlarge 4 54 16 Moderate
t2.2xlarge 8 81 32 Moderate

CPU Credits คือ ประสิทธิภาพสูงสุดของ CPU 1 Core ต่อ 1 นาทีซึ่ง เมื่อ EC2 Instance ใช้งาน CPU ก็จะนับ CPU Credits ถ้ามีการใช้งานน้อยกว่าปกติก็จะมี CPU Credits Balance มากขึ้น(จะแสดงตัววัดนี้ใน CloudWatch)

ประเภทของ EC2 Instance

เราสามารถเลือกประเภทของ EC2 ได้ 4 แบบดังนี้

  1. On-demand เป็นการใช้งานแบบ default ที่เราพูดถึงการใช้งาน EC2 มาก่อนหน้านี้จะเป็นแบบ On-demand
  2. Reserved Instance(RI) ในกรณีที่เราใช้งานระยะยาว 1-3 ปีแบบแน่นอน เราสามารถใช้ Reserved Instance เพื่อประหยัดค่าใช้จ่ายลงได้
  3. Spot Instance เป็น Instance แบบชั่วคราว ในงานที่ไม่ได้ต้องการ Availability ตลอดเวลาเราสามารถเลือก Spot Instance เข้ามาช่วยทำงานได้(ราคาของ Spot Instance จะถูกมาก)

Reserved Instance(RI)

การสร้าง EC2 Instance ก่อนหน้านี้จะเป็นการสร้างตามความต้องการแบบ(On-Demand) เรียกว่า On-Demand Instance แต่ถ้าเรามีความต้องการใช้งาน Instance ในระยะยาวเราสามารถเลือกใช้ Reserved Instances(RI) เพื่อประหยัดค่าใช้จ่ายได้ ซึ่งลักษณะของ Reserved Instance(RI) มีดังนี้

Reserved Instances(RI) มีให้เลือก 3 ประเภทดังนี้

  1. Standard สามารถปรับเปลี่ยนได้ตราบใดที่ยังใช้ Instance Type แบบเดิม และสามารถขายคืนได้ผ่านทาง Amazon Reserved Instance Marketplace
  2. Convertible สามารถปรับเปลี่ยน Instance Type ที่ใหญ่ขึ้นกว่าเดิมได้ แต่จะไม่สามารถขายคืนได้
  3. Scheduled เป็น Reserved Instances แบบกำหนดช่วงเวลาเป็น รายวัน(Daily), รายสัปดาห์(Weekly) หรือรายเดือน(Monthly)

Spot Instance

Spot Instance คือ Instance ที่ใช้ Resource ที่เหลือจากการใช้งาน ซึ่ง Spot Instance เป็นอีกทางเลือกสำหรับการประหยัดค่าใช้จ่าย แต่การใช้งาน Spot Instance นั้นไม่สามารถ garantee ความพร้อมใช้งานได้(ไม่มี High Availability) เพราะเหมือนเราไปขอยืมใช้ resource ของคนอื่นตอนที่เค้าไม่ได้ใช้งาน(ราคาเลยถูก) พอเจ้าของเค้าต้องใช้งาน resource นี้เราก็ต้องคืน resource แ ให้เค้าไป

ขั้นตอนการขอใช้ Spot Instance

  1. Login เข้าไปหน้า AWS Console
  2. เลือก EC2 Instance
  3. เลือกเมนู Spot Request ทางด้านซ้าย
  4. กำหนดราคาสูงสุด(Maximum Price) เพราะคนที่ให้ราคาสูงสุดจะได้เข้าใช้งาน Resource นั้น(Bidding)
  5. กดปุ่ม Request Spot Instance หลังจากนั้นก็ทำตาม Wizard เหมือนกับตอนสร้าง EC2 Instance ปกติทั่วไป

Tenancy

เราสามารถเลือกได้ว่าจะให้ EC2 Instance ของเราอยู่ใน Environment แบบไหน โดยจะแบ่งออกเป็น 3 ประเภทดังนี้

  1. Shared Tenancy เป็น Environment แบบปกติ ซึ่งเราจะอาศัยอยู่กับเพื่อนบ้านหลายๆคน แบบนี้จะมีความปลอดภัยต่ำสุด
  2. Dedicated Instance ถ้าเราต้องการความปลอดภัยมากขึ้น เราจะเลือกแบบ Dedicated Instance ซึ่งเราจะอยู่คนเดียวใน Physical Server เครื่องเดียว แต่เราจะไม่สามาถเข้าไปจัดการกับ Physical Server ด้านล่างได้
  3. Dedicated Hosts เมื่อถูกกำหนดจาก มาตรฐานที่เราต้อง Compile หรือ ข้อกำหนดของ License ที่ต้องอยู่ใน Physical Server เพียงคนเดียวและต้องสามารถเข้าไปจัดกับกับ Physical Server ด้านล่างได้ และราคาของ Dedicated Hosts จะมีราคาแพงกว่า EC2 Instance แบบอื่นๆ

Amazon Machine Image(AMI)

ในการทำงานกับ EC2 Instance เราจะต้องเลือก Image ซึ่งอาจจะมี แค่ Operating System(OS) อย่างเดียวหรือมี Database ด้วยก็ได้ จะเหมือนกับ ISO ไฟล์ใน Virtual Machine ทั่วไป

AMI จะประกอบไปด้วย

เราสามารถสร้างและใช้งาน AMI จาก Amazon ได้โดยไม่มีค่าใช้จ่าย และนอกจากนี้เรายังสามารถซื้อหรือขาย AMI ผ่านทาง AWS Marketplace ได้ด้วย

ตอนที่เราเลือก AMI จะมีอยู่ 4 ทางเลือกดังนี้

  1. Quick AMI เป็น AMI ที่มีคนใช้เยอะมากๆ เป็นหน้าที่รวมเอส AMI ที่ popular มาให้เราเลือกใช้ได้ง่ายๆ
  2. My AMI เป็น AMI ของเราเอง ที่เราได้สร้างขึ้น
  3. AMI Market Place เป็น AMI ที่มาจาก Third-Party ที่น่าเชื่อถือซึ่งจะต้องมีค่า Subscription(ไม่ฟรี)
  4. Public AMI เป็น AMI ที่เป็น Public สามารถใช้งานได้ฟรี

EC2 Instance Lifecycle

การทำงานของ Instance จะมี Lifecycle ตามนี้

EC2 Instance Lifecycle
EC2 Instance Lifecycle

  1. เมื่อ Launch Instance ขึ้นมาเราต้องเลือก AMI หลังจากจบขั้นตอนการติดตั้ง Instance จะมี state เป็น Pending
  2. หลังจาก Boot เสร็จเรียบร้อยสถานะของ Instance จะเปลี่ยนเป็น Running
  3. เราสามารถเลือกที่จะหยุดการทำงานด้วยการ Stop หรือ Terminate
    • Stop เราจะสามารถ Start กลับมาใหม่ได้
    • Terminate จะเป็นการลบ Instance นั้นออกเลย ไม่สามารถนำกลับมาใช้งานใหม่ได้

Elastic Blob Storage(EBS)

Storage Volume คือ Disk ที่เราจะ attach เข้าไปใช้งานใน EC2 Instance มีอยู่ 2 ประเภทคือ

  1. Instance Store Volume คือ Disk ที่ attach เข้าไปใน EC Instance โดยจะใช้ในการ Boot(Root Volume) ซึ่งลักษณะของ Instance Store Volume จะเป็นดังนี้
    • Physical Attach Disk เป็น Disk ที่อยุ่ในเครื่อง Server จริงๆ
    • จะมี Volume ประเภทนี้แต่บาง Instance Type เท่านั้น
    • ถ้าเป็น Root Volume จะไม่เสียค่าใช้จ่าย
  2. EBS Volumes คือ Disk ที่ attac้h เข้าไปใน Instance โดยผ่านทาง Network(ไม่ได้ต่อเข้าไปใน Server ตรงๆ) ซึ่งลักษณะของ EBS จะเป็นดังนี้
    • EBS จะมีการ Replicate ข้าม Availability Zone(AZ) โดยอัตโนมัติ นั่นคือ EBS จะมี High Availability โดย default
    • สามารถ Attach เข้าไปใน EC2 Instance ได้แค่ Instance เดียวเท่านั้น
    • สามารถ Monitor การใช้งาน Storage ผ่านทาง CloudWatch ได้
    • สามารถกำหนดให้ EBS และ Snapshot เข้ารหัส(Encryption) ข้อมูลที่อยู่ใน Disk ได้
    • AWS คิดค่าใช้จ่ายแค่ storage ที่เราใช้เท่านั้น

EBS Snapshort

เราสามารถสร้าง Snapshot เพื่อบันทึกข้อมูลที่อยุ่ใน Disk ณ ขณะนั้นเก็บไว้(Backup) เหมือนกับ Virtual Machine ทั่วไป ซึ่ง EBS Snapshort จะมีลักษณะดังนี้

Snapshort จะถูกเข้ารหัสเมื่อเรา Enable Encryption ที่ EBS Volume

ขั้นตอนการสร้าง EC2 Instance

การสร้าง Instance ใน AWS EC2 มีดังนี้

  1. Login เข้าไปที่ AWS Console

    เมื่อ Loging เข้ามาแล้วให้คลิกที่เมนู Services ซ้ายบนและเลือกหัวข้อ EC2

    AWS EC2
    Menu Services > EC2

  2. เข้าไปที่ Instance และกดปุ่ม Launch instances เพื่อสร้าง Instance ใหม่

    AWS EC2 Instance
    สร้าง Instance ใหม่

  3. กรอกชื่อของ Instance ที่ต้องการสร้าง

    AWS EC2 Create New Instance Step 1

  4. เลือก Amazon Machine Image(AMI)

    AWS EC2 Create New Instance Step 2
    เลือก AMI ตามระบบปฏิบัติการ(OS) ที่ต้องการใช้งาน
    AMI คือ Image ที่กำหนดค่าไว้ ทำหน้าที่เป็น Template สำหรับ Instance เราสามารถเลือกได้จาก Amazon Linux, MacOS, Ubuntu, Windows หรือตัวเลือกอื่นๆ

  5. เลือก Instance Type

    AWS EC2 Create New Instance Step 3
    Instance Type จะเป็นตัวกำหนดทรัพยากรที่ใช้ในการประมวลผล คือ CPU, Ram และอื่นๆ ซึ่งจะคิดค่าบริการแตกต่างกันไปตามประเภทที่เราเลือก ตั้งแต่ขนาดเล็กและราคาประหยัด ไปจนถึงขนาดใหญ่และประสิทธิภาพสูง

  6. สร้าง Key Pair

    AWS EC2 Create New Instance Step 4
    เลือก keypair ที่จะใช้ในการ secure shell หรือ remote desktop

  7. ตั้งค่า Network

    AWS EC2 Create New Instance Step 5
    กำหนด Security Group ใหม่
    Security Group ทำหน้าที่เสมือนเป็น Firewalls สำหรับ EC2 Instance ซึ่งจะควบคุมการรับส่งข้อมูล ทั้งขาเข้าและขาออก เราสามารถกำหนดค่า Security Group เพื่ออนุญาตหรือปฏิเสธการรับส่งข้อมูลจาก IP Address, Protocols และ Ports ได้ โดยในขั้นตอนนี้ เราจะสามารถเลือกสร้าง Security Group ใหม่ หรือเลือกจาก Security Group ที่มีอยู่แล้วก็ได้

    เราไม่ควรมีจำนวน Security Group มากเกินไป และใน 1 Security Group ก็ไม่ควรมี Rules เยอะเกินไป

  8. ตั้งค่า Storage

    AWS EC2 Create New Instance Step 6
    Instance ต้องการพื้นที่ Storage สำหรับจัดเก็บทรพยากร Operating system, Applications และข้อมูล Data อื่นๆ เราสามารถเพิ่มและตั้งค่า Storage ได้ในขั้นตอนนี้

  9. กดปุ่ม Launch เพิ่มยืนยันการสร้าง Instance

    AWS EC2 Create New Instance Step 7
    ตรวจสอบการตั้งค่าให้เรียบร้อย เพื่อเริ่มต้นใช้งาน EC2 Instance

    เพียงเท่านี้เราก็จะได้ EC2 Instance มาใช้งาน โดยมีรายละเอียดดังรูป

    AWS EC2 Instance

EC2 User data

เราสามารถใส่ Shell script เข้าไปเพื่อให้ทำงานตอนที่สร้าง Instance ขึ้นมาโดยระบุ User data ซึ่งในตอนที่เราสร้าง EC2 Instance เราจะต้องคลิกที่หัวข้อ Advanced Details และเลื่อนลงไปล่างสุดเราจะเจอช่องให้ใส่ User data ดังรูป ซึ่งเราสามารถใส่ Shell script เข้าไปแบบนี้

1
2
3
4
5
6
#!/bin/bash
yum update -y
yum install -y httpd
echo '<h1>Hello World</h1>' > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd

ในตัวอย่างนี้จะเป็นการติดตั้ง Apache Webserver และสร้าง index.html ขึ้นมาใน /var/www/html หลังจากที่เราสร้าง EC2 Instance เรียบร้อยเราก็จะสามารถเข้าถึงหน้า Web นี้ได้โดยกด Link ที่ Public DNS

EC2 Metadata

EC2 Metadata คือ ข้อมูลของ EC2 Instance เช่น Private IP Address, Public IP Address หรือ Public DNS ซึ่ง EC2 Metadata นั้นจะได้มาหลังจากที่เราสร้าง EC2 Instance ขึ้นมา

ซึ่งเราสามารถเข้าถึง Metadata ของ EC2 Instance ได้ด้วย curl command ดังนี้

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#/bin/bash
yum update -y
yum install httpd -y

TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds:21600")
instanceId=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id)
echo "<h1>Hello World from $instanceId</h1>" > /var/www/html/index.html

sytemctl start httpd
systemctl enable httpd

ในตัวอย่างนี้เราจะใช้ curl command ในการดึง Instance ID ออกมาแสดงผลในหน้า Web ซึ่ง IP Address ที่เราสามารถสอบถาม Metadata ได้ก็คือ 169.254.169.254

อ่านบทความอื่นๆต่อได้ที่นี่

Phanupong Permpimol
Follow me