EC2 Instance Scheduler

I'm Security and Cloud Support Engineer at KBZ Bank. I'm tying to be a Cloud Native Engineer......
ကျွန်တော် အခု လုပ်နေတဲ့ company မှာ ကျွန်တော်တို့ network team သီးသန့် သုံးနေတဲ့ AWS EC2 instance တစ်လုံးရှိတယ်ဗျ။ ကျွန်တော်တို့ သုံးတာကလဲ Office Hour ချိန် အတွင်းပဲ သုံးတာ။ ကျန်တဲ့ အချိန်ဆို အဲ့ instance ကို ထိတောင် မထိမိ ကြဘူး။ အဲ့လိုဆိုတော့ instance က မလိုအပ်ပဲနဲ့ 24 hour run နေရတယ်ပေါ့ဗျာ။ AWS ကလဲ မင်းတို့ သုံးတာ မသုံးတာ ငါ မသိဘူး ငါကတော့ cost ယူမှာပဲ ပေါ့။ အဲ့တော့ ကျွန်တော်တို့ boss က ပြီးခဲ့တဲ့ အပါတ်က ကျွန်တော့်ကို ခေါ်ပြောတယ်။ အဲ့တာလေးကို Office Hour အချိန်လေးမှာပဲ သုံးမယ် ကျန်တဲ့ အချိန်ဆိုရင် auto stop လုပ် နောက်နေ့ office hour ကျရင် auto ပြန် run အဲ့လို လုပ်ချင်တယ် သူ့ကို နည်းလမ်း ရှာပေးပါတဲ့။
ကျွန်တော်ကလဲ ဟုတ်ကဲ့ ရှာကြည့်ပေးမယ်ပေါ့။ အဲ့တော့ ကျွန်တော်လဲ ဟိုရှာ ဒီရှာလုပ်ရင်း အဆင်ပြေသွားတဲ့ နည်းလေးကို ပြန်ပြီး sharing လုပ်ပေးတာပါ။
What is AWS EC2 Instance Scheduler ?
AWS EC2 instance scheduler ဆိုတာကတော့ နာမည် အတိုင်းပဲ aws ec2 instance တွေကို auto start stop လုပ်ပေးတယ်ပေါ့ဗျာ။ သူက ec2 instance တွေတင် မကဘူးဗျ RDS ကိုလဲ support ပေးတယ်။ ပြီးတော့ တစ်ခြား တစ်ချို့ service တွေကိုလဲ support ပေးတယ်ဗျ။
အဓိက benefit ကတော့ cost ကို သက်သာစေတယ်ပေါ့ဗျာ။ ကိုယ် မလိုအပ်တဲ့ အချိန်မှာ stop ထားတော့ cost မတက်တော့ဘူးပေါ့။
ပြီးတော့ Automated Schedule လုပ်တော့ engineer ကိုယ်တိုင် လုပ်စရာလဲ မလိုဘူးဗျာ
Cloudformation Stack တစ်ခု run လိုက်တာနဲ့ လိုအပ်တာ အကုန် သူကပဲ ဆောက်ပေးသွားတယ်။ လိုအပ်တဲ့ IAM role က အစ သူကပဲ လုပ်ပေးသွားတယ်ဗျာ။
ပြီးတော့ AWS က ပေးထားတဲ့ config အတိုင်းပဲ ရတာပဲ မဟုတ်ဘူးဗျကိုယ်လိုချင်တဲ့ အတိုင်းလဲ customize ပြန်လုပ်လို့ ရတယ်ဗျ။ Scalability ကောင်းတယ်ပေါ့ဗျာ။
ပြီးတော့ Documentation မှာ ပြောထားတာကတော့ Cross-Account Support ပေးတယ်ပြောတယ်။ အဲ့တာတော့ ကျွန်တော် မစမ်းကြည့်ရသေးဘူး။
ဒါဆို ဘယ်လို အလုပ်လုပ်လဲ ဆိုတာ တစ်ချက် ကြည့်ရအောင်။
How to work ?

ပုံကိုတော့ @beyondthecloud ကနေ reference ယူထားပါတယ်။ content အောက်ဆုံးမှာ link ထည့်ထားပေးပါ့မယ်။
ပထမဆုံး Cloud Formation ကနေ ပြီးတော့ Event Bridge တစ်ခု ဆောက်လိုက်ပါတယ်။ Event Bridge ကနေပြီးတော့ instance ကို ဘယ်အချိန်မှာ schedule လုပ်ရမလဲဆိုတာ ကို deploy လုပ်ပေးပါတယ်။
Lambda ကတော့ task တွေကို handle လုပ်ပေးတယ်လို့ အလွယ်ပြောလို့ရပါတယ်။
Schedules and periods တွေကိုတော့ Dynamo DB ထဲမှာ သိမ်းပါတယ်။ ကျွန်တော်တို့တွေက ကိုယ် ဘယ်အချိန်မှာ Schedule လုပ်မယ်ဆိုတာကို Dynamo DB ထဲက Table ထဲမှာ ဝင်ပြီး config လုပ်ပေးရမှာပါ။
Cloud Watch ကတော့ just for monitoring ပါ အရမ်းကြီးတော့ အရေးမကြီးပါဘူး။
It’s time for Demo
Theory ကတော့ ဒါပဲဗျ။ ကျွန်တော် ထုံးစံ အတိုင်း Demo လေး တစ်ခု လုပ်ပြပြီး ပြောဖို့ လိုတာလေးတွေကို ထပ်ရှင်းပြပါ့မယ်။ နည်းနည်းတော့ ရှုပ်နိုင်တယ်ဗျ။ မရှင်းတာရှိရင်တော့ ကျွန်တော့်ကို ပြန်မေးလို့ရပါတယ်။
Step 1
ပထမဆုံး Cloud Formation ထဲမှာ stack တစ်ခု create ပါမယ်။
ပြီးရင်တော့ ဒီ S3 Link လေးကို ထည့်ပြီး Next နှိပ်ရပါမယ်။ ဒီtemplate က AWS က လုပ်ထားပေးတာပါ။

ပြီးရင်တော့ ထုံးစံ အတိုင်း stack name ပေးမယ်။

Service မှာတော့ ကိုယ်သုံးမှာလေးတွေ Enable ပေါ့ဗျာ။ Default ကတော့ အကုန် Enable ထားတာပါ။
ကျန်တာတွေကိုတော့ ကျွန်တော် Default အတိုင်းထားပြီးတော့ Next လုပ်ပါမယ်။

နောက်တစ်ဆင့်မှာလဲ ကျွန်တော် demo အနေနဲ့ လုပ်ပြတာဆိုတော့ ဘာမှ မပြင်ပဲ next လုပ်လိုက်ပါမယ်။
နောက်ဆုံး အဆင့်မှာတော့ acknowledge လုပ်ပြီး Submit လုပ်လိုက်တာနဲ့ stack တစ်ခု ဆောက်သွားပါလိမ့်မယ်။

ငါး မိနစ် ဆယ်မိနစ် လောက် ကြာမှာဆိုတော့ coffee ဖျော်လိုက်ပါဦးမယ်။ 🍵
Complete ဖြစ်သွားရင်တော့ အောက်က အရာလေးတွေကိုမြင်ရမှာပါ
AWS Event Bridage Buses Rule မှာ cron expression တစ်ခု မြင်ရပါမယ်။ ကျွန်တော်က Default အတိုင်း ထားထားတော့ 5 minute ပေါ့ဗျာ


Lambda ထဲမှာလဲ မြင်နေရမှာပါ

ကဲ ဒါဆို အရေးကြီးတဲ့ Dynamo DB ဘက်သွားကြည့်ရအောင်
Tables ထဲမှာ ကျွန်တော်ရဲ့ Cloud Formation Template ကြောင့် table အသစ် သုံးခုရောက်နေပါတယ်။ ကျွန်တောတို့ အဓိက သုံးရမှာက Config Table ပါတဲ့ တစ်ခုပါ။

အဲ့ table လေးကို တစ်ချက် click ပြီး Explore Table Items ထဲကို ဝင်ပါမယ်။

Table Items လေးတွေကို မြင်ရမှာပါ

Schedule and Period တွေ အများကြီး မြင်ရလို့ မလန့်သွားပါနဲ့။ ကျွန်တော်တုန်းကတော့ ခက်တယ် ထင်သွားတာ။
Period ဆိုတာက ကိုယ် schedule လုပ်မယ့် အချိန်ကို ထည့်ရတာ။
schedule ဆိုတာက ကိုယ် လုပ်ချင်တဲ့ Period နဲ့ ပြန် bind လုပ်ရတာလို့ ပြောလို့ရတယ်။
ကျွန်တော် office-hours ဆိုတဲ့ period ကို focus ထားပြီး ပြောပြမယ်။
ကျွန်တော် office-hours ဆိုတဲ့ period ထဲကို ဝင်လိုက်မယ်။

ဒါဆို လွယ်တာကို တွေ့မှာပါ
9:00 AM ကနေ 5:00 PM ထိ သုံးမယ်။ weekdays မှာတော့ mon-fri
OK ဒါကို ကျွန်တော် schedule လုပ်မယ်။ uk office hour ဆိုတဲ့ ထဲကို ထည့်မယ် အဲ့တော့ အဲ့ထဲကို ဝင်ရမယ်
Period မှာ ကျွန်တော် အပေါ်မှာ ပြထားတာကို ပြန်ထည့်ပေးမယ်။

အရေးကြီးတာကတော့ time zone. အဲ့တာတော့ သတိထားရမယ်။
ဒါတွေပြီးရင် ကိုယ့်ရဲ့ ec2 instance မှာ tag တွဲပေးလိုက်ရင် ရပြီ။ ကျွန်တော်က uk-office-hours ကို သုံးမှာဆိုတော့
key:schedule value:uk-office-hours

ဒါဆိုရင် ကျွန်တော့်ရဲ့ instance လေးဟာ မနက် ၉ ညနေ ၅ ပဲ run တော့မှာ ဖြစ်ပါတယ်။
နားလည် အကျိုးရှိမယ်လို့ မျှော်လင့်ပါတယ်ဗျ။ မရှင်းတာ ရှိရင်လဲ မေးလို့ရပါတယ်ဗျ
the-art-by-makisam






