Overview:
Pada artikel kali ini kita akan mencoba membuat versioning pada AWS S3. Adapun versioning pada AWS S3 yaitu:
"Cara menyimpan berbagai varian objek dalam wadah yang sama. Kita dapat menggunakan fitur S3 Versioning untuk mempertahankan, mengambil, dan memulihkan setiap versi dari setiap objek yang disimpan di bucket. Dengan pembuatan versi, kita dapat memulihkan lebih mudah dari tindakan pengguna yang tidak diinginkan dan kegagalan aplikasi. Setelah penerapan versi diaktifkan untuk bucket, jika Amazon S3 menerima beberapa permintaan tulis untuk objek yang sama secara bersamaan, semua objek tersebut akan disimpan." lebih detail lihat disini
Adapun langkah-langkah yang akan kita lakukan pada artikel kali ini adalah, sebagai berikut:
Membuat Bucket
Konfigurasi Bucket
Upload Bucket
Mengakses Website Menggunakan Browser
Upload Object Kembali
Mengakses Website Menggunakan Browser
Delete Object
Mengakses Kembali Website Menggunakan Browser
Bersihkan Bucket
Kebutuhan:
Memiliki Akun AWS
Region Virginia
File Sample, Github
Langkah-langkah:
Membuat Bucket
Masuk ke service S3
Klik Create bucket
Isi Data
Nama Bucket
Kosongkan Block all public access
Enable Bucket Versioning
Konfigurasi Bucket
Konfigurasi enable static
Klik bucket
Properties tab
Klik Edit pada Static web hosting
Klik Enable pada static website hosting
Isi Index document dan error document
Save changes
Tambahkan permission publik pada bucket
Ke tab permission
Klik Edit pada bucket policy
Tambahkan policy untuk akses publik
{ "Version":"2012-10-17", "Statement":[ { "Sid":"PublicRead", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::aha-cats-12121200/*"] } ] }
Save changes
Upload File Bucket
Upload bucket
Pada tab Object
Klik Upload
Add files
Upload file and folder
Klik Upload
Lihat detail versioning
Pada tab bucket
Centang Show versions
Perhatikan version ID yang terdapat pada object
Mengakses Website Menggunakan Browser
Pada tab Properties
Akses website URL
Upload File Object Kembali
Upload file image kembali pada folder /img dengan image yang berbeda tetapi dengan nama yang sama, agar memudahkan untuk melakukan pengujian.
Mengakses Kembali Website Menggunakan Browser
Perhatikan hasilnya, berbeda dengan gambar pertama, dikarenakan kita baru saja mengupload file dengan objek yang sama namun version yang berbeda. AWS S3 versioning akan melakukan replace pada object yang terakhir diupload, sehingga kita melihat gambar yang terakhir diupload.
Perhatikan kembali object, dengan mencentang toogle see version, maka ada dua file yang akan terlihat dengan nama object yang sama, namun version ID yang berbeda. Dibagian atas adalah file yang terakhir diupload, sedangkan pada posisi bawah adalah file asli yang pertama kali diupload.
Delete Object
Delete object cat.jpg
Perhatikan kembali object, lihat type dan version ID yang ada. terlihat object tidak dihapus, tetapi hanya di tandai menjadi Delete marker.
Terlihat pada gambar diatas, object tidak dihapus secara permanen, namun hanya di tandai sebagai delete marker, begitulah cara kerja versioning, urutan filenya yaitu file nomor urut 2 adalah file yang terakhir diupload sedangkan file nomor urut ketiga adalah file asli (yang pertama kali diupload).
Delete file secara permanen
Pilih file cat.img pada urutan pertama yang memiliki type Delete marker
klik Delete
isi permanently delete
Delete Objects
Mengakses Kembali Website Menggunakan Browser
Akses kembali website
Terlihat gambar masih tetap menampilkan gambar yang terakhir. Sekarang coba untuk menampilkan gambar yang aslinya, yaitu gambar yang pertama kali diupload.
Delete object secara permanent, yaitu file yang terakhir diupload, karena itu bukanlah gambar yang asli
Centang file cat.img yang paling atas
Klik Delete
Kemudian lihat kembali object, terlihat ini merupakan object yang asli yang pertama kali di upload
Akses kembali website, seharunya gambar yang asli yang akan terlihat
Bersihkan Bucket
Bersihkan bucket dengan menghapus semua object agar tidak terkena biaya dari layanan AWS S3.
Catatan:
Ketika versioning sudah di enable, bucket tidak bisa di disable, hanya bisa di suspend, sehingga object yang baru diupload tidak memiliki version ID, namun tidak akan menghapus version ID pada object yang sebelumnya sudah memiliki version ID.
Referensi:
https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html