การใช้ Mountpoint for Amazon S3 เพื่อเข้าถึง S3 จาก EC2 เสมือนเป็นไดเร็กทอรีในเครื่อง

การใช้ Mountpoint for Amazon S3 เพื่อเข้าถึง S3 จาก EC2 เสมือนเป็นไดเร็กทอรีในเครื่อง

บทความนี้จะพาผู้อ่านทุกท่านมาทำความรู้จักกับ service ชื่อ Mountpoint for Amazon S3 ที่ทำให้ S3 เป็นเสมือนไดเรกทอรีตัวหนึ่งของ EC2 ซึ่งจะช่วยให้เราสามารถจัดการไฟล์หรือโฟลเดอร์ต่างๆใน S3 ได้ผ่าน command line ใน EC2 ครับ

บทความได้รับการแปลและเรียบเรียงจากบทความภาษาญี่ปุ่นชื่อ Mountpoint for Amazon S3でEC2からS3をローカルディレクトリとして操作してみた โดยเจ้าของบทความนี้คือคุณ katsumata ซึ่งเป็นชาวญี่ปุ่น และในบทความนี้จะมีการปรับสำนวนการเขียน รวมถึงมีการเรียบเรียงเนื้อหาใหม่ให้เข้าใจง่ายและมีความเหมาะสมมากยิ่งขึ้นครับ

เกริ่นนำ

สวัสดีครับ ในบทความนี้ผมศึกษาการใช้ Mountpoint for Amazon S3 เพื่อ mount S3 Bucket บน EC2 และทดสอบการใช้งาน จึงอยากแชร์ขั้นตอนกับผู้อ่านทุกท่านครับ

Mountpoint for Amazon S3 คืออะไร?

Mountpoint for Amazon S3 เป็นเครื่องมือ open source ที่ช่วยให้สามารถ mount S3 bucket เป็น Linux file system บน EC2 หรือ ECS ได้ ทำให้เราสามารถใช้งาน S3 bucket เหมือนกับไดเร็กทอรีในเครื่อง local ได้ครับ

สามารถดูรายละเอียดเพิ่มเติมได้ที่ Github ด้านล่างนี้ครับ
https://github.com/awslabs/mountpoint-s3

ทดลองทำ

ข้อกำหนดเบื้องต้น

  • S3 Bucket: สร้าง S3 bucket ไว้

    Note: ผู้อ่านท่านใดที่ไม่เคยสร้าง S3 Bucket มาก่อน สามารถศึกษาได้ในลิงค์ข้างล่าง แล้วไปที่หัวข้อ

    1. สร้าง S3 Bucket ได้เลยครับ

https://dev.classmethod.jp/articles/how-to-static-website-ep2/

  • IAM Role: สร้าง IAM role ที่เหมาะสมแล้ว (AmazonS3FullAccess) โดยสามารถทำได้ดังนี้ครับ: -

    a. เข้าไปใน AWS IAM และคลิกที่ Roles
    iam-01

    b. ใน Select trusted Entity เลือก:
    - Trusted Entity Type: AWS Service
    - Service or Use Case: Ec2 ---> และเลือก Ec2 ในช่อง Use Case ถัดมา

    iam-02

    c. Permission Policies เลือก AmazonS3FullAccess
    iam-03

    d. Name ตั้งชื่อ Role ครับ: ในตัวอย่างผมตั้งชื่อ kanj-mountpoint-ec2
    iam-04

    กด Create Role เป็นอันเสร็จสมบูรณ์ครับ

การสร้าง EC2

สร้าง EC2 สำหรับ mount S3 ตามขั้นตอนดังนี้

  1. เลือก AMI เป็น Amazon Linux 2023 และตั้งค่า Security Group ที่อนุญาต SSH Inbound (My IP)
    Note: ตอนสร้าง EC2 ควรเตรียม Key Pair ไว้ก่อน

ec2-mounpoint

  1. ใน Advanced Details เพิ่ม IAM Role ที่เราสร้างไปก่อนหน้า (ของผมสร้างไว้ชื่อ kanj-mountpoint-ec2)
    iam-ec2

Note: หากมีข้อสงสารเกี่ยวกับการสร้าง EC2 สามารถอ่านการสร้าง EC2 โดยละเอียดได้ตามลิงค์นี้ครับ
https://dev.classmethod.jp/articles/how-to-install-amazon-linux-2023-on-ec2-in-thailand-region/

ติดตั้ง Mountpoint for Amazon S3

  1. ในกรณี Linux2023 ให้ใช้ Mountpoint for Amazon S3 โดยใช้คอมมานด์ดังนี้ (สามารถเชื่อมต่อได้ผ่าน Session Manager หรือ Putty เป็นต้น)
$ wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
$ sudo yum install -y ./mount-s3.rpm
  1. mount s3 bucket ที่เราได้เตรียมไปก่อนหน้า
$ mkdir /mnt/s3
$ mount-s3 [ชื่อ bucket] /mnt/s3

3.ถ้า mount ถูกต้อง จะมีข้อความขึ้นเหมือนข้างล่าง

bucket [ชื่อ bucket] is mounted at /mnt/s3

ทดสอบการใช้งาน S3 ผ่าน EC2

  1. ทดสอบการจัดการไฟล์และโฟลเดอร์ใน S3 bucket ที่ mount แล้ว (ถ้าไม่ mount จะไม่สามารถจัดการไฟล์ด้วย command ใน ec2 ได้)
操作例
# สร้างไดเร็กทอรี
mkdir /mnt/s3/testdir

# ลองสร้างไฟล์ indes.html ใน s3
echo "<html><body><h1>Hello from Mountpoint for S3</h1></body></html>" > /mnt/s3/index.html

# สร้างไฟล์ test.text ใน s3
echo "hello test S3" > /mnt/s3/test.txt

# คัดลอกไฟล์ index.html ไปโฟลเดอร์ testdir
cp /mnt/s3/index.html /mnt/s3/testdir/

# ย้ายไฟล์ test.txt ไปโฟลเดอร์ testdir
mv /mnt/s3/test.txt /mnt/s3/testdir/

# ตรวจสอบเนื้อหาในไดเร็กทอรี
ls -la /mnt/s3/testdir/

# ทดสอบการสร้างไฟล์
echo "test" > /mnt/s3/test.txt

# ทดสอบการอ่านไฟล์
cat /mnt/s3/test.txt
  1. ตรวจสอบการเปลี่ยนแปลงใน AWS Management Console
    ขั้นตอนการตรวจสอบ:
    a. เข้าไปที่ AWS Management Console
    b. ไปที่ S3 Service
    c. คลิกเข้าไปใน S3 bucket ที่ทำการ mount
    d. ตรวจสอบว่ามีการเปลี่ยนแปลงตามที่ทำผ่าน EC2:
  • โฟลเดอร์ testdir/ ถูกสร้างขึ้น
  • ไฟล์ index.html และ test.txt อยู่ในโฟลเดอร์ testdir/
  • ไฟล์ test.txt ใหม่ถูกสร้างใน root ของ bucket

s3-mount1

s3-mount2

สุดท้ายนี้

เมื่อเราลองใช้ Mountpoint for S3 แล้ว จะเห็นได้ว่าเราสามารถจัดการ bucket ของ S3 ผ่าน EC2 instance ได้เหมือนว่า S3 เป็นไฟล์ local ของเครื่อง EC2 โดยใช้เพียง Standard Linux Command เท่านั้น (ไม่จำเป็นต้องใช้ AWS Cli) ซึ่งฟังก์ชันนี้จะช่วยให้การทำงานของเราง่ายขึ้นมากครับ ขอบคุณผู้อ่านทุกท่านมากครับ หวังว่าบทความจะเป็นประโยชน์กับทุกท่านครับ

แปลและเรียบเรียงโดย กาญจน์ จากบริษัท ClassMethod Thailand ครับ

ข้อมูลอ้างอิง

https://github.com/awslabs/mountpoint-s3

(Mountpoint for Amazon S3 の使用 - Amazon Simple Storage Service)
[https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/mountpoint.html]

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.