Object Storage (S3)
รูปแบบ storage ที่เก็บข้อมูลเป็น object หรือเป็น file ใช้งานได้ผ่าน internet สามารถประยุกต์ใช้ได้หลากหลาย
ตาม concept แล้ว object storage จะเก็บข้อมูลในรูปแบบ object หรือจะมองเป็น file ก็ได้ แต่ที่ต่างจาก file ทั้วไป คือ จะมีเรื่องของ metadata ที่สามารถแนบไว้กับ file ได้ด้วย เช่น การเก็บข้อมูลของ video จากกล้องวงจรปิด ที่ตัว file หลักจะเป็น video และ metadata อาจจะเป้น ช่วงเวลาที่ record, ID ของกล้องที่ record กรณีที่มีกล้องหลายตัว โดย metadata เหล่านี้ จะมีประโยชน์มาก กับการทำ data analytic
รวมถึงความสามารถหลักของ object storage ที่สามารถใช้งานได้ผ่าน internet และเข้าถึงได้ผ่าน S3 API บน HTTP/HTTPS protocol ทั่วไป จึงเหมาะกับการเก็บข้อมูล media สำหรับแสดงบน website ต่างๆ หรือแม้กระทั้งรองรับการใช้งานกับ instance ที่ต้องมีการ horizontal scaling เพิ่ม-ลดจำนวนอยู่ตลอดเวลา เพราะ block storage จะสามารถใช้งานได้แค่ 1 instance แต่ object storage สามารถใช้งานกับกี่ instance ก้ได้ ตราบใดที่มี network เข้าถึงได้ bucket
การเก็บ object ไว้ด้วยกัน คล้ายๆกับการใช้งาน folder หรือ directory ใน PC ทั่วไป โดยเราจะ PUT object ใส่ไว้ใน bucket และเรียกอ่านข้อมูล object ผ่าน bucket เสมอ และใน bucket เองก็ยังสามารถแบ่ง directory เพื่อแบ่งกลุ่มของ object ได้อีกด้วย
Bucket Avaibility Zone
ภายใน NIPA Cloud Space การสร้าง Object Storage Bucket ขึ้นมา 1 Bucket จะสามารถใช้งานได้ใน 2 Availability Zone ได้แก่ NCP-BKK และ NCS-NON โดยทั้ง 2 zone จะเก็บข้อมูลแยกจากกันโดยสิ้นเชิง โดยสามารถเข้าถึงแต่ละ Availability Zone ได้จากการเปลี่ยน endpoint ของ Bucket ดังนี้
NCP-BKK: https://[bucket-name].s3-bkk.nipa.cloud
NCP-NON: https://[bucket-name].s3-non.nipa.cloud
Bucket Access Control
Object Storage บน Nipa Cloud Space ถูกออกแบบมาให้แยกส่วนกันในระดับ Logical โดยแต่ละ Bucket จะมีการบริหารจัดการสิทธิ์ (Access Control) แยกจากกันโดยสิ้นเชิง เพื่อความปลอดภัยสูงสุดของข้อมูล ผู้ใช้งานสามารถควบคุมสิทธิ์ได้ผ่าน 2 กลไกหลัก คือ Bucket ACL และ Bucket Policy
Bucket ACL (Access Control List)
Bucket ACL คือการกำหนดสิทธิ์การเข้าถึงพื้นฐาน ซึ่งสามารถเลือกตั้งค่าได้ตั้งแต่ขั้นตอนการสร้าง Bucket และสามารถแก้ไขเมื่อไหร่ก็ได้ โดยมีรายละเอียดดังนี้
Private
เฉพาะ Project เจ้าของ Bucket เท่านั้นที่สามารถจัดการและเข้าถึงข้อมูลได้
แนะนำให้ใช้เป็นค่าเริ่มต้น
Public (Read)
เจ้าของ Bucket จัดการได้เต็มที่ และบุคคลทั่วไป (Public) สามารถอ่าน (Read) ข้อมูลได้
เหมาะสำหรับไฟล์ที่ต้องการทำ Public Link
Authenticate (Read)
เจ้าของ Bucket จัดการได้เต็มที่ และผู้ใช้งานที่มีการยืนยันตัวตน (Authenticated User) สามารถอ่าน ข้อมูลได้
สำหรับการแชร์ข้อมูลภายในกลุ่มผู้ใช้ระบบ
Public (Read & Write)
บุคคลทั่วไปสามารถทั้งอ่านและเขียน (Read & Write) ข้อมูลลงใน Bucket ได้
ไม่แนะนำ (เสี่ยงต่อความปลอดภัยขั้นรุนแรง)
Bucket Policy
นอกจาก ACL ที่เป็นการกำหนดสิทธิการใช้งานขึ้นพื้นฐานแล้ว ยังสามารถเพิ่มสิทธิเฉพาะ User หรือกลุ่ม User บน Bucket, Object หรือ Path เฉพาะได้ ผ่าน Bucket Policy (อ่านเพิ่มเติมในการจัดการ Bucket Policy)
ในการใช้งานทั่วไป แนะนำให้กำหนด Bucket ACL เป็น Private และ สร้าง Bucket Policy เฉพาะ ตามสิทธิที่ต้องการให้เข้าถึงได้เท่านั้น เพื่อไม่ให้ข้อมูลใน Bucket รั่วไหล
Bucket Limitation
Bucket ของ Object Storage ไม่มี limit ในเรื่องของ size รวมของ storage แต่มี limit ในเรื่องของจำนวน Object ที่เก็บได้ภายใน 1 bucket ใน 1 Availability Zone โดยจะมี limit อยู่ที่ 1.6 ล้าน objects (1638400 objects)
การเข้าใช้งาน Object Storage
การเข้าใช้งาน object storage สามารถทำได้ผ่าน S3 protocol ได้หลายช่องทาง เช่น ใช้ผ่าน CLI, API หรือ ใช้ผ่าน software อื่นๆ
ใช้งานผ่าน CLI (Command Line Interface) ผ่าน Access S3 Bucket with s3cmd
ใช้งานผ่าน SDK เช่น Access S3 buckets With AWS S3 Client SDK
ใช้ sofware ต่างๆ เข้ามาเป็น interface เช่น Access S3 Bucket with Cyberduck
อ่านเพิ่มเติมเกี่ยวกับ Object Storage
Recommendations
Create an Object Storage BucketCreate an Object Storage Sub-UserCreate Bucket PolicyBucket VersioningConfigure a static website using S3 BucketLast updated