Skip to content

แนะนำ Amazon S3 Metadata ระบบจัดการ Object Metadata ใหม่บน AWS

Published:

บทนำ

AWS พึ่งเปิดตัว Amazon S3 Metadata (Preview) เป็น service ใหม่ที่ช่วยจัดการ metadata ของไฟล์ใน S3 bucket แบบอัตโนมัติ ทำให้เราค้นหาและวิเคราะห์ข้อมูลได้ง่ายขึ้นกว่าเมื่อก่อน ผมเดาว่าบางคนอาจสงสัยว่า “แล้วมันต่างจาก S3 Inventory + Athena ที่เคยใช้อยู่ยังไง?” เดี๋ยวเรามาลองดูกันครับ

Amazon S3 Metadata คืออะไร?

Amazon S3 Metadata เป็น service ใหม่ที่ AWS พัฒนาขึ้นเพื่อช่วยจัดการข้อมูล metadata ของไฟล์ที่เก็บใน S3 bucket โดยทำงานแบบอัตโนมัติและ AWS เป็นผู้ดูแลระบบให้ทั้งหมด

การทำงานหลักๆ คือ:

  1. เมื่อมีการเปลี่ยนแปลงใดๆ กับไฟล์ใน S3 bucket (เช่น upload ไฟล์ใหม่, แก้ไขไฟล์, ลบไฟล์) ระบบจะตรวจจับข้อมูลการเปลี่ยนแปลงนั้น
  2. ข้อมูลจะถูกเก็บเป็น Apache Iceberg tables ซึ่งเป็น format ที่เหมาะกับการทำ data analytics และเชื่อมต่อกับเครื่องมือวิเคราะห์ข้อมูลต่างๆ ได้ง่าย
  3. ข้อมูลจะถูกเก็บในอีก bucket หนึ่ง เรียกว่า “S3 table bucket”
  4. การอัพเดทข้อมูลทำแบบ near real-time คือใช้เวลาเพียงไม่กี่นาทีหลังจากมีการเปลี่ยนแปลง

เราจัดการกับ Metadata ของไฟล์ใน S3 กันยังไงบ้าง?

การจัดการ metadata ของไฟล์ใน S3 เรามีทางเลือกหลักๆ 2 (+1) แบบ:

1. S3 Inventory + Athena (แบบเดิม)

เป็นการใช้ S3 Inventory สร้าง report รายวันของไฟล์ทั้งหมดใน bucket แล้วใช้ Athena query ข้อมูล

ข้อดี:

ข้อจำกัด:

2. Custom Metadata System (แบบเดิม)

เป็นการพัฒนาระบบจัดการ metadata ขึ้นมาเอง โดยอาจใช้ database หรือ service อื่นๆ ช่วย

ข้อดี:

ข้อจำกัด:

และนี่คือแบบที่ 3 ซึ่งก็คือ S3 Metadata ที่เราพูดถึงกันในบทความนี้

3. S3 Metadata (ของใหม่)

เป็นระบบที่ AWS พัฒนาขึ้นเพื่อแก้ปัญหาและอำนวยความสะดวกให้กับผู้ใช้อย่างเรา (หาเงินจากเรา 😂)

ข้อดี:

ข้อจำกัด:

Metadata ที่เก็บมีอะไรบ้าง?

S3 Metadata จะเก็บข้อมูล 3 ประเภท ดังนี้:

1. System-defined Metadata

ข้อมูลพื้นฐานของไฟล์ที่ S3 จัดเก็บให้อัตโนมัติ เช่น:

ตัวอย่างการใช้งาน: ใช้ตรวจสอบว่าไฟล์ขนาดใหญ่ถูกเก็บใน storage class ที่เหมาะสมหรือไม่ หรือใช้หาไฟล์ที่ซ้ำกันใน bucket

2. Custom Metadata

ข้อมูลที่ผู้ใช้กำหนดเองตามความต้องการ:

ตัวอย่างการใช้งาน: จัดกลุ่มไฟล์ตามโปรเจคหรือ application ใช้กำหนดประเภทเพื่อจำแนกข้อมูลสำหรับการประมวลผล

3. Event Metadata

อันนี้แหละที่เพิ่มเข้ามา เป็นข้อมูลเกี่ยวกับการเปลี่ยนแปลงและการเข้าถึงไฟล์:

วิธีการเปิดใช้งาน S3 Metadata

หากต้องการใช้งาน S3 Metadata ตามนี้ไปเลยครับ:

ตัวอย่าง SQL Query สำหรับ S3 Metadata

ตัวอย่างที่ 1: ค้นหาไฟล์ที่มีขนาดใหญ่กว่า 1MB และจัดเรียงตามวันที่แก้ไขล่าสุด

SELECT key, size, storage_class, encryption_status 
FROM mytablebucket.aws_s3_metadata.my_s3_bucket_table 
WHERE size > 1000000 
ORDER BY last_modified_date DESC 
LIMIT 10;

ตัวอย่างที่ 2: ค้นหาไฟล์ที่ถูก upload พร้อมเข้ารหัสด้วย SSE-KMS

SELECT key, size, kms_key_arn, encryption_status 
FROM mytablebucket.aws_s3_metadata.my_s3_bucket_table 
WHERE encryption_status = 'SSE-KMS' 
ORDER BY size DESC;

ตัวอย่างที่ 3: ค้นหาไฟล์ที่มี tag “project=alpha”

SELECT key, size, object_tags 
FROM mytablebucket.aws_s3_metadata.my_s3_bucket_table 
WHERE object_tags['project'] = 'alpha' 
ORDER BY last_modified_date;

Use Cases จากลูกค้าจริง

AWS ได้พูดถึง use cases จากลูกค้าที่ใช้งาน S3 Metadata ในช่วง preview ไว้ดังนี้:

1. Cambridge Mobile Telematics

2. PayPal

3. Roche

การคิดค่าบริการ

AWS คิดค่าบริการ S3 Metadata จาก 2 ส่วนหลัก:

  1. จำนวน Updates
  1. พื้นที่จัดเก็บ Metadata Table

หมายเหตุ: รายละเอียดราคาเพิ่มเติมดูได้ที่ S3 Pricing

สรุป

S3 Metadata เป็นทางเลือกที่น่าสนใจสำหรับคนที่:

แต่ถ้าแค่ต้องการ report รายวัน ผมคิดว่า S3 Inventory + Athena ก็ยังเป็นตัวเลือกที่ดีอยู่ หรือถ้าต้องการระบบที่ customize ได้ตามต้องการ การสร้าง Custom Metadata System ก็อาจเป็นทางเลือกที่เหมาะสมกว่า

อ้างอิง

Does it help?

Don’t miss out on future updates - Follow or Subscribe me!

And don’t forget to share it with your friends. Your share means a lot.