การใช้ AMI เพื่อ Copy ข้อมูลของ EC2 Instance

2022.05.13

สวัสดีครับ ผม ต้า ครับ
นี่เป็นบทความแรกที่ผมจะเขียนเกี่ยวกับ AWS ครับ
ครั้งนี้ผมจะมาแนะนำเกี่ยวกับฟังก์ชันของ EC2 ที่มีชื่อว่า AMI ว่าใช้ทำอะไรและมีขั้นตอนในการติดตั้งใช้งานอย่างไรครับ

AMI

AMI (Amazon Machine Images) คือ ฟังก์ชั่นบันทึกการตั้งค่าต่างๆของ EC2 Instance ในรูปแบบของ Image
(เช่น OS หรือ การตั้งค่าด้านใน) เพื่อในการสร้าง EC2 Instance ครั้งต่อไป เราสามารถนำการตั้งค่าที่ถูกบันทึกมาเป็น template ได้

1. สร้าง EC2 Instance

ก่อนอื่นที่เราจะสร้าง AMI ไว้ใช้สำหรับการเก็บการตั้งค่าของ Instance เราจำเป็นต้องมี Instance ก่อน
ในขั้นตอนนี้เราจะมาสร้าง Instance กัน โดยสามารถดูวิธีสร้างได้จากบทความด้านล่างนี้เลยครับ
ทำตั้งแต่หัวข้อแรกจนถึงหัวข้อสุดท้ายเลยครับ

【Update】วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY

โดยในครั้งนี้ผมได้ทำการตั้งค่า Instance ไว้ดังนี้ครับ
Name: supanut-test-ec2
OS: Amazon Linux 2 Kernel 5.10 AMI
Instance Type: t3a.nano
Key pair: supanut-test-ec2.ppk
Network settings(Security Group):supanut-test-ec2 ssh My IP
Configure storage(EBS Size): 8

2. เชื่อมต่อ PuTTY

หลังจากที่เราทำตามบทความการสร้าง EC2 Instance
คราวนี้เราจะมาเปลี่ยน Time zone จาก UTC -> Bangkok เพื่อพิสูจน์ในขั้นต่อไปว่า
การตั้งค่านี้ที่เราทำจะถูกบันทึกเมื่อเราใช้ AMI สร้าง Instance อีกตัว

ก่อนอื่นให้เราเชื่อมต่อ PuTTY ตามบทความด้านล่างนี้ทุกอย่างเลย

วิธีเชื่อมต่อ PuTTY
【Update】วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY

จากนั้นใช้คำสั่งนี้

date


จะสังเกตเห็นว่า Time zone ค่าเริ่มต้นที่แสดงอยู่เป็น UTC
ดังนั้นเราจะใช้คำสั่งต่อไปนี้เพื่อเปลี่ยน Time zone เป็นของประเทศไทย

ln -sf /usr/share/zoneinfo/Asia/Bangkok /etc/localtime

แล้วใช้คำสั่งdateอีกทีเพื่อดู time zone

date

จะสังเกตเห็นว่าเวลา time zone เป็น+07แล้ว

3. สร้าง AMI

หลังจากที่เราปรับ Time zone แล้วให้กลับมาหน้า EC2 Instance
แล้วกดตามนี้
1. เลือก✅ Instance ที่เราต้องการสร้างAMI
2. กดActions
3. เลือกImage and templates
4. เลือกCreate image
แล้วตั้งชื่อ Image name โดยครั้งนี้ผมจะตั้งชื่อว่าsupanut-test-ami

เลื่อนลงมาด้านล่างจะเห็นปุ่มAdd tag
ให้เรากดตามรูป
1. กดAdd tag
2. ใส่คำว่าNameในช่อง Key
3. ใส่ชื่อที่เราต้องการ ในช่อง Value-optional(ชื่อในส่วนนี้จะไปแสดงอยู่ในช่อง Name หน้า AMIs)

หลังจากนั้นกดCreate Imageที่บริเวณขวาล่าง

4.ใช้ AMI สร้าง Copy ของ Instance

ให้เราไปที่ฟังก์ชัน Image > AMIs

จะเห็นว่าเราจะได้ AMI ที่ชื่อsupanut-test-ami

ให้เรารอจนกว่า Status จะเปลี่ยนจากPendingเป็นAvailable

แล้วคลิก
1. เลือก✅ AMI ที่เราจะใช้สร้าง Copy ของ Instance โดยในที่นี้คือsupanut-test-ami
2. กดLaunch instance from AMI

จะเห็นได้ว่าเรามาอยู่หน้าLaunch an instance

โดยในการสร้าง Instance ครั้งนี้ไม่สามารถเปลี่ยน Application and OS Images (Amazon Machine Image) ได้

เพราะว่านี่เป็นการ Copy การตั้งค่าของ Instance ตัวก่อนหน้านี้
แต่ว่านอกจากการเปลี่ยน OS แล้ว เราสามารถปรับเปลี่ยนการตั้งค่าอย่างอื่นให้เหมือนหรือแตกต่างจากเดิมได้
โดยในครั้งนี้ผมจะตั้งค่าตามนี้ครับ
Name:supanut-test-ec2-copy
Instance Type:t3a.micro
Key pair:supanut-test-ec2.ppk
Network settings(Security Group):supanut-test-ec2-copy ssh My IP
Configure storage(EBS Size): 8
เมื่อเรากรอกข้อมูลเสร็จแล้วให้กดLaunch instanceได้เลยครับ

Tips!!

ในกรณีที่เราทำ Key pair หาย
เราสามารถใช้วิธีนี้ในการสร้างตัว Copy Instance ที่เราทำ key pair หาย แล้วเปลี่ยน key pair อันใหม่ได้

5.ตรวจสอบการ Copy

ในขั้นตอนนี้เราจะมาตรวจสอบว่า instance ตัวใหม่ที่เราสร้างขึ้นได้ Copy การตั้งค่าจากตัวที่แล้วจริงไหมนะครับ
ก่อนอื่นให้เรา CopyPublic IPv4 addressของ instance ตัวใหม่ที่สร้างขึ้นซึ่งในกรณีของผมคือsupanut-test-ec2-copy

แล้วนำไปเปิดในPuTTYนะครับ

จากนั้นใช้คำสั่งdateเพื่อตรวจสอบ Time zone นะครับ

date

จากสังเกตเห็นว่า Time zone ที่แสดงอยู่เป็น+07เพราะว่า Instance ตัวนี้ได้ก๊อปปี้การตั้งค่ามาจาก Instance ตัวแรกแล้วนั่นเองนะครับ

เพิ่มเติมเกี่ยวกับ AMI

ทุกครั้งที่เราสร้าง AMI เราจะได้ Snapshot ด้วย
โดยสังเกตได้จาก ฟังก์ชัน Elastic Block Store -> Snapshots นะครับ

อธิบายเกี่ยวกับ Snapshot

Snapshot คือ template เก็บข้อมูลของ instance ชนิดนึงซึ่งมีความแตกต่างกับ AMI
AMI คือการเปลี่ยนรูปแบบ Instance ให้กลายเป็น Image โดยในนี้จะมี Snapshot อยู่ (จะสังเกตเห็นว่า AMI ย่อมาจาก Amazon Machine Images)
Snapshot คือการเปลี่ยนรูปแบบ EBS ให้กลายเป็น Image (เป็นการเก็บ Image แค่ในส่วนของ Storage)

6.การลบ AMIs และ Snapshots

สำหรับการลบ AMI เราสามารถทำได้ตามนี้ครับ
1. เลือก✅ AMI ที่เราต้องการลบ
2. กดActions
3. เลือกDeregister AMI
4. กดปุ่มสีส้มDeregister AMIเพื่อยืนยัน
สำหรับการลบ Snapshot เราสามารถทำได้ตามนี้ครับ
1. เลือก✅ Snapshot ที่เราต้องการลบ
2. กดActions
3. เลือกDelete snapshot
4. กดปุ่มสีส้มDeleteเพื่อยืนยัน

และนอกจากการลยสิ่งเหล่านี้
ผมแนะนำให้ลบ AWS Resource ที่สร้างขึ้นในบทความนี้ด้วยครับ
(EC2 Instacen、Securyty Group、KeyPair)

สรุป

AMI เป็นการเก็บข้อมูลการตั้งค่าของ Instance ซึ่งมีประโยชน์อย่างมากในกรณีที่เราใช้เวลาในการตั้งค่านาน
แล้วเราอยากที่จะสร้าง Instance ที่มีการตั้งค่าเหมือนกัน เราสามารถใช้ AMI ก๊อปปี้การตั้งค่าได้ทันที และยังใช้สำหรับการ Backup EC2 Instance ได้อีกด้วย

บทความที่เกี่ยวข้อง

【Update】วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY
วิธีตั้งค่า Time Zone ใน Amazon Linux 2 ของ EC2
วิธีสร้าง Snapshot EC2 แบบ On-demand ด้วย AWS Backup
EC2 AMI Official Documents
EC2 Instances and AMIs Official Documents

ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่