Alibaba Cloud Simple Log Service (SLS) mendukung fitur penghapusan lunak, yang memungkinkan Anda menandai data log sebagai terhapus tanpa menghapusnya secara permanen. Topik ini menjelaskan cara melakukan penghapusan lunak.
Fitur penghapusan lunak untuk Simple Log Service (SLS) sedang dirilis secara bertahap dan hanya tersedia bagi pengguna tertentu di wilayah tertentu. Untuk mengaktifkan fitur ini, ajukan tiket.
Informasi latar belakang
Di lingkungan berbasis data, log dan data yang dapat diamati merupakan aset bisnis utama. Namun, data tersebut juga membawa tantangan terkait manajemen data, kepatuhan, dan keamanan. Untuk mengatasi hal ini, Alibaba Cloud Simple Log Service (SLS) menyediakan fitur soft deletion. Fitur ini menawarkan mekanisme penghapusan yang dapat dilacak serta berfungsi sebagai jaring pengaman bagi sistem keamanan data dan kepatuhan Anda.
Cara kerjanya (klik untuk melihat)
Skenario (klik untuk melihat)
Tindakan pencegahan
Pertimbangan Biaya Penyimpanan: Data yang dihapus secara lunak tetap menggunakan ruang penyimpanan dan menimbulkan biaya selama periode retensi. Data tersebut tidak dihapus secara fisik hingga periode retensi berakhir.
Akurasi Pernyataan Kueri: Kueri sebelum Anda menghapus. Sebelum melakukan penghapusan, jalankan kueri menggunakan rentang waktu kueri dan pernyataan pencarian yang sama persis. Pratinjau data yang akan dihapus untuk memastikan keakuratannya sebelum melanjutkan dengan penghapusan.
Anda tidak dapat menanyakan atau menganalisis log yang dihapus secara lunak. Hal ini mencakup kueri, analisis SQL, ScheduledSQL, dan peringatan. Operasi pemrosesan aliran tidak terpengaruh, termasuk konsumsi, transformasi data, dan pengiriman.
Penghapusan lunak tidak dapat dibatalkan. Log yang dihapus tidak dapat dipulihkan.
Wilayah yang didukung
Penghapusan lunak saat ini didukung di Singapura dan Tiongkok (Ulanqab). Anda dapat melihat titik akhir untuk wilayah tempat proyek Anda berada di halaman gambaran proyek. Untuk informasi lebih lanjut tentang ID wilayah, lihat Titik Akhir.
Izin
Jika Anda masuk dengan Akun Alibaba Cloud, Anda secara default memiliki semua izin operasi dan dapat langsung melakukan operasi pada proyek.
Jika Anda masuk sebagai Pengguna Resource Access Management (RAM), Anda harus meminta izin yang diperlukan dari pemilik Akun Alibaba Cloud. Simple Log Service menyediakan kebijakan sistem berikut:
Kebijakan sistem: Kebijakan ini memberikan izin luas. Pengguna tidak dapat memodifikasi isi kebijakan sistem, tetapi langkah-langkah konfigurasinya sederhana.
AliyunLogFullAccess: Memberikan izin manajemen penuh pada Simple Log Service.
AliyunLogReadOnlyAccess: Memberikan izin baca-saja pada Simple Log Service.
Kebijakan kustom: Ikuti prinsip hak istimewa minimal. Berikan hanya izin minimum yang diperlukan kepada personel tepercaya atau layanan otomatis.
Berikut adalah contoh kebijakan kustom:
Ganti
ProjectNamedanLogStoreNamedalam kebijakan dengan nama proyek dan Logstore Anda yang sebenarnya.Untuk informasi lebih lanjut tentang cara mengonfigurasi izin untuk Pengguna RAM, lihat Konfigurasikan Izin RAM untuk Simple Log Service dan Informasi Otorisasi.
{ "Version": "1", "Statement": [ { "Action": [ "log:DeleteLogStoreLogs", "log:GetDeleteLogStoreLogsTask", "log:ListDeleteLogStoreLogsTasks", ], "Resource": [ "acs:log:*:*:project/ProjectName/logstore/LogStoreName" ] "Effect": "Allow" } ] }
Operasi Konsol
Masuk ke Konsol Layanan Log Sederhana. Di bagian Projects, klik proyek yang diinginkan.
Di tab , klik logstore yang diinginkan.
Di halaman Query and Analysis dari Logstore, masukkan pernyataan pencarian dan tentukan rentang waktu. Di tab Raw Logs, klik .

Di kotak dialog Soft Delete Log, baca informasi dengan cermat dan klik Confirm. Setelah penghapusan selesai, log tidak akan lagi terlihat.
Setelah penghapusan selesai, di tab Raw Logs, klik . Di daftar Soft-delete Tasks, Anda dapat melihat riwayat tugas penghapusan.
Operasi SDK
Python
Jalankan
pip show aliyun-log-python-sdkuntuk memeriksa versialiyun-log-python-sdk.Versi
aliyun-log-python-sdkharus 0.9.28 atau lebih baru. Jika versinya lebih lama, jalankanpip install -U aliyun-log-python-sdkuntuk memperbarui SDK.Kirim tugas penghapusan lunak.
Tabel berikut menjelaskan parameter dari
DeleteLogsRequest.Parameter
Contoh
# Impor pustaka yang diperlukan import time from aliyun.log import LogClient, DeleteLogsRequest, DeleteLogsResponse def execute_soft_delete(client: LogClient, project: str, logstore: str, from_time: int, to_time: int, query: str) -> str: """ Menjalankan tugas penghapusan lunak secara asinkron. :param client: Instance klien SLS yang telah diinisialisasi. :param project: Nama proyek SLS Anda. :param logstore: Nama Logstore Anda. :param from_time: Stempel waktu awal rentang penghapusan (dalam detik). :param to_time: Stempel waktu akhir rentang penghapusan (dalam detik). :param query: Pernyataan pencarian hanya indeks yang digunakan untuk menyaring log untuk penghapusan (SQL, pemindaian, dan kueri frasa tidak didukung). :return: ID tugas penghapusan asinkron, digunakan untuk menanyakan status tugas nanti. """ print(f"Menyiapkan untuk melakukan penghapusan lunak di Logstore '{logstore}' dari proyek '{project}'...") print(f"Rentang waktu: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(from_time))} -> {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(to_time))}") print(f"Kondisi penghapusan (Query): {query}") # 1. Bangun objek permintaan penghapusan request = DeleteLogsRequest(project, logstore, from_time, to_time, query=query) # 2. Mulai permintaan penghapusan asinkron try: res: DeleteLogsResponse = client.delete_logs(request) # 3. Cetak informasi permintaan dan ID tugas yang dikembalikan print("\n--- Tanda Terima Permintaan ---") res.log_print() task_id = res.get_taskid() print(f"✅ Tugas penghapusan lunak berhasil dikirim! ID Permintaan: {res.get_request_id()}, ID Tugas: {task_id}") return task_id except Exception as e: print(f"❌ Gagal mengirim tugas penghapusan lunak: {e}") return "" # --- Cara memanggil --- # client = LogClient(...) # Proses inisialisasi klien dihilangkan di sini # project_name = "my-prod-app" # logstore_name = "nginx-access-log" # # Skenario: Hapus log akses dari 24 jam terakhir dengan kode status 500 dari alamat IP tertentu # start_time = int(time.time()) - 86400 # end_time = int(time.time()) # delete_query = "__source__: 123.123.XXX.XXX and status: 500" # task_id = execute_soft_delete(client, project_name, logstore_name, start_time, end_time, delete_query) # if task_id: # print(f"\nSilakan gunakan ID Tugas '{task_id}' untuk menanyakan status eksekusi tugas.")project
String(Wajib)Nama proyek. Proyek di Simple Log Service digunakan untuk mengisolasi sumber daya pengguna yang berbeda dan mengontrol akses ke sumber daya tertentu. Lihat Kelola proyek.
logstore
String(Wajib)Nama logstore. Logstore di Simple Log Service digunakan untuk mengumpulkan, menyimpan, dan menanyakan log. Lihat Kelola logstore.
fromTime
int(Wajib)Awal rentang waktu untuk kueri. Tentukan waktu sebagai stempel waktu UNIX.
toTime
int(Wajib)Akhir rentang waktu untuk kueri. Tentukan waktu sebagai stempel waktu UNIX.
query
String(Wajib)Pernyataan pencarian atau pernyataan analitik. Untuk informasi lebih lanjut, lihat Gambaran Umum Kueri dan Analisis.
Gunakan hati-hati saat Anda mengatur kueri menjadi
"*"atau"level: ERROR". Ini dapat menyebabkan sejumlah besar data dihapus secara tidak terduga.Pantau status tugas.
Blok kode ini terus memeriksa kemajuan tugas sampai tugas selesai atau habis waktu. Ini adalah langkah kunci untuk memastikan bahwa operasi penghapusan berhasil dieksekusi.
delete_logsadalah API asinkron. Panggilan yang berhasil hanya menunjukkan bahwa tugas diterima. Anda harus menggunakantask_idyang dikembalikan untuk memantau status akhir tugas.from aliyun.log import GetDeleteLogsStatusRequest, GetDeleteLogsStatusResponse def wait_for_task_completion(client: LogClient, project: str, logstore: str, task_id: str, timeout_seconds: int = 300): """Menunggu tugas penghapusan lunak selesai dengan polling.""" start_time = time.time() while time.time() - start_time < timeout_seconds: request = GetDeleteLogsStatusRequest(project, logstore, task_id) try: res: GetDeleteLogsStatusResponse = client.get_delete_logs_status(request) progress = res.get_process() print(f"Menanyakan status tugas '{task_id}'... Kemajuan: {progress:.2f}%") if progress >= 100.0: print("✅ Tugas selesai!") return True time.sleep(2) # Hindari polling terlalu sering except Exception as e: print(f"❌ Gagal menanyakan status tugas: {e}") return False print(f"⌛️ Tugas habis waktu (melebihi {timeout_seconds} detik). Silakan coba lagi nanti atau periksa status tugas.") return False # --- Cara memanggil --- # task_id = execute_soft_delete(...) # if task_id: # wait_for_task_completion(client, project_name, logstore_name, task_id)Audit dan kelola tugas penghapusan (lihat tugas historis).
Fitur ini sangat penting untuk audit keamanan dan manajemen operasi karena memberikan riwayat lengkap dari semua operasi penghapusan.
from aliyun.log import ListDeleteLogsTasksRequest def list_all_delete_tasks(client: LogClient, project: str, logstore: str): """Menyusun daftar riwayat semua tugas penghapusan lunak untuk Logstore tertentu.""" print(f"\nMenyusun daftar riwayat tugas penghapusan lunak untuk Logstore '{logstore}' di proyek '{project}'...") request = ListDeleteLogsTasksRequest(project=project, logstore=logstore) try: res = client.list_delete_logs_tasks(request) print("✅ Daftar tugas berhasil diperoleh!") res.log_print() # log_print() mencetak semua detail tugas dalam format yang mudah dibaca except Exception as e: print(f"❌ Gagal mengambil daftar tugas: {e}")
> Log Soft Deletion