# 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&#x20;

รวมถึงความสามารถหลักของ object storage ที่สามารถใช้งานได้ผ่าน internet และเข้าถึงได้ผ่าน S3 API บน HTTP/HTTPS protocol ทั่วไป จึงเหมาะกับการเก็บข้อมูล media สำหรับแสดงบน website ต่างๆ หรือแม้กระทั้งรองรับการใช้งานกับ instance ที่ต้องมีการ horizontal scaling เพิ่ม-ลดจำนวนอยู่ตลอดเวลา เพราะ block storage จะสามารถใช้งานได้แค่ 1 instance แต่ object storage สามารถใช้งานกับกี่ instance ก้ได้ ตราบใดที่มี network เข้าถึงได้ bucket&#x20;

การเก็บ 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 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](object-storage-s3/access-s3-bucket-with-s3cmd "mention")
* ใช้งานผ่าน SDK เช่น [access-s3-buckets-with-aws-s3-client-sdk](object-storage-s3/access-s3-buckets-with-aws-s3-client-sdk "mention")
* ใช้ sofware ต่างๆ เข้ามาเป็น interface เช่น [access-s3-bucket-with-cyberduck](object-storage-s3/access-s3-bucket-with-cyberduck "mention")

อ่านเพิ่มเติมเกี่ยวกับ [Object Storage](https://nipa.cloud/products/nipa-cloud-iaas/nipa-space/object-storage)

## Recommendations

{% content-ref url="object-storage-s3/create-an-object-storage-bucket" %}
[create-an-object-storage-bucket](object-storage-s3/create-an-object-storage-bucket)
{% endcontent-ref %}

{% content-ref url="object-storage-s3/create-an-object-storage-sub-user" %}
[create-an-object-storage-sub-user](object-storage-s3/create-an-object-storage-sub-user)
{% endcontent-ref %}

{% content-ref url="object-storage-s3/create-bucket-policy" %}
[create-bucket-policy](object-storage-s3/create-bucket-policy)
{% endcontent-ref %}

{% content-ref url="object-storage-s3/bucket-versioning" %}
[bucket-versioning](object-storage-s3/bucket-versioning)
{% endcontent-ref %}

{% content-ref url="object-storage-s3/configure-a-static-website-using-s3-bucket" %}
[configure-a-static-website-using-s3-bucket](object-storage-s3/configure-a-static-website-using-s3-bucket)
{% endcontent-ref %}

