Episode ini membahas fitur lanjutan object storage RGW: bucket lifecycle, versioning, dan object policies, S3 multipart upload dan penanganan object besar, fitur GDPR dan data retention, serta integrasi object storage dengan analytics.

Selamat datang di episode 17 series Belajar Ceph! Di episode 7 kalian sudah membuat bucket dan mengunggah object dasar. Sekarang kita naik level ke object lifecycle & S3 features — kemampuan RGW yang membuatnya setara dengan layanan object storage cloud komersial.
Object storage yang baik tidak hanya menyimpan object; dia juga mengelola siklus hidupnya. Object bisa punya versi, bisa kedaluwarsa secara otomatis, bisa dipindahkan ke storage class yang lebih murah, dan bisa menjadi sumber data untuk analitik. RGW mendukung semua ini melalui API S3 standar.
Di akhir episode ini kalian akan paham cara mengonfigurasi bucket lifecycle dan versioning, menyusun object policies, menangani object besar dengan multipart upload, menerapkan fitur data retention untuk kepatuhan, serta mengintegrasikan object storage dengan pipeline analytics. Mari kita mulai.
Versioning bucket membuat setiap overwrite menghasilkan versi baru dari object, bukan menghapus yang lama. Ini adalah perlindungan sederhana terhadap penimpaan yang tidak disengaja:
aws --endpoint-url https://rgw.example.com \
s3api put-bucket-versioning \
--bucket bucket-pertama \
--versioning-configuration Status=Enabledput-bucket-versioning mengaktifkan versioning pada bucket. Setelah aktif, setiap operasi PUT membuat versi baru dan DELETE membuat delete marker — object lama tetap bisa dipulihkan.
Dengan versioning aktif, restore object ke versi sebelumnya sangat mudah:
aws --endpoint-url https://rgw.example.com \
s3api get-object \
--bucket bucket-pertama \
--key laporan.pdf \
--version-id <versi-id> restore.pdfget-object --version-id mengambil versi spesifik dari object. Andaikan file terlanjur tertimpa, kalian bisa mengambil versi sebelum penimpaan dan mengembalikannya.
Lifecycle rule mengotomatiskan transisi dan penghapusan object berdasarkan usia. Contoh rule yang menghapus object lama:
{
"Rules": [
{
"ID": "arsip-lama",
"Status": "Enabled",
"Filter": { "Prefix": "logs/" },
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" }
],
"Expiration": { "Days": 365 }
}
]
}Rule di atas memindahkan object berprefix logs/ ke storage class murah setelah 30 hari, lalu menghapusnya setelah 365 hari. RGW mengevaluasi rule ini secara berkala melalui daemon lifecycle.
Object policy mengatur siapa yang boleh mengakses object tertentu. Policy bisa ditempel ke bucket atau ke object individual, dan berbasis JSON dengan format yang kompatibel S3. Contoh policy yang memberi akses read kepada user lain telah kita bahas di episode 10 untuk bucket; object-level policy bekerja serupa tetapi menargetkan satu object.
Untuk object berukuran besar, upload langsung dalam satu request rawan gagal dan lambat. Multipart upload memecah object menjadi beberapa part yang diunggah paralel, lalu digabungkan:
aws --endpoint-url https://rgw.example.com \
s3 cp video-besar.mkv s3://bucket-pertama/ \
--multipart-chunksize 64MB--multipart-chunksize membuat aws cli memakai multipart upload secara otomatis. Untuk object di atas 100 MB, multipart hampir selalu merupakan pilihan yang tepat — selain lebih cepat, upload bisa dilanjutkan dari part yang berhasil.
Melalui API, proses multipart terdiri dari tiga langkah: CreateMultipartUpload, UploadPart, dan CompleteMultipartUpload. Alur ini memungkinkan kalian mengunggah part dari beberapa thread sekaligus dan menggabungkannya dengan satu permintaan terakhir.
Untuk kepatuhan, data kadang harus disimpan minimal selama periode tertentu dan tidak bisa dihapus lebih awal. RGW mendukung pengaturan ini melalui kombinasi versioning, kebijakan akses yang membatasi delete, dan lifecycle yang dihitung sejak object dibuat.
aws --endpoint-url https://rgw.example.com \
s3api put-bucket-policy \
--bucket bucket-audit \
--policy '{"Statement":[{"Effect":"Deny","Action":["s3:DeleteObject"],"Resource":["arn:aws:s3:::bucket-audit/*"],"Principal":"*"}]}'Deny s3:DeleteObject mencegah penghapusan object di bucket audit. Untuk retention yang benar-benar tak terhapus, pasangkan deny policy dengan akses yang sangat terbatas pada resource bucket itu.
Aktifkan logging akses agar setiap operasi tercatat untuk keperluan audit:
radosgw-admin log enable --bucket=bucket-auditradosgw-admin log enable mengaktifkan log akses untuk bucket tertentu. Data log ini menjadi bukti compliance saat auditor meminta jejak akses terhadap data sensitif.
Object storage adalah fondasi data lake modern: murah, scalable, dan bisa menyimpan data dalam format apa pun. RGW bisa menjadi backend untuk query engine seperti Apache Spark, Trino, atau Presto yang membaca data langsung dari S3-compatible endpoint.
aws --endpoint-url https://rgw.example.com s3 ls s3://bucket-data/aws s3 ls menampilkan object yang siap dikonsumsi engine analytics. Selama engine mendukung S3 endpoint, RGW bisa menjadi sumber data tanpa perubahan besar pada pipeline.
Agar analytics bereaksi terhadap data baru, RGW mendukung bucket notification ke message queue seperti Kafka atau AMQP. Setiap object baru memicu event yang bisa memulai pemrosesan — topik ini akan kita bahas lebih dalam di episode 18 saat membahas ekosistem Ceph.
Di episode ini kalian sudah memahami fitur lanjutan object storage RGW: mengaktifkan bucket versioning dan menyusun lifecycle rule, mengelola object policies dan multipart upload untuk object besar, menerapkan fitur GDPR dan data retention untuk kepatuhan, serta mengintegrasikan object storage dengan engine analytics sebagai data lake.
Inti yang harus dibawa pulang:
Di episode 18 selanjutnya kita akan membahas extending Ceph ecosystem — layanan tambahan seperti CephFS snapshots, RBD mirroring, dan RGW bucket notifications, integrasi dengan Ansible, Terraform, dan automation, pengembangan tooling monitoring kustom, serta cara berkontribusi ke ekosistem open-source Ceph. Saatnya melampaui fitur bawaan!