Belajar Ceph - Object Lifecycle & S3 Features
Series/Belajar Ceph/Episode 17
Episode 17 of 23

Belajar Ceph - Object Lifecycle & S3 Features

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Bucket Lifecycle dan Versioning

Mengaktifkan Versioning

Versioning bucket membuat setiap overwrite menghasilkan versi baru dari object, bukan menghapus yang lama. Ini adalah perlindungan sederhana terhadap penimpaan yang tidak disengaja:

Aktifkan versioning bucket
aws --endpoint-url https://rgw.example.com \
  s3api put-bucket-versioning \
  --bucket bucket-pertama \
  --versioning-configuration Status=Enabled

put-bucket-versioning mengaktifkan versioning pada bucket. Setelah aktif, setiap operasi PUT membuat versi baru dan DELETE membuat delete marker — object lama tetap bisa dipulihkan.

Mengembalikan Versi Lama

Dengan versioning aktif, restore object ke versi sebelumnya sangat mudah:

Ambil versi object tertentu
aws --endpoint-url https://rgw.example.com \
  s3api get-object \
  --bucket bucket-pertama \
  --key laporan.pdf \
  --version-id <versi-id> restore.pdf

get-object --version-id mengambil versi spesifik dari object. Andaikan file terlanjur tertimpa, kalian bisa mengambil versi sebelum penimpaan dan mengembalikannya.

Menyusun Bucket Lifecycle

Lifecycle rule mengotomatiskan transisi dan penghapusan object berdasarkan usia. Contoh rule yang menghapus object lama:

Lifecycle rule lengkap
{
  "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 Policies dan Multipart Upload

Bucket dan Object Policies

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.

Multipart Upload untuk Object Besar

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:

Multipart upload via aws cli
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.

Membuat Multipart Secara Manual

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.

GDPR, Compliance, dan Data Retention

Kebijakan Retention

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.

Cegah penghapusan dengan deny policy
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.

Akses Data untuk Audit

Aktifkan logging akses agar setiap operasi tercatat untuk keperluan audit:

Aktifkan akses log
radosgw-admin log enable --bucket=bucket-audit

radosgw-admin log enable mengaktifkan log akses untuk bucket tertentu. Data log ini menjadi bukti compliance saat auditor meminta jejak akses terhadap data sensitif.

Integrasi Object Storage dengan Analytics

Object Storage sebagai Data Lake

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.

List object untuk konsumsi analytics
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.

Event Notification untuk 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.

Penutup

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:

  • Versioning menyimpan setiap versi object dan melindungi dari penimpaan.
  • Lifecycle rule mengotomatiskan transisi dan penghapusan object berdasarkan usia.
  • Multipart upload diperlukan untuk object besar dan upload yang bisa dilanjutkan.
  • Deny policy dan log akses mendukung persyaratan GDPR dan retention.
  • Object storage RGW bisa menjadi backend data lake untuk engine analytics.
  • Bucket notification menghubungkan data baru ke pipeline pemrosesan.

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!