全部产品
Search
文档中心

Object Storage Service:Hapus bucket untuk menghemat biaya

更新时间:Dec 06, 2025

Saat bucket tidak lagi diperlukan, hapuslah untuk menghentikan penagihan. Biaya Object Storage Service (OSS) terutama berasal dari resource yang tersimpan di dalam bucket tersebut. Sebelum menghapus bucket, Anda harus membersihkan seluruh resource di dalamnya. Penghapusan bucket merupakan cara paling andal untuk memastikan tidak ada resource berbayar yang tertinggal dan mencegah tagihan tak terduga. Perlu diperhatikan bahwa data yang dihapus tidak dapat dipulihkan, dan nama bucket tersebut akan tersedia bagi pengguna lain untuk didaftarkan. Untuk sepenuhnya berhenti menggunakan layanan OSS, Anda harus menghapus semua bucket di bawah akun Anda.

Penilaian risiko sebelum penghapusan

  • Risiko data tidak dapat dipulihkan

    Menghapus bucket akan menghapus permanen seluruh file, termasuk versi sebelumnya dan bagian-bagian (parts). Operasi ini tidak dapat dikembalikan. Pastikan untuk backup data Anda terlebih dahulu.

  • Risiko gangguan bisnis

    Menghapus bucket menyebabkan gangguan langsung pada website, aplikasi, atau layanan CDN yang bergantung padanya. Pastikan tidak ada layanan yang sedang mengakses bucket tersebut.

  • Risiko pembajakan nama bucket

    Setelah bucket dihapus, namanya memasuki periode tenang selama 4 hingga 8 jam sebelum dilepas. Untuk mempertahankan nama tersebut, kosongkan file-file di dalamnya alih-alih menghapus bucket.

  • Risiko penghapusan sinkron

    Jika replikasi cross-region atau same-region diaktifkan, operasi penghapusan juga dapat mengosongkan data dari bucket tujuan. Periksa konfigurasi Anda.

  • Estimasi biaya dan waktu

    Pembersihan banyak file dapat menimbulkan biaya permintaan API dan memakan waktu beberapa jam atau lebih, tergantung jumlah file.

Periksa resource yang harus dihapus

Jika Anda mencoba menghapus bucket yang masih berisi resource seperti Files, Parts, Access Points, Accelerators, atau RTMP Ingest URLs, pesan error akan menunjukkan bahwa bucket tersebut tidak kosong. Gunakan wizard penghapusan di Konsol OSS. Wizard tersebut secara otomatis memindai dan menampilkan daftar item yang harus dihapus.

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Di halaman Buckets, temukan dan klik bucket yang diinginkan.

  3. Di panel navigasi kiri, gulir ke bawah lalu klik Delete Bucket.

  4. Di halaman Delete Bucket, klik tombol Delete Bucket. Anda kemudian dapat melihat item-item yang harus dibersihkan.

    image

Bersihkan resource yang harus dihapus

Sebelum Anda dapat menghapus bucket, Anda harus membersihkan seluruh resource di dalamnya. Bersihkan resource yang tersisa yang terdeteksi oleh sistem. Jika Anda memiliki banyak file, kami menyarankan Anda menggunakan aturan siklus hidup untuk memprosesnya secara otomatis.

Bersihkan file

Jika kolom status untuk resource Files menunjukkan bahwa fitur HDFS diaktifkan, Anda harus menghapus file HDFS terlebih dahulu. Jika versioning diaktifkan, daftar file OSS menampilkan versi saat ini maupun versi sebelumnya. Oleh karena itu, saat Anda memilih dan menghapus semua file, seluruh versinya juga akan dihapus.

Objek OSS

Gunakan Konsol OSS

  1. Di halaman Delete Bucket, klik Delete Bucket. Kemudian, temukan resource Objects lalu klik Delete.

  2. Pilih semua objek lalu klik Permanently Delete di bagian bawah.

  3. Di kotak dialog yang muncul, klik OK.

Gunakan ossutil

Hapus semua file dalam bucket, termasuk versi saat ini dan versi sebelumnya.

ossutil rm oss://examplebucket/ -r

Untuk informasi selengkapnya, lihat rm (delete).

File HDFS

Gunakan Konsol OSS

  1. Untuk resource Objects, klik Pause Now di kolom status untuk menjeda tugas latar belakang HDFS.

  2. Klik Delete untuk menuju tab HDFS.

  3. Klik Permanently Delete untuk setiap file HDFS.

Gunakan perintah HDFS Shell

hdfs dfs -rm -r -skipTrash oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/*

Untuk informasi selengkapnya, lihat Lakukan operasi umum untuk layanan OSS-HDFS menggunakan perintah shell HDFS.

Bersihkan parts

Parts adalah fragmen file yang belum digabungkan yang dihasilkan oleh fitur unggah multi-bagian.

Gunakan Konsol OSS

  1. Di halaman Delete Bucket, klik Delete Bucket lalu klik Delete untuk resource Parts.

  2. Di halaman Object, klik tab Parts.

  3. Di panel Parts, klik Delete All.

  4. Di kotak dialog, klik OK.

Gunakan ossutil

Hapus semua parts dari unggah multi-bagian yang belum lengkap atau dibatalkan.

ossutil rm oss://examplebucket -m -r -f

Untuk informasi selengkapnya, lihat rm (delete).

Hapus access points

  1. Di panel navigasi kiri, klik Access Point.

  2. Untuk setiap access point, klik Delete Access Point.

  3. Ikuti petunjuk untuk menghapus kebijakan akses yang sesuai.

  4. Setelah Anda menghapus kebijakan akses, kembali ke daftar access point. Masukkan nama access point seperti diminta lalu klik OK untuk menyelesaikan penghapusan.

Hapus accelerators

Perhatikan bahwa menghapus accelerator hanya mengosongkan data yang di-cache di accelerator tersebut. Data di bucket OSS tidak terpengaruh.

  1. Di panel navigasi kiri, klik Bucket Settings > Accelerator.

  2. Di daftar accelerator OSS, klik Delete di kolom Actions.

  3. Masukkan nama accelerator lalu klik OK untuk mengonfirmasi penghapusan.

    image

Bersihkan RTMP ingest URLs

Anda tidak dapat melihat atau menghapus LiveChannels untuk bucket menggunakan alat atau konsol. Anda dapat melakukan operasi ini dengan memanggil API atau SDK. Untuk informasi selengkapnya, lihat dokumentasi API DeleteLiveChannel. Kode Java berikut memberikan contoh cara menghapus LiveChannel tertentu.

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.LiveChannelGenericRequest;

/**
 * Kode ini memberikan contoh cara menghapus LiveChannel tertentu.
 * Program ini menunjukkan cara menghapus LiveChannel di Alibaba Cloud OSS.
 */

public class Demo {

    public static void main(String[] args) throws Exception {
        // Titik akhir OSS. Pilih titik akhir berdasarkan wilayah Anda. Contoh ini menggunakan titik akhir untuk wilayah China (Hangzhou).
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Misalnya, examplebucket.
        String bucketName = "examplebucket";
        // Tentukan nama LiveChannel.
        String liveChannelName = "yourLiveChannelName";
        // Tentukan wilayah tempat bucket berada. Misalnya, setel Region ke cn-hangzhou untuk China (Hangzhou).
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Saat instance OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan resource.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Buat permintaan untuk menghapus LiveChannel.
            LiveChannelGenericRequest request = new LiveChannelGenericRequest(bucketName, liveChannelName);
            // Jalankan operasi penghapusan.
            ossClient.deleteLiveChannel(request);
        } catch (OSSException oe) {
            // Tangani exception yang dikembalikan oleh server OSS.
            oe.printStackTrace();
            System.out.println("Terjadi OSSException, artinya permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (Exception e) {
            System.out.println("Terjadi exception yang tidak terduga:");
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                // Lepaskan resource OSSClient.
                ossClient.shutdown();
            }
        }
    }
}

Hapus bucket

Setelah Anda memastikan bahwa seluruh resource dalam bucket telah dihapus, Anda dapat menghapus bucket tersebut.

Gunakan Konsol OSS

  1. Navigasi ke halaman Delete Bucket untuk bucket yang dituju.

  2. Klik Delete Bucket. Di kotak dialog yang muncul, klik Delete, lalu OK.

ossutil

Perintah berikut menghapus bucket examplebucket.

ossutil api delete-bucket --bucket examplebucket

Untuk informasi selengkapnya, lihat delete-bucket.

OSS SDK

Bagian berikut menyediakan contoh kode untuk menghapus bucket menggunakan SDK umum. Untuk contoh kode yang menggunakan SDK lain, lihat ikhtisar SDK.

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Dalam contoh ini, digunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan resource terkait saat OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Hapus bucket.
            ossClient.deleteBucket(bucketName);
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, artinya permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, artinya klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
} 

Python

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan bahwa skrip ini digunakan untuk menghapus bucket OSS tertentu.
parser = argparse.ArgumentParser(description="Hapus bucket OSS tertentu.")

# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)

# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib.
parser.add_argument('--bucket', help='Nama bucket yang akan dihapus.', required=True)

# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.')

def main():
    """
    Fungsi utama, yang digunakan untuk mengurai argumen baris perintah dan menghapus bucket yang ditentukan.
    """

    args = parser.parse_args()  # Uraikan argumen baris perintah.

    # Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK dan setel penyedia kredensial serta wilayah.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # Jika parameter endpoint disediakan, setel endpoint dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Buat klien OSS berdasarkan konfigurasi.
    client = oss.Client(cfg)

    # Buat permintaan untuk menghapus bucket yang ditentukan.
    request = oss.DeleteBucketRequest(bucket=args.bucket)
   
    try:
        # Kirim permintaan dan dapatkan respons.
        result = client.delete_bucket(request)

        # Cetak kode status dan ID permintaan dari respons.
        print(f'kode status: {result.status_code},'
              f' ID permintaan: {result.request_id}')
    except oss.exceptions.OssError as e:
        # Tangkap dan cetak exception yang mungkin terjadi.
        print(f"Gagal menghapus bucket: {e}")

if __name__ == "__main__":
    main()  # Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan.
  

Go

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
)

func init() {
	// Definisikan parameter baris perintah untuk menentukan wilayah dan nama bucket.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Uraikan parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket telah ditentukan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib")
	}

	// Periksa apakah wilayah telah ditentukan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib")
	}

	// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat objek permintaan untuk penghapusan.
	request := &oss.DeleteBucketRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Panggil metode DeleteBucket.
	result, err := client.DeleteBucket(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus bucket %v", err)
	}

	// Tampilkan hasilnya.
	log.Printf("hasil hapus bucket:%#v\n", result)
}

PHP

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // Muat otomatis objek dan pustaka dependensi.

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan parameter baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada. Contoh: oss-cn-hangzhou. 
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. 
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // (Wajib) Tentukan nama bucket. 
];
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut wajib: --$key, $help"; // Menentukan bahwa parameter wajib belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada. 
$bucket = $options["bucket"]; // Nama bucket. 

// Gunakan variabel lingkungan untuk memuat informasi kredensial (ID AccessKey dan rahasia AccessKey).
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); 

// Gunakan konfigurasi default SDK.
$cfg=Oss\Config::loadDefault(); // Muat konfigurasi default SDK. 
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial. 
$cfg->setRegion($region); // Tentukan wilayah. 
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika titik akhir disediakan. 
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg); 

// Buat permintaan untuk menghapus bucket.
$request = new Oss\Models\DeleteBucketRequest($bucket); 

// Gunakan metode deleteBucket untuk menghapus bucket.
$result = $client->deleteBucket($request); 

// Tampilkan hasil yang dikembalikan.
printf(
    'kode status:' . $result-> statusCode. PHP_EOL . // Kode status respons HTTP. 
    'ID permintaan:' . $result->requestId // Pengidentifikasi unik permintaan. 
);

Node.js

const OSS = require('ali-oss');

const client = new OSS({
  // Setel region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Setel bucket ke nama bucket Anda.
  bucket: 'yourBucketName',
});

async function deleteBucket() {
  try {
    // Tentukan nama bucket.
    const result = await client.deleteBucket('yourbucketname');
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

deleteBucket();

.NET

using System;
using Aliyun.OSS;
using Aliyun.OSS.Common;


namespace Samples
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Setel endpoint ke Endpoint wilayah tempat bucket Anda berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
            var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
            var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
            // Setel bucketName ke nama bucket Anda. Contoh: examplebucket.
            var bucketName = "examplebucket314";
            // Setel region ke ID wilayah tempat bucket Anda berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), setel region ke cn-hangzhou.
            const string region = "cn-hangzhou";
            // Buat instance ClientConfiguration dan ubah parameter default sesuai kebutuhan.
            var conf = new ClientConfiguration();
            // Setel versi signature ke V4.
            conf.SignatureVersion = SignatureVersion.V4;

            // Buat instance OssClient.
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
            client.SetRegion(region);
            
            try
            {
                client.DeleteBucket(bucketName);

                Console.WriteLine("Berhasil menghapus bucket");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Gagal menghapus bucket. {0}", ex.Message);
            }
        }
    }
}

Android

DeleteBucketRequest deleteBucketRequest = new DeleteBucketRequest("bucketName");

// Hapus bucket secara asinkron.
OSSAsyncTask deleteBucketTask = oss.asyncDeleteBucket(deleteBucketRequest, new OSSCompletedCallback<DeleteBucketRequest, DeleteBucketResult>() {
    @Override
    public void onSuccess(DeleteBucketRequest request, DeleteBucketResult result) {
        Log.d("asyncDeleteBucket", "Berhasil!");
    }
    @Override
    public void onFailure(DeleteBucketRequest request, ClientException clientException, ServiceException serviceException) {
        // Permintaan gagal.
        if (clientException != null) {
            // Exception klien, seperti exception jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Exception layanan.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

iOS

OSSDeleteBucketRequest * delete = [OSSDeleteBucketRequest new];
// Tentukan nama bucket. Misalnya, examplebucket.
delete.bucketName = @"examplebucket";
OSSTask * deleteTask = [client deleteBucket:delete];
[deleteTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"Berhasil menghapus bucket!");
    } else {
        NSLog(@"Gagal menghapus bucket, error: %@", task.error);
    }
    return nil;
}];
// Blokir thread saat ini hingga tugas selesai.
// [getdeleteTask waitUntilFinished];

C++

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /*Inisialisasi informasi akun OSS.*/
    
    /*Setel yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.*/
    std::string Endpoint = "yourEndpoint";
    
    /*Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke cn-hangzhou.*/
    std::string Region = "yourRegion";
    
    /*Tentukan nama bucket, misalnya, examplebucket.*/
    std::string BucketName = "examplebucket";

    /*Inisialisasi resource jaringan.*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /*Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /*Hapus bucket.*/
    DeleteBucketRequest request(BucketName);
   
    auto outcome = client.DeleteBucket(request);

    if (outcome.isSuccess()) {
    std::cout << "Berhasil menghapus bucket." << std::endl;
    } else {
    std::cout << "Gagal menghapus bucket. Kode error: " << outcome.error().Code()
              << ", Pesan: " << outcome.error().Message()
              << ", RequestId: " << outcome.error().RequestId() << std::endl;
    }

    /*Lepaskan resource jaringan.*/
    ShutdownSdk();
    return 0;
}

C

#include "oss_api.h"
#include "aos_http_io.h"
/* Setel yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";

/* Setel nama bucket. Contoh: examplebucket. */
const char *bucket_name = "examplebucket";
/* Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel region ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi tipe aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. */    
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // Konfigurasikan dua parameter tambahan berikut.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah akan menggunakan CNAME untuk mengakses OSS. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Setel parameter jaringan, seperti periode timeout. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Panggil metode aos_http_io_initialize di main() untuk menginisialisasi resource global, seperti jaringan dan memori. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Pool memori (pool) untuk manajemen memori, setara dengan apr_pool_t. Kode implementasinya ada di pustaka APR. */
    aos_pool_t *pool;
    /* Buat pool memori baru. Parameter kedua adalah NULL, yang menunjukkan bahwa pool tidak mewarisi dari pool memori lain. */
    aos_pool_create(&pool, NULL);
    /* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
    oss_request_options_t *oss_client_options;
    /* Alokasikan memori untuk opsi di pool memori. */
    oss_client_options = oss_request_options_create(pool);
    /* Inisialisasi opsi klien oss_client_options. */
    init_options(oss_client_options);
    /* Inisialisasi parameter. */
    aos_string_t bucket;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    /* Tetapkan data char* ke aos_string_t bucket. */
    aos_str_set(&bucket, bucket_name);
    /* Hapus bucket. */
    resp_status = oss_delete_bucket (oss_client_options, &bucket, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("Berhasil menghapus bucket\n");
    } else {
        printf("Gagal menghapus bucket\n");
    }
    /* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk resource selama permintaan. */
    aos_pool_destroy(pool);
    /* Lepaskan resource global yang sebelumnya dialokasikan. */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Wilayah China (Hangzhou) digunakan sebagai contoh. Tentukan Endpoint aktual untuk wilayah Anda.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket. Misalnya, examplebucket.
client.delete_bucket('examplebucket')

Bersihkan otomatis file dan parts dalam jumlah besar

Saat bucket berisi banyak file, seperti jutaan atau lebih, mengonfigurasi aturan siklus hidup merupakan cara paling efisien dan hemat biaya untuk membersihkannya. Metode ini melibatkan penyetelan aturan untuk menghapus objek yang telah kedaluwarsa. Sistem kemudian secara otomatis menghapus seluruh data dalam bucket setelah waktu tertentu. Jika Anda belum familiar dengan aturan siklus hidup, uji terlebih dahulu di bucket uji.

Perhatikan bahwa penghapusan file bersifat tidak dapat dikembalikan. Lakukan dengan hati-hati.

Untuk bucket dengan versioning dinonaktifkan

Untuk bucket dengan versioning dinonaktifkan, Anda dapat mengonfigurasi satu aturan siklus hidup untuk secara otomatis dan cepat menghapus seluruh file dan parts (bagian yang belum digabungkan dari unggah multi-bagian).

  1. Masuk ke Konsol OSS. Buka halaman Buckets lalu temukan bucket yang dituju.

  2. Di panel navigasi kiri, pilih Content Security > Versioning. Verifikasi bahwa versioning dinonaktifkan untuk bucket tersebut.

    未开启版本控制

  3. Di panel navigasi kiri, pilih Data Management > Lifecycle. Setel aturan siklus hidup yang secara otomatis menghapus file 1 hari setelah modifikasi terakhir dan menghapus parts yang berusia lebih dari 1 hari.

    screenshot_2025-07-01_17-59-32

Untuk bucket dengan versioning diaktifkan

Saat versioning diaktifkan, bucket dapat berisi versi file saat ini, versi file sebelumnya, parts, dan penanda hapus. Anda dapat mengonfigurasi satu aturan siklus hidup untuk secara otomatis dan cepat membersihkan item-item tersebut.

  1. Masuk ke Konsol OSS. Buka halaman Buckets lalu temukan bucket yang dituju.

  2. Di panel navigasi kiri, pilih Content Security > Versioning. Verifikasi bahwa versioning diaktifkan untuk bucket tersebut.

    screenshot_2025-07-02_10-58-23

  3. Di panel navigasi kiri, pilih Data Management > Lifecycle. Setel aturan siklus hidup untuk secara otomatis menghapus seluruh versi file saat ini dan sebelumnya 1 hari setelah modifikasi terakhir, menghapus parts yang berusia lebih dari 1 hari, dan menghapus penanda hapus.

    screenshot_2025-07-02_10-58-23

FAQ

Apa yang harus saya lakukan jika mendapat error "Bucket is not empty"?

Error ini menunjukkan bahwa bucket masih berisi resource. Gunakan Konsol OSS untuk memeriksa resource yang tersisa. Kemudian, bersihkan resource tersebut dan coba hapus bucket lagi. Untuk informasi selengkapnya, lihat Bersihkan resource yang harus dihapus.

Mengapa saya tidak bisa langsung membuat bucket dengan nama yang sama setelah menghapusnya?

Setelah Anda menghapus bucket, namanya memasuki periode tenang selama 4 hingga 8 jam. Selama periode ini, tidak ada pengguna yang dapat membuat bucket baru dengan nama yang sama. Untuk membuat bucket segera, Anda harus menggunakan nama yang berbeda.

Setelah periode tenang berakhir, nama tersebut menjadi tersedia untuk semua pengguna. Jika Anda tidak segera membuat ulang bucket tersebut, pengguna lain mungkin mendaftarkan nama tersebut sebelum Anda sempat melakukannya.

Bagaimana cara menghapus beberapa bucket dalam operasi batch?

Peringatan

Penghapusan batch merupakan operasi berisiko tinggi yang dapat menyebabkan kehilangan data permanen. Sebelum melanjutkan, periksa kembali daftar bucket yang ingin Anda hapus dan pastikan Anda telah melakukan backup seluruh data yang diperlukan.

Konsol OSS tidak mendukung penghapusan batch. Namun, Anda dapat menulis skrip yang menggunakan ossutil untuk melakukan operasi ini.

Logika intinya adalah sebagai berikut:

  1. Siapkan daftar: Buat file teks atau daftar akurat yang berisi nama seluruh bucket yang ingin Anda hapus.

  2. Eksekusi dalam loop: Skrip Anda harus menelusuri daftar tersebut dan melakukan dua langkah utama berikut untuk setiap nama bucket.

    1. Kosongkan resource: Panggil perintah ossutil untuk mengosongkan bucket.

    2. Hapus bucket kosong: Setelah memastikan langkah sebelumnya berhasil, panggil perintah ossutil untuk menghapus bucket.

Apa yang harus saya lakukan jika mendapat error "Insufficient permissions" saat penghapusan?

Untuk menghapus bucket, Anda harus terlebih dahulu membersihkan seluruh resource di dalamnya. Proses ini memerlukan beberapa izin, seperti izin list dan delete. Kami menyarankan Anda menghubungi administrator untuk memberikan izin AliyunOSSFullAccess kepada identitas RAM Anda. Hal ini mencegah kegagalan penghapusan akibat izin yang kurang.

Bagaimana cara sepenuhnya menghentikan penagihan untuk OSS?

Untuk sepenuhnya menghentikan seluruh biaya Object Storage Service (OSS), Anda harus menghapus semua bucket di bawah akun Anda. Selama masih ada bucket di akun Anda, bahkan jika kosong, atau jika Anda memiliki tagihan yang belum diselesaikan, Anda mungkin tetap dikenai biaya terkait OSS.

Dapatkah saya memulihkan bucket setelah secara tidak sengaja menghapusnya?

Tidak, Anda tidak dapat memulihkannya. Operasi penghapusan bersifat tidak dapat dikembalikan. Selalu backup data Anda sebelum menghapus bucket.