วิธีการรันคำสั่งจาก Management Console โดยไม่ต้องเข้า Windows

วิธีการรันคำสั่งจาก Management Console โดยไม่ต้องเข้า Windows นี้ ถึงแม้ไม่ได้ทำการ Login เข้าไปยัง Windows แต่เราสามารถส่งคำสั่งไปยัง Windows ได้โดยใช้แค่ AWS Systems Manager ซึ่งจะช่วยให้คุณไม่ต้องเสียเวลาเข้าใช้งานโดยการ Login เพราะว่าเราสามารถใช้งานสำหรับการทำงานอัตโนมัติได้ และในการสาธิตครั้งนี้จะเป็นการแนะนำในรูปแบบ "Shutdown"

ครั้งนี้จะมาแนะนำวิธีการรันคำสั่งจาก Management Console โดยไม่ต้องเข้า Windows โดยมีหัวข้อดังนี้

การสร้าง Role ใน IAM

มาที่ค้นหา🔍︎ IAM» เลือกIAM
search_iam

เลือกRoles
menu_roles

คลิกCreate role
create_role-1

การตั้งค่า Step 1 : Select trusted entity นี้คือ:
Trusted entity type
» เลือกAWS service

Use case
» Common use cases:EC2
» คลิกNext
create_role-2

การตั้งค่า Step 2 : Add permissions นี้คือ:
Add permissions
» ค้นหา Permissions policies:🔍︎ AmazonSSMManagedInstanceCore+ Enter
» Checkที่ชื่อ AmazonSSMManagedInstanceCore
» คลิกNext
create_role_win-3

การตั้งค่า Step 3 : Name, review, and create นี้คือ:
» Role name:tinnakorn-win-shutdown-ec2-role(ชื่ออะไรก็ได้)
create_role_win-4

เลื่อนลงมาด้านล่างสุด คลิกCreate role
create_role-5

ค้นหาชื่อ Role ที่สร้างไปเมื่อสักครู่นี้:🔍︎ tinnakorn-win-shutdown-ec2-role+ Enter
จากนั้นคลิกที่ Role name ของเราเพื่อตรวจสอบข้อมูลการตั้งค่าได้เลย
create_role_win-6

การสร้าง Key Pair, Instance, Elastic IP ใน EC2

※ในส่วนถัดไปจะเป็นส่วนของ EC2 โดยจะทำการสร้าง Key Pair, Instance Microsoft Windows Server 2019 Base และ Elastic IP (EIP)

ถ้าเราต้องการสร้าง Instance อะไรก็แล้วแต่ ต้องสร้าง Key Pair ก่อนเสมอ

มาที่ค้นหา🔍︎ EC2» เลือกEC2
Search-EC2

จากนั้นเลือกฟังก์ชันที่ต้องการใช้งาน ในตัวอย่างนี้คือ Key Pairs, Instances และ Elastic IP

การสร้าง Key Pair

การสร้าง Key Pair นี้ ต้องสร้างขึ้นเพื่อนำไปใช้ในการสร้าง Instance

คลิกKey Pairs
menu_keypairs

คลิกCreate key pair
cre_key-pairs-1

การสร้าง Key pair นี้คือ:
» Name:tinnakorn-win-shutdown(ชื่ออะไรก็ได้)
» เลือก Private key file format:⚫ .pem
» คลิกCreate key pair
cre_key-pairs-2

เมื่อคลิก Create key pair แล้ว ไฟล์.pemจะถูกดาวน์โหลดอัตโนมัติ
จากนั้นลองหาชื่อ key pair ของเรา
cre_key-pairs-3

การสร้าง Microsoft Windows Server 2019 Base

เมื่อสร้าง Key pair เสร็จแล้ว ทำการสร้าง Windows Instance ได้เลย

คลิกInstance
Instance-select

คลิกLaunch instances
Ins-win-1

Step 1: Choose an Amazon Machine Image (AMI) คือ Instance จะมีเซิร์ฟเวอร์ให้เลือกใช้มากมาย เช่น macOS, Red Hat, SUSE Linux, Ubuntu, Microsoft Windows, Debian เป็นต้น ซึ่งในบทความนี้จะใช้ Microsoft Windows Server 2019 Base ในการติดตั้ง

» คลิกSelect
Ins_win_shutdown-2

Step 2: Choose an Instance Type คือ เราสามารถเลือก Type CPU Memory ที่จะนำไปใช้งานได้ตามความต้องการ ไม่ว่าเว็บไซต์จะมีขนาดเล็กหรือขนาดใหญ่ ก็สามารถเลือกขนาดความจุของ CPU Memory ได้ตามความเหมาะสม

» เลือก Family =>t3a| Type =>t3a.medium| vCPUs =>2| Memory =>4(สามารถเลือกใช้งานได้ตามความต้องการ)
» คลิกNext: Configure Instance Details
Ins-win-3

Step 3: Configure Instance Details
» เลื่อนลงมาประมาณตรงกลางที่หัวข้อ IAM role แล้วเลือกชื่อ role ของเรา เช่นtinnakorn-win-shutdown-ec2-role
» คลิกNext: Add Storage
Ins_win_shutdown-4

Step 4: Add Storage คือ ในส่วนของ Size (GiB) เราสามารถเพิ่ม Storage ได้ โดยค่าเริ่มต้นจะเป็น 30GB

» คลิกNext: Add Tags
Ins-win-5

Step 5: Add Tags » คือ การเพิ่มชื่อของ Tag ที่ต้องการใช้งาน

» คลิกAdd Tag
chang_memory-1

เพิ่ม Tag ตามนี้
» Key:Name
» Value:tinnakorn-win-shutdown(ใส่ชื่ออะไรก็ได้)
» คลิกNext: Configure Security Group
Ins_win_shutdown-6

Step 6: Configure Security Group คือ การตั้งค่า My IP เพื่อจำกัดการเชื่อมต่อ RDP จากทุกตำแหน่ง ซึ่งในส่วนนี้จะทำให้สามารถเชื่อมต่อ RDP จาก My IP (ที่อยู่ IP ปัจจุบันของคุณ) ได้เท่านั้น

» เปลี่ยนชื่อ Security group name เพื่อไม่ให้สับสนกับผู้ใช้ของคนอื่น เช่นtinnakorn-win-shutdown(ค่าเริ่มต้นจะเป็นชื่อlaunch-wizard-1)
» เลือก Source:My IP
» คลิกReview and Launch
Ins_win_shutdown-7

Step 7: Review Instance Launch
» เลื่อนลงมาด้านล่างสุด เลือกหัวข้อ▶ Instance Details
» เลื่อนลงมาที่หัวข้อIAM role: tinnakorn-win-shutdown-ec2-role(นี่คือ role ที่เลือกไว้ก่อนหน้านี้)
» คลิกLaunch
Ins_win_shutdown-8

ในส่วนของ Popup ให้ทำตามขั้นตอนด้านล่าง
» Select a key pair:tinnakorn-win-shutdown | RSA(ให้เลือก key pair ที่สร้างไว้ตอนแรก key pair)
» คลิก Checkbox
» คลิกLaunch Instances
Ins_win_shutdown-9

ถ้ามีข้อความแจ้งเตือนสีเขียวเหมือนรูปภาพด้านล่างนี้ เท่ากับว่าการสร้าง Instance เสร็จสิ้น
จากนั้นให้คลิกView Instances
Ins_win_shutdown-10

หลังจากสร้าง Instance เสร็จแล้ว ให้สังเกตที่ Status Checks จะเห็นว่ามีสถานะเป็น🕘 Initializingคือ Instance กำลังสตาร์ทระบบขึ้นมานั่นเอง
Ins_win_shutdown-11

เมื่อ Instance มีสถานะเป็น✅ 2/2 checks passedการสร้าง Instance ก็เสร็จสมบูรณ์
Ins_win_shutdown-12

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

การสร้าง Elastic IP (EIP)

เลือกElastic IPs
Select-EIP

คลิกAllocate Elastic IP address
Allocate-EIP

คลิกAdd new tag
Allocate-EIP-1

» Key:Name
» Value-optional:tinnakorn-win-shutdown(ใส่ชื่อ Tag ตามต้องการ หรือจะใช้ชื่อเดียวกับ Instance ก็ได้)
» คลิกAllocate
eip_win-2

เมื่อสร้าง EIP เสร็จแล้ว ต่อไปจะทำการเชื่อมโยง EIP เข้ากับ EC2 Instance ดังนี้
» คลิกActions ▼
» เลือกAssociate Elastic IP address
eip_win-3

เลือก Instance ตามนี้
» คลิกChoose an instanceในช่องสีฟ้า แล้วเลือก Instance ของเราที่มีสถานะ running เท่านั้น เช่นi-***************** (tinnakorn-win-shutdown) - running
» คลิกAssociate
eip_win-4

การเชื่อมโยง IP เสร็จเรียบร้อยแล้ว ต่อไปจะตรวจสอบ IP ที่หน้า Elastic IP และหน้า Instance
» คลิกที่Allocated IPv4 addressของเราตามรูป
eip_win-5

หน้า Elastic IP
ให้ดูที่ Allocated IPv4 address นี้จะเหมือนกับ Public IPv4 address ของ Instance
eip_win-6

หน้า Instance
ให้ดูที่ Public IPv4 address ของ Instance จะเห็นว่า IP จะถูกเปลี่ยนไปตาม Allocated IPv4 address ของ Elastic IP
eip_win-7

การ Connect to Instance เพื่อเข้าใช้งาน Windows ผ่านไฟล์ RDP

คลิกInstance IDของเรา
connect_win-1

คลิกConnect
connect_win-2

ในส่วนของConnect to instanceจะเป็นการ Download remote desktop file และ Get password

» เลือกหัวข้อRDP client
» คลิกDownload remote desktop fileแล้วตัวไฟล์จะถูกดาวน์โหลดมาที่คอมพิวเตอร์และเป็นชื่อตาม Instance ของเราโดยอัตโนมัติ
connect_win-3

คลิกGet password
connect_win-4

ในส่วนของ Get Windows password ต้องรอประมาณ 5 นาทีจนกว่าการเริ่มต้นระบบของ Windows จะเสร็จสมบูรณ์ จึงจะสามารถทำขั้นตอนถัดไปได้
Get-windows-password

คลิกBrowse(เป็นการเพิ่มไฟล์.pemเข้ามายัง Instance เพื่อ Generate Password ขึ้นมา)
connect_win-5

มาที่ไฟล์.pemที่ได้มาจากการสร้าง Key pair (ของผมจะเป็นชื่อtinnakorn-win-shutdown.pem) จากนั้นคลิกOpen
connect_win-6

คลิกDecrypt Password
connect_win-7

จะเห็นว่ามี Password ขึ้นมาแล้ว
connect_win-8

กลับมาที่ไฟล์remote desktopหรือไฟล์.rdpที่ดาวน์โหลดมาจาก Instance ของเรา (ของผมจะเป็นชื่อtinnakorn-win-shutdown.rdp) จากนั้นดับเบิ้ลคลิกที่ไฟล์ได้เลย
connect_win-9

คลิกConnect
connect_win-10

ในส่วนนี้เราต้องใส่ Password ที่ Generate ใน Instance เมื่อสักครู่นี้
connect_win-11

กลับมาที่ Connect to Instance ของเรา จากนั้น Copy Password ตามรูปได้เลย
connect_win-12

นำ Password ที่ Copy มาจาก Instance แล้ววางในช่อง Administrator เพื่อ Login เข้ามาใน Windows Server
connect_win-13

คลิกYes
connect_win-14

เมื่อทำการ Login เข้ามาแล้ว ก็จะมีหน้าตาเป็น Windows Server 2019 เหมือนกับรูปด้านล่าง
connect_win-15

การ Run Command ใน Systems Manager

ก่อนอื่นให้อัปเดต SSM Agent ถ้าไม่ทำการอัปเดต Run Command ก็จะไม่ทำงาน

มาที่ค้นหา🔍︎ Systems Manager» เลือกSystems Manager
search_systems_manager

เลือกRun Command
menu_systems_manager

คลิกRun command
ssm_run_command-1

ค้นหา🔍︎ AWS-UpdateSSMAgent+ Enter จากนั้นคลิกที่⚫ AWS-UpdateSSMAgent
ssm_run_command-2

กลับมาที่หน้า Instance คลิก❐ Instance IDเพื่อ Copy แล้วนำไปเก็บไว้ที่ Notepad
id_win_instance

กลับมาที่ AWS Systems Manager > Run Command
การตั้งค่า Targets ในตัวอย่างนี้คือ:
» เลือก⚫ Choose instances manually
» ค้นหา Instances ID ของเรา เช่น🔍︎ i-*****************
» Check✅ i-*****************ที่ Instance ID ของเรา
ssm_run_command-3

ในส่วนของ Output options นี้ แค่ Uncheck☐ Enable an S3 bucketออก
ssm_run_command-4

เลื่อนมาด้านล่างสุด คลิกRun
ssm_run_command-5

เมื่อมาหน้านี้แล้ว รอสักครู่จนกว่า In Progress จะเป็น Success
ssm_run_command-6-1

เมื่อขึ้น Success การตั้งค่านี้ก็เสร็จสมบูรณ์
ssm_run_command-7-1

การ Run Command ผ่าน PowerShell Script ใน Systems Manager

ในขั้นตอนนี้เป็นตัวอย่างการรันคำสั่ง "shutdown"

มาที่ค้นหา🔍︎ Systems Manager» เลือกSystems Manager
search_systems_manager

เลือกRun Command
menu_systems_manager

คลิกRun command
ssm_run_command-1

ค้นหา🔍︎ AWS-RunPowerShellScript+ Enter จากนั้นคลิกที่⚫ AWS-RunPowerShellScript
ssm_run_power_shell-1

ในส่วนของ Command parameters นี้ เราสามารถกำหนดเวลาที่ต้องการ Shutdown Windows ได้โดยเราต้องใส่ค่าเวลาเป็นวินาที สามารถคำนวณได้ง่ายๆ ดังนี้
・3600 วินาที = 1 ชั่วโมง
・1800 วินาที = 30 นาที
・900 วินาที = 15 นาที
・600 วินาที = 10 นาที
・300 วินาที = 5 นาที
・60 วินาที = 1 นาที

ในตัวอย่างนี้จะสาธิตแค่เวลา 20 วินาที ให้ใส่คำสั่งตามนี้และกำหนดเวลาของคุณเอง

Shutdown /s /t 20

ssm_run_power_shell-2

กลับมาที่หน้า Instance คลิก❐ Instance IDเพื่อ Copy แล้วนำไปเก็บไว้ที่ Notepad
id_win_instance

กลับมาที่ AWS Systems Manager > Run Command
การตั้งค่า Targets ในตัวอย่างนี้คือ:
» เลือก⚫ Choose instances manually
» ค้นหา Instances ID ของเรา เช่น🔍︎ i-*****************
» Check✅ i-*****************ที่ Instance ID ของเรา
ssm_run_command-3

ในส่วนของ Output options นี้ แค่ Uncheck☐ Enable an S3 bucketออก
ssm_run_command-4

เลื่อนมาด้านล่างสุด คลิกRun
ssm_run_command-5

เมื่อมาหน้านี้แล้ว รอสักครู่จนกว่า In Progress จะเป็น Success
ssm_run_power_shell-6

เมื่อขึ้น Success การตั้งค่านี้ก็เสร็จสมบูรณ์
ssm_run_power_shell-7

มาดูที่ Windows จะมีแจ้งเตือนขึ้นมาเกี่ยวกับการ Shutdown เมื่อถึงเวลาที่กำหนดไว้ ตัวระบบจะ Shutdown ให้โดยอัตโนมัติ
ssm_run_power_shell-8

กลับมาที่หน้า Instance อีกครั้ง แล้วดูที่ Instance state เมื่อ Shutdown แล้วจะมีสถานะเป็นStopped
ssm_run_power_shell-9

การ Run Command อื่นๆ ผ่าน PowerShell Script ใน Systems Manager

สำหรับตัวอย่างการรันคำสั่งอื่นๆ ก็สามารถทำได้เช่นกันดังนี้

คำสั่งหยุดใช้บริการใน Windows

net stop [service name]

คำสั่งเริ่มใช้บริการใน Windows

net start [service name]

คำสั่งสำรองไฟล์

robocopy  [distination]

สรุป

การสาธิตนี้เป็นการ Shutdown ระบบปฏิบัติการของ Microsoft Windows Server 2019 Base โดยทำการตั้งค่าและส่งคำสั่งจาก AWS Systems Manager ไปที่ Windows PowerShell เมื่อถึงเวลาที่ตั้งค่าไว้ Windows ก็จะ Shutdown โดยอัตโนมัติ

นอกจากนี้เรายังสามารถรันคำสั่งอื่นๆ ได้ เช่น คำสั่งการหยุดใช้บริการใน Windows, คำสั่งการเริ่มใช้บริการใน Windows, คำสั่งการสำรองข้อมูลใน Windows ผ่าน PowerShellScrip และคำสั่งอื่นๆ อีกมากมาย เป็นต้น

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