[Update] การใช้งาน SSM Role เชื่อมต่อเข้า AWS EC2 Instance โดยไม่ต้องมี Inbound rules

การเชื่อมต่อ EC2 Instance ผ่าน Session Manager จะช่วยทำให้เราสามารถเข้าถึง Server ได้สะดวกยิ่งขึ้น โดยที่เราไม่ต้องไปอัปเดต My IP ใน Inbound rules ของ Security Group เวลาต้องการเข้าใช้งาน SSH ของ EC2 Instance ทุกครั้งที่ IP Router มีการเปลี่ยนแปลงครับ

*การเขียนบทความครั้งนี้ เป็นการ 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 GiB gp2 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 ครับ

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

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