【Update】วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติด้วย Amazon EventBridge

บทความนี้เป็นการ Update วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติ เนื่องจากว่าหน้า AWS Console ของฟังก์ชัน Rules ใน Amazon EventBridge มีการ Update พอสมควร จึงทำให้ขั้นตอนการสร้าง Rule นั้นเปลี่ยนแปลงไป

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

สวัสดีครับ ผมป๊อปครับ ครั้งนี้จะมา 【Update】วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติด้วย Amazon EventBridge ในหัวข้อ วิธีตั้งค่ากำหนดการ Stop EC2 Instance เนื่องจากว่าหน้า AWS Console ของฟังก์ชัน Rules ใน Amazon EventBridge มีการ Update

สิ่งที่ต้องมี

ก่อนอื่นต้องทำการติดตั้ง EC2 Instance สามารถดูวิธีการทำได้ที่คำอธิบายและลิงก์ด้านล่างนี้

※ชื่อ Key Pairs และ EC2 Instance ของบทความนี้คือtinnakorn-schedule-stop
※หัวข้อ ❌3. Connect to EC2 by PuTTY ไม่ต้องทำ
※Link : วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy

เมื่อติดตั้ง EC2 Instance เสร็จเรียบร้อยแล้ว ให้ทำการเชื่อมโยง Elastic IP ไปยัง EC2 Instance เพื่อไม่ให้ IP Address เกิดการเปลี่ยนแปลง สามารถทำตามขั้นตอนที่ลิงก์ด้านล่างนี้ได้เลย

วิธีตั้งค่ากำหนดการ Stop EC2 Instance

เราจะสาธิตวิธีตั้งค่ากำหนดการ Stop EC2 Instance ใน Service Amazon EventBridge โดยจะใช้ชื่อว่าtinnakorn-schedule-stopซึ่งเป็นชื่อเดียวกับ Instance นั่นเอง

ค้นหา?︎ Amazon EventBridge» เลือกAmazon EventBridge
search_eventbridge

เมื่อเข้ามาที่ Amazon EventBridge แล้ว มาที่เมนูด้านซ้าย เลือกRules
menu_rules_eventbridge

มาที่หัวข้อ Rules คลิกCreate rule
cre_schedule_stop_ec2-1

เมื่อเข้ามาหน้า Create rule แล้ว สามารถดูการตั้งค่านี้เป็นแนวทางได้เลย
การตั้งค่า Step 1 Define rule detail นี้คือ:
» Name:tinnakorn-schedule-stop
» Description - optional:tinnakorn-schedule-stop
» เลือก⚫ Schedule
» คลิกNext
update-rule-stop-1

การตั้งค่า Step 2 Define schedule นี้คือ:
» เลื่อนลงมาหัวข้อ Schedule pattern ด้านล่างสุด
» Cron expression: ใส่วันที่และเวลาที่ต้องการ Stop โดยในแต่ละช่องจะมีข้อความบอกอยู่ด้านล่าง เช่น55 3 * * ? *(ซึ่งเวลาประเทศไทยคือ10:55นาที ส่วนวันที่ถ้าเป็น*ก็จะหมายถึงวันปัจจุบัน)
» เมื่อใส่วันที่และเวลาแล้ว จะมี Next 10 trigger date(s) ปรากฎขึ้นมา เราสามารถเลือก:Local time zone ▼เพื่อดูเวลาประเทศไทยได้
» คลิกNext
update-rule-stop-2

สามารถศึกษาเรื่อง Cron expression เพิ่มเติมได้ที่ : https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html

มาที่หน้า EC2 Instance ของเรา คลิกเพื่อ Copy Instance ID แล้วนำไปบันทึกไว้ที่ Notepad ก่อนก้ได้
cre_schedule_stop_ec2-4-fix

การตั้งค่า Step 3 Select target(s) นี้คือ:
» เลือก Select a target:EC2 StopInstances API call ▼
» InstanceId*:i-*****************
» ⚫ Create a new role for this specific resource: ชื่อ Role ตัวอย่างนี้คือ ↓
tinnakorn-schedule-stop_Amazon_EventBridge_Invoke_Action

※ตัวอย่างการตั้งชื่อ Role (ดูเพื่อเป็นแนวทาง โดยคุณสามารถตั้งชื่ออะไรก็ได้)

# ทำการลบชื่อเดิมด้านหลังตั้งแต่ "_On_EC2_Instance_823471707" ออกก็จะได้เป็น "Amazon_EventBridge_Invoke_Action"  
# จากนั้นใส่ชื่อ EC2 Instance: "tinnakorn-schedule-stop_" ของเราไว้ด้านหน้าของชื่อ Role
# ก็จะได้เป็น ↓
tinnakorn-schedule-stop_Amazon_EventBridge_Invoke_Action  # (ชื่อนี้เป็นแค่ตัวอย่าง)

» คลิกNext
update-rule-stop-3

การตั้งค่า Step 4 - option Configure tags นี้ไม่ต้องตั้งค่าอะไร คลิกNextได้เลย
update-rule-stop-4

ขั้นตอน Step 5 Review and create นี้คือการตรวจสอบข้อมูลการตั้งค่า
update-rule-stop-5

เมื่อทำการตรวจสอบการตั้งค่าเสร็จแล้ว คลิกCreate ruleได้เลย
update-rule-stop-6

เมื่อมาหน้านี้แล้ว ให้คลิกที่ชื่อ Rule ของเรา
cre_schedule_stop_ec2-7

ในส่วนนี้คือ Rule ของเรา ซึ่งจะมีข้อมูลที่เราได้ตั้งค่าไว้ในหน้านี้
update-rule-stop-7

กลับมาที่หน้า EC2 Instance ของเรา แล้วสังเกตการเปลี่ยนแปลงของ Instance ตามเวลาที่เราได้ระบุไว้
จะเห็นว่า Instance state เริ่ม Stopping
cre_schedule_stop_ec2-9-fix

เมื่อ Instance state เป็น Stopped การ Stop Instance ก็เสร็จสมบูรณ์
cre_schedule_stop_ec2-10-fix

ในกรณีที่เราต้องการใช้ Instance นี้อีกครั้ง ก็สามารถ Start Instance ด้วยตัวเองได้ปกติ
คลิกที่Instance state ▼เลือกStart instance
cre_schedule_stop_ec2-11-fix

เมื่อ Instance state เป็น Running ก็จะสามารถใช้งาน Instance ได้ตามปกติ
cre_schedule_stop_ec2-12-fix

สรุป

ในบทความนี้ก็ได้ Update วิธีตั้งค่ากำหนดการ Stop Instance อัตโนมัติด้วย Amazon EventBridge เรียบร้อยแล้ว ซึ่งการตั้งค่านี้ จะช่วยเพิ่มความสะดวกสบายในการทำงานให้กับเรามากยิ่งขึ้น เพราะเราสามารถกำหนดวัน เวลา ที่ต้องการ Stop Instance ได้โดยไม่ต้องรอจนกว่าจะถึงวันที่ต้องการ Stop Instance และไม่ต้องมาเสียเวลา Stop Instance ด้วยตัวเอง

ตัวอย่างเช่น ถ้าเราไม่ได้ใช้งานเซิร์ฟเวอร์ Instance ในตอนกลางคืน แต่บางครั้งอาจจะลืม Stop Instance ซึ่งเราสามารถ Stop Instance ด้วยการตั้งค่านี้ได้ตลอดเวลา นอกจากนี้ยังช่วยประหยัดค่าใช้จ่ายให้เรา และทำให้เราสามารถใช้งาน AWS ได้ในราคาที่ถูกลงอีกด้วย

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