S3 & MinIO Data Migrator
Panduan arsitektur, spesifikasi teknis kriptografi enkripsi AES-CBC, struktur tabel pemetaan, serta penggunaan CLI tool s3-migrator.
S3 & MinIO Data Migrator
Tool s3-migrator adalah utilitas performa tinggi berbasis Golang yang dirancang untuk memigrasikan puluhan ribu file aset/dokumen dari bucket storage lama (Huawei OBS / S3) ke cluster MinIO baru pada ekosistem ACI Superapp.
1. Latar Belakang & Perubahan Arsitektur
Pada aplikasi legacy (AON / Assessor Tool):
- File disimpan apa adanya di S3 dengan nama asli dan ekstensi file.
- Basis data MySQL menyimpan file path secara langsung melalui tabel polimorfik
obs_storage.
Pada arsitektur baru (ACI Superapp):
- File diunggah ke MinIO dengan nama objek berupa hash SHA-1 dari nama file asli.
- Seluruh file dienkripsi dengan AES-256-CBC dan dapat diakses publik melalui gateway API controller
assistium-activity-service. - Kolom basis data di PostgreSQL menyimpan Full URL API berparameter token terenkripsi.
2. Spesifikasi Kriptografi & URL
Enkripsi token harus 100% kompatibel dengan dekripsi pada backend Java/Spring Boot assistium-activity-service:
| Parameter | Spesifikasi Teknis |
|---|---|
| Cipher Algorithm | AES-256-CBC |
| Padding | PKCS#7 Padding |
| Output Format | Hexadecimal String (Lowercase) |
| AES Key (32 bytes) | M0kL3Ta!s3n0dnIR3Tn3CtNeMss3ssA@ |
| IV Key (16 bytes) | 2202#@!1cAM0kL3T |
Payload Metadata yang Dienkripsi
{
"bucketName": "acisuperapp",
"objectName": "c379a07185ee66657934c9c1b3f94ec6b6771d9d",
"metaFile": {
"name": "company_logo_telkom.png",
"size": 142589,
"contentType": "image/png"
}
}Full URL Format Target
https://api-assistium-dev.apps.kpaasjtn1.telkom.co.id/assistium-activity/api/v1/obs/content?content=<ENCRYPTED_HEX_PAYLOAD>3. Struktur Tabel Pemetaan Target
Seluruh hasil migrasi dicatat ke dalam skema PostgreSQL "activity-cms"."migration_obs_storage":
CREATE TABLE IF NOT EXISTS "activity-cms".migration_obs_storage (
id BIGSERIAL PRIMARY KEY,
source_obs_id BIGINT UNIQUE NOT NULL,
source_table_name VARCHAR(255) NOT NULL,
source_table_pk VARCHAR(255) NOT NULL,
source_bucket VARCHAR(255) NOT NULL,
source_file_path TEXT NOT NULL,
target_bucket VARCHAR(255) NOT NULL,
target_object_name VARCHAR(255) NOT NULL,
target_url TEXT NOT NULL,
file_name VARCHAR(255),
file_size BIGINT,
content_type VARCHAR(255),
migration_status VARCHAR(50) NOT NULL,
error_message TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_mig_obs_source_table
ON "activity-cms".migration_obs_storage(source_table_name, source_table_pk);4. Cara Menjalankan S3 Migrator
Tool biner terletak di: /mnt/data/project/2026/migrasi aci/s3-migrator
cd "/mnt/data/project/2026/migrasi aci/s3-migrator"
# Menjalankan migrasi penuh dengan 15 concurrent workers
nohup ./s3-migrator migrate --workers=15 > migration.log 2>&1 &Konfigurasi Fleksibel via .env
Seluruh DSN database (MySQL & PostgreSQL), endpoint storage, bucket name, crypto key & IV, base URL, serta timeout dapat disesuaikan melalui file .env tanpa perlu mengompilasi ulang kode sumber.