[Update] การใช้งาน SSM Role เชื่อมต่อเข้า AWS EC2 Instance โดยไม่ต้องมี Inbound rules
*การเขียนบทความครั้งนี้ เป็นการ Update เนื้อหาของลิงก์บทความด้านล่างนี้เพื่อให้เนื้อหาเป็นปัจจุบัน
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้จะมาเขียนบทความเกี่ยวกับการใช้งาน SSM Role ที่ใช้กับ EC2 Instance โดยนำบทความเวอร์ชันเก่าที่กล่าวไว้ด้านบนมาเขียนใหม่เพื่อให้มีเนื้อหาเป็นปัจจุบัน เนื่องจาก Policy: AmazonEC2RoleforSSM
จะเลิกใช้ในเร็วๆนี้ ซึ่งต้องใช้ Policy: AmazonSSMManagedInstanceCore
แทนครับ
ดูข้อมูลเพิ่มเติมได้ที่ Configure instance permissions for Systems Manager
เคยรู้สึกยุ่งยากเวลาต้องมาคอยอัปเดต My IP ใน Inbound rules ของ Security Group เวลาต้องการเข้าใช้งาน SSH ของ EC2 Instance บ่อยๆไหมครับ?
สำหรับคนที่รู้สึกยุ่งยากแบบผม วันนี้ผมจะมาแนะนำการเชื่อมต่อเข้า EC2 Instance โดยไม่ต้องใช้ SSH Key หรือ Key Pair แต่เราจะใช้ Session Manager ในการเชื่อมต่อกัน
จะเป็นยังติดตามได้ในบทความนี้ได้เลยครับ
สำหรับใครที่อยากอ่านรายละเอียดเพิ่มเติมเกี่ยวกับ SSM สามารถอ่านได้ที่ลิงก์ต่อไปนี้ได้เลยครับ
What is AWS Systems Manager? - AWS Systems Manager
สร้าง IAM Role สำหรับ EC2 Instance
ดูตัวอย่างวิธีการสร้าง SSM Role ได้ที่ลิงก์บทความด้านล่างนี้
* ลิงก์บทความด้านบน[↑]นี้เป็นแค่ตัวอย่าง อาจมีการตั้งค่าบางส่วนที่แตกต่างกัน
แนะนำให้ดูตัวอย่างตั้งค่าการสร้าง SSM Role ของบทความครั้งนี้ตามด้านล่างนี้ประกอบด้วยครับ
ครั้งนี้จะสร้าง SSM Role ตามด้านล่างนี้
ตัวอย่างตั้งค่าการสร้าง SSM Role ของบทความครั้งนี้
เข้ามาที่ Service
Identity and Access Management (IAM)
เลือกRoles
จากเมนูด้านซ้าย
คลิกCreate role
Step 1 - Select trusted entity:
Trusted entity type:AWS service
Use case: ◉EC2
คลิกNext
Step 2 - Add permissions:
Permissions policies
Policy name: ค้นหาและติ๊ก✅
AmazonSSMManagedInstanceCore
คลิกNext
Step 3 - Name, review, and create:
Role details
Role Name:ec2-ssm-managed-instance-core
(ชื่ออะไรก็ได้)
เลื่อนลงมาด้านล่างสุด คลิกCreate role
เมื่อสร้าง SSM Role เสร็จแล้ว โปรดอ่านที่นี่ก่อนที่จะไปสร้าง EC2 Instance ครับ
- สำหรับใครที่มี EC2 Instance (Amazon Linux) ที่พร้อมใช้งานอยู่แล้ว ข้ามไปทำที่หัวข้อ เพิ่ม SSM Role ใน EC2 Instance ได้เลยครับ
- สำหรับใครที่ยังไม่ได้สร้าง EC2 Instance ให้ทำตามหัวข้อ สร้าง EC2 Instance ด้านล่างนี้ครับ
สร้าง EC2 Instance
ดูตัวอย่างวิธีการสร้าง EC2 Instance (Amazon Linux 2023) ได้ที่ลิงก์บทความด้านล่างนี้
* ลิงก์บทความด้านบน[↑]นี้เป็นแค่ตัวอย่าง อาจมีการตั้งค่าบางส่วนที่แตกต่างกัน
แนะนำให้ดูตัวอย่างตั้งค่าการสร้าง EC2 Instance ของบทความครั้งนี้ตามด้านล่างนี้ประกอบด้วยครับ
ครั้งนี้จะสร้าง EC2 Instance เป็นระบบ Amazon Linux 2023 AMI
ในขณะที่สร้าง EC2 Instance เราสามารถเพิ่ม SSM Role เข้าไปใน EC2 Instance ได้เลยโดยที่ไม่ต้องไปเพิ่มทีหลังครับ
ตัวอย่างตั้งค่าการสร้าง EC2 Instance ของบทความครั้งนี้
Region:
Singapore
※Launch instances
Name and tags
Name:tinnakorn-test-ec2-ssm
(ตั้งชื่อที่ต้องการ)Application and OS Images (Amazon Machine Image)
Amazon Machine Image (AMI):Amazon Linux 2023 AMI
Instance type
Instance type:t3a.micro
(เลือกสเปคตามต้องการ)Key pair (login)
Key pair name - required:Proceed without a key pair (Not recommended)
(ครั้งนี้จะไม่ใช้ Key pair)Network settings
Firewall (security groups)
Security group name - required:tinnakorn-test-ec2-ssm
(ตั้งชื่อที่ต้องการ)
Description - required:tinnakorn-test-ec2-ssm
(ป้อนตามต้องการ)
Inbound security groups rules
คลิกRemove
(ครั้งนี้จะไม่ตั้งค่า Security group rule)Configure storage
1x:8
GiBgp2
Root volume (Default)ー สามารถเพิ่ม SSM Role ได้ที่ Advanced details ー
คลิก
Advanced details
เพื่อขยายหน้าจอ แล้วเลือก Role ที่เราสร้างไว้ก่อนหน้านี้
IAM instance profile:ec2-ssm-managed-instance-core
เพิ่ม SSM Role ใน EC2 Instance
ขั้นตอนนี้จะเหมาะสำหรับผู้ใช้งานที่มี EC2 Instance (Amazon Linux) ที่พร้อมใช้งานอยู่แล้ว
ก่อนอื่นให้เราเข้ามาที่หน้าจอ EC2 Intance ของเรา แล้วตรวจสอบ IAM Role ตามรูปภาพ
ถ้าแสดง -
ตามรูปภาพนี้ คือเรายังไม่มี IAM Role
ทีนี้เรามาเพิ่ม SSM Role โดยมาที่ด้านขวาบน เลือก Actions
เลือก Security
และเลือก Modify IAM Role
เมื่อเข้ามาหน้าจอ Modify IAM role แล้ว ให้เลือก IAM role ที่สร้างเตรียมไว้ เช่น ec2-ssm-managed-instance-core แล้วคลิก Update IAM role
แล้วกลับมาหน้าจอหลักของ EC2 Instance และตรวจสอบที่ IAM Role อีกครั้ง จะเห็นว่ามี IAM Role ของเราเพิ่มเข้ามาแล้ว
หลังจากเพิ่ม IAM Role ใน EC2 Instance เสร็จแล้ว แนะนำให้ Stop/Start EC2 Instance และทำการทดสอบเชื่อมต่อ Instance โดยใช้ SSM ครับ
ทดสอบเชื่อมต่อ Instance โดยใช้ SSM
เข้ามาที่ EC2 Instance ของเรา แล้วคลิก Connect
เลือกแท็บ Session Manager
แล้วคลิก Connect
จะเห็นว่าเราสามารถเข้ามาใน EC2 Instance แบบคล้ายๆกับ SSH ได้แล้วครับ
ทดสอบรันคำสั่ง
ผมจะทดสอบรันคำสั่งโดยใช้คำสั่งพื้นฐานตามนี้
คำสั่งเข้าใช้งานสิทธิ์ root
sudo su -
คำสั่ง Update ระบบให้เป็นปัจจุบัน
yum update -y
คำสั่งตรวจสอบไฟล์
ll
Output (example)
Session ID: role_name-xxxxxxxxxx Instance ID: i-xxxxxxxxxx
sh-5.2$ sudo su -
[root@ip-172-31-29-59 ~]# yum update -y
Last metadata expiration check: 0:02:38 ago on Mon Jul 24 07:11:58 2023.
Dependencies resolved.
Nothing to do.
Complete!
[root@ip-xx-xx-xx-xx ~]# ll
total 0
[root@ip-xx-xx-xx-xx ~]#
สรุป
ก็จบไปแล้วครับสำหรับการเชื่อมต่อ EC2 Instance ผ่าน Session Manager ที่เป็น 1 ในฟังก์ชันของ Systems Manager ครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ