# Bucket Versioning

bucket versioning คือการเพิ่มความปลอดภัยให้ object ต่างๆ ให้สามารถย้อนกลับ version เก่าได้ เช่น&#x20;

* หากมีการ put object เข้าไปใน bucket ใหม่ด้วย key เดียวกัน -> ควรจะเป็นการแทนที่ object เดิม ด้วย object ใหม่ แต่เมื่อ bucket versioning เปิดอยู่ จะเป็นการเพิ่ม version ใหม่เข้าไป และเก็บ version เก่าเอาไว้อีกที
* หากมีการ delete object ใน bucket -> object ดังกล่าวควรจะหายไป แต่เมื่อ bucket versioning เปิดอยู่ จะเป็นการเก็บ object ดังกล่าวเป็น version เก่าเอาไว้

ด้วยเหตุผลข้างต้น เราจะสามารถกลับไปกู้คืน object ต่างๆใน bucket ได้ ทันที แต่ก็แลกมากับ bucket size ที่จะโตขึ้นเรื่อยๆ หาก version เก่าๆของ object ไม่ถูก delete ออกไป

## การ Enable Bucket Versioning

การเปิดใช้งาน bucket versioning ทำได้ 2 วิธี คือ เปิดตั้งแต่ตอนสร้าง bucket โดยสามารถดูวิธีการได้จาก [ขั้นตอนการสร้าง bucket](https://docs-epc.gitbook.io/ncs-documents/storage/object-storage-s3/create-an-object-storage-bucket) หรือเปิดภายหลังจากสร้าง bucket ไปแล้วก็ได้

{% hint style="info" %}
การเปิดภายหลังจะไม่ได้ทำให้ object ต่างๆ ที่ถูกแทนที่หรือลบไปแล้วกลับมาใช้งานได้
{% endhint %}

{% hint style="info" %}
การ suspend versioning หลังจากที่เคย enable ไปแล้ว จะทำให้ไม่เกิด version ของ object เพิ่ม เมื่อมีการแทนที่หรือลบ object ออกจาก bucket จนกว่าจะเปิดกลับมาใหม่

รวมถึง version ต่าง ๆ จะไม่ถูกลบออกไปจาก bucket แม้จะทำการ suspend ไปแล้ว user ต้องทำการลบออกด้วยตัวเอง ([วิธีการลบ object versioning](#object-version-bucket))
{% endhint %}

### Prerequisite

1. มียอดคงเหลือใน project มากกว่า 0 บาท ([ขั้นตอนการเติมเงินเข้าสู่ project](https://docs-epc.gitbook.io/ncs-documents/nipa-cloud-space-overview/billing-and-wallet/topup-a-project-wallet))
2. มีการสร้าง bucket เอาไว้แล้ว ([ขั้นตอนการสร้าง bucket](https://docs-epc.gitbook.io/ncs-documents/storage/object-storage-s3/create-an-object-storage-bucket))

### Instructions

#### 1. เข้าสู่ Project

กดเลือก project จากหน้า Projects Management เพื่อเข้าสู่หน้า Project Detail

<figure><img src="https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FUINKZiThlUV45RKMhr8O%2Fproject-detail.png?alt=media&#x26;token=8aad8ef2-b641-4eb9-b6b6-2ce7b732af84" alt=""><figcaption><p>Project Detail</p></figcaption></figure>

#### 2. เข้าสู่หน้า Bucket List

กดเลือก menu OBJECT STORAGE - bucket เพื่อเข้าหน้า bucket list

<figure><img src="https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2Fzv5wLIG2gdh5vEgfNS7M%2Fbucket%20list.png?alt=media&#x26;token=a7a76948-44b6-4e1b-8b83-194c0bd55be4" alt=""><figcaption><p>Bucket List</p></figcaption></figure>

#### 3. เลือก Bucket ที่ต้องการเปิด versioning

กดที่ชื่อของ bucket ที่ต้องการเปิด versioning เพื่อทำการเข้าสู่หน้า bucket overview

<figure><img src="https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2F77jlwcm11Rs4DCKbpAGI%2Fbucket%20overview.png?alt=media&#x26;token=ff7a56ac-4711-4a2b-84f9-f1ae5179757e" alt=""><figcaption><p>Bucket Overview</p></figcaption></figure>

#### 4. ทำการ enable bucket versioning

กดปุ่ม enable ในกล่อง Versioning เพื่อเปิด menu Confirm Enable Versioning และกด CONFIRM เพื่อทำการเปิดการใช้งาน bucket versioning

<figure><img src="https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FowyWGgGglQsyRvkECXNI%2Fenable%20versioning.png?alt=media&#x26;token=7d5ab9de-3cd0-4ac6-a16e-a0d676212b06" alt=""><figcaption><p>Enable Bucket Versioing</p></figcaption></figure>

### การทดสอบว่า Bucket Versioning ถูกเปิดใช้งานหรือยัง

เมื่อ bucket versioning enable แล้ว สามารถทดสอบได้โดยการ delete file จาก bucket โดยการใช้ CyberDuck ([วิธีการ access bucket โดยใช้ CyberDuck](https://docs-epc.gitbook.io/ncs-documents/storage/object-storage-s3/access-s3-bucket-with-cyberduck))

#### 1. ทำการลบ object ออกจาก bucket

เข้า CyberDuck และทำการ delete object ออกไป

&#x20;![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FOaAYo5T1DlTshQ0w0exZ%2Fimage.png?alt=media\&token=420a7b99-f9e6-4490-a35d-155df1a8f1cc)![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FtxQ1IjKRwVUbH9VrFTe5%2Fimage.png?alt=media\&token=800df0d3-eb38-4a28-99d3-cd9cd0e8dc75)

#### 2. ตรวจสอบขนาดของ bucket บน NCS

หลังจาก delete object ออกไปแล้ว size ของ bucket ก็จะไม่เปลี่ยนแปลง

![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2Ft72UDq4hopeMNPWArKpz%2Fimage.png?alt=media\&token=21ece2a0-380b-47db-b21b-487bf077a735)

### การลบ object ที่ถูกทำเป็น version เก่าออกจาก bucket

หากต้องการลบ version ต่างๆ ของ object ออก ให้ทำทำตามนี้

#### 1. เปิดดู object ที่ถูก hidden ไว้บน bucket

เปิดดู hidden file ใน CyberDuck และเปิดดู versioning object

![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FUJOn1uju64H2tLtRUMDJ%2Fimage.png?alt=media\&token=27087914-f3ba-480d-8fea-b6a0e5aaeeeb)![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FpfIvnJi4IHzmqQDexnRi%2Fimage.png?alt=media\&token=38098ff3-6c10-4647-815e-b79c771198d2)

#### 2. ลบ hidden object ออกจาก bucket

เมื่อลบ hidden object หรือ object ที่เป็น version เก่าออกไปแล้ว size ของ bucket ก็จะลดลง

![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FK2ZOFidCIJsh09DAdSxR%2Fimage.png?alt=media\&token=61367b12-a7b8-4120-9765-2d0735b57bfc)![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FyQjsk5Ncz583x1jq4hOo%2Fimage.png?alt=media\&token=735655ec-6001-440a-8fda-fc31a697521a)

#### 3. ตรวจสอบ storage size ของ bucket บน NCS

![](https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2FbC6GKfPBfCZRGQHeubGC%2Fimage.png?alt=media\&token=fce18a3d-d13f-436f-87e4-a7eb53b94070)
