Dokumentasi Migrasi ACI

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.
Memuat diagram...

2. Spesifikasi Kriptografi & URL

Enkripsi token harus 100% kompatibel dengan dekripsi pada backend Java/Spring Boot assistium-activity-service:

ParameterSpesifikasi Teknis
Cipher AlgorithmAES-256-CBC
PaddingPKCS#7 Padding
Output FormatHexadecimal 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.

On this page