Jika Anda tidak lagi memerlukan sebuah bucket, Anda dapat menghapusnya untuk menghentikan semua penagihan. Karena biaya Object Storage Service (OSS) dikenakan untuk resource di dalam bucket, Anda harus mengosongkan semua resource terlebih dahulu sebelum menghapusnya. Menghapus bucket merupakan cara paling andal untuk mencegah biaya tak terduga akibat resource yang terlupakan. Perhatikan bahwa data tidak dapat dipulihkan setelah bucket dihapus, dan pengguna lain dapat mengklaim nama tersebut setelah dilepas. Untuk sepenuhnya berhenti menggunakan OSS, Anda harus menghapus semua bucket dalam akun Anda.
Nilai risiko sebelum penghapusan
Risiko kehilangan data permanen
Aksi ini tidak dapat dikembalikan dan secara permanen menghapus semua objek, versi sebelumnya, serta bagian-bagiannya. Backup data Anda terlebih dahulu.
Risiko gangguan layanan
Menghapus bucket langsung mengganggu situs web, aplikasi, atau layanan CDN apa pun yang bergantung padanya. Pastikan tidak ada layanan yang sedang mengakses bucket tersebut.
Risiko squatting nama bucket
Setelah bucket dihapus, namanya memasuki periode tenang selama 4 hingga 8 jam sebelum dilepas. Jika Anda perlu menyimpan nama tersebut, kami menyarankan mengosongkan bucket alih-alih menghapusnya.
Risiko penghapusan sinkron
Jika Anda telah mengaktifkan replikasi lintas wilayah atau replikasi dalam wilayah yang sama, operasi penghapusan juga dapat mengosongkan data dari bucket tujuan. Periksa konfigurasi Anda.
Perkiraan biaya dan waktu
Pembersihan banyak objek dapat menimbulkan biaya permintaan API dan memakan waktu beberapa jam atau lebih lama, tergantung pada volume data.
Periksa resource yang harus dihapus
Jika Anda mencoba menghapus bucket yang berisi resource seperti objek, bagian, titik akses, akselerator, atau URL ingest RTMP, sistem akan melaporkan error "Bucket tidak kosong". Kami menyarankan menggunakan wizard penghapusan di Konsol OSS, yang secara otomatis memindai dan mencantumkan semua item yang perlu dibersihkan.
Masuk ke Konsol OSS.
Di panel navigasi kiri, klik Buckets. Di halaman yang muncul, klik nama bucket target.
Di panel navigasi kiri, gulir ke bawah dan klik Delete Bucket.
Di halaman Delete Bucket, klik Delete Bucket. Anda kemudian dapat melihat item-item yang harus dibersihkan.
Bersihkan resource yang diperlukan
Untuk menghapus bucket, Anda harus terlebih dahulu membersihkan semua resource-nya. Bersihkan resource yang diidentifikasi oleh sistem. Jika bucket berisi banyak objek, kami menyarankan menggunakan aturan siklus hidup untuk mengotomatiskan pembersihan.
Objek
Jika kolom status untuk resource objek menunjukkan bahwa fitur HDFS diaktifkan, Anda harus membersihkan objek HDFS terlebih dahulu. Jika Pengendalian versi diaktifkan, halaman Objek menampilkan versi saat ini dan semua versi sebelumnya. Oleh karena itu, memilih semua objek dan menghapusnya akan menghapus semua versi.
OSS objects
OSS console
Di halaman Delete Bucket, klik Delete Bucket, temukan resource objects, lalu klik Delete.
Pilih semua objek dan klik Permanently Delete di bagian bawah halaman.
Di kotak dialog yang muncul, klik OK.
ossutil
Menghapus semua objek dari bucket, termasuk versi saat ini dan sebelumnya.
ossutil rm oss://examplebucket/ -rUntuk contoh lainnya, lihat rm (delete).
HDFS objects
OSS console
Di kolom Status resource object, klik Pause Now untuk menghentikan tugas latar belakang HDFS.
Klik Delete untuk membuka tab HDFS.
Klik Permanently Delete secara berurutan hingga semua file HDFS dihapus.
HDFS shell commands
hdfs dfs -rm -r -skipTrash oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/*Untuk informasi lebih lanjut, lihat Lakukan operasi umum untuk layanan OSS-HDFS menggunakan perintah shell HDFS.
Bagian
Bagian adalah fragmen objek yang dihasilkan oleh unggah multi-bagian yang belum lengkap.
OSS console
Di halaman Delete Bucket, klik Delete Bucket, temukan item resource Parts, lalu klik Delete.
Di halaman Objects, klik Part Management.
Di panel Parts, klik Delete All.
Di kotak dialog, klik OK.
ossutil
Menghapus semua bagian dari unggah multi-bagian yang belum lengkap atau dibatalkan.
ossutil rm oss://examplebucket -m -r -fUntuk informasi lebih lanjut, lihat rm (delete).
Titik akses
Di bilah navigasi kiri, klik Access Point.
Untuk setiap titik akses, klik Delete Access Point.
Ikuti petunjuk di layar untuk menghapus kebijakan akses terkait.
Setelah menghapus kebijakan akses, kembali ke daftar titik akses. Masukkan nama titik akses seperti diminta dan klik OK untuk menyelesaikan penghapusan.
Akselerator
Perhatikan bahwa menghapus akselerator hanya mengosongkan data cache-nya. Data yang disimpan di bucket OSS tidak terpengaruh.
Di bilah navigasi kiri, klik Bucket Settings > Accelerator.
Di daftar akselerator OSS, klik Delete di kolom Actions.
Masukkan nama akselerator seperti diminta di halaman, lalu klik OK untuk menyelesaikan penghapusan.

URL ingest RTMP
Anda tidak dapat melihat atau menghapus LiveChannel bucket melalui Konsol OSS atau alat lainnya. Sebagai gantinya, gunakan SDK atau panggil API. Untuk informasi lebih lanjut, lihat dokumentasi API DeleteLiveChannel. Contoh kode berikut menunjukkan 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 Tiongkok (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 diatur.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Misalnya, examplebucket.
String bucketName = "examplebucket";
// Tentukan nama LiveChannel.
String liveChannelName = "yourLiveChannelName";
// Tentukan wilayah tempat bucket berada. Misalnya, atur Region ke cn-hangzhou untuk Tiongkok (Hangzhou).
String region = "cn-hangzhou";
// Buat instans OSSClient.
// Saat instans 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, yang berarti 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("ID Host:" + 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 semua resource di dalam bucket telah dibersihkan, Anda dapat menghapus bucket tersebut.
OSS console
Kembali ke halaman Delete Bucket untuk bucket target.
Klik Delete Bucket, masukkan nama bucket seperti diminta, lalu klik OK untuk menyelesaikan penghapusan.
ossutil
Perintah berikut menghapus bucket bernama examplebucket.
ossutil api delete-bucket --bucket examplebucketUntuk informasi lebih lanjut, lihat delete-bucket.
OSS SDK
Bagian berikut menyediakan contoh kode untuk menghapus bucket menggunakan SDK umum. Untuk informasi tentang SDK lainnya, 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 {
// Pada contoh ini, digunakan titik akhir wilayah Tiongkok (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 Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instans 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, yang berarti 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("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Terjadi ClientException, yang berarti 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
Kode contoh berikut menunjukkan cara menghapus bucket menggunakan OSS SDK untuk 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() # Urai argumen baris perintah.
# Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default SDK dan atur penyedia kredensial serta wilayah.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
# Jika parameter endpoint disediakan, atur 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 tanggapan.
result = client.delete_bucket(request)
# Cetak kode status dan ID permintaan dari tanggapan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id}')
except oss.exceptions.OperationError 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
Kode contoh berikut menunjukkan cara menghapus bucket menggunakan OSS SDK untuk 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(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Urai parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// 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
Kode contoh berikut menunjukkan cara menghapus bucket menggunakan OSS SDK untuk 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 endpoint 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));
// Urai 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 diperlukan: --$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 endpoint jika endpoint disediakan.
}
// Buat instans 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({
// Atur region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur 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,
// Atur 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)
{
// Atur endpoint ke Endpoint wilayah tempat bucket Anda berada. Misalnya, jika bucket Anda berada di wilayah Tiongkok (Hangzhou), atur 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 diatur.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Atur bucketName ke nama bucket Anda. Contoh: examplebucket.
var bucketName = "examplebucket314";
// Atur region ke ID wilayah tempat bucket Anda berada. Misalnya, jika bucket Anda berada di wilayah Tiongkok (Hangzhou), atur region ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instans ClientConfiguration dan modifikasi parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();
// Atur versi signature ke V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
client.DeleteBucket(bucketName);
Console.WriteLine("Hapus bucket berhasil");
}
catch (Exception ex)
{
Console.WriteLine("Hapus bucket gagal. {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("KodeError", serviceException.getErrorCode());
Log.e("IDPermintaan", serviceException.getRequestId());
Log.e("IDHost", serviceException.getHostId());
Log.e("PesanAsli", 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(@"hapus bucket berhasil!");
} else {
NSLog(@"hapus bucket gagal, 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.*/
/*Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.*/
std::string Endpoint = "yourEndpoint";
/*Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah 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 diatur.*/
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 << "Hapus bucket berhasil." << std::endl;
} else {
std::cout << "Gagal menghapus bucket. Kode error: " << outcome.error().Code()
<< ", Pesan: " << outcome.error().Message()
<< ", ID Permintaan: " << outcome.error().RequestId() << std::endl;
}
/*Lepaskan resource jaringan.*/
ShutdownSdk();
return 0;
}C
#include "oss_api.h"
#include "aos_http_io.h"
/* Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Atur nama bucket. Contoh: examplebucket. */
const char *bucket_name = "examplebucket";
/* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah 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 diatur. */
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 berarti CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Atur 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 berarti 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 dalam 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 bucket aos_string_t. */
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("hapus bucket berhasil\n");
} else {
printf("hapus bucket gagal\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 Tiongkok (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 diatur.
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')Pembersihan otomatis untuk volume besar
Jika bucket berisi jumlah objek yang sangat besar (jutaan atau lebih), mengonfigurasi aturan siklus hidup adalah metode pembersihan paling efisien dan hemat biaya. Pendekatan ini melibatkan pengaturan aturan "kedaluwarsa dan hapus" yang menginstruksikan sistem untuk secara otomatis menghapus semua data di dalam bucket setelah periode tertentu. Jika Anda tidak terbiasa dengan aturan siklus hidup, kami menyarankan mengujinya terlebih dahulu di bucket non-produksi.
Catatan: Penghapusan objek adalah tindakan yang tidak dapat dikembalikan. Lakukan dengan hati-hati.
Pengendalian versi dinonaktifkan
Untuk bucket dengan Pengendalian versi dinonaktifkan, Anda hanya perlu mengonfigurasi satu aturan siklus hidup untuk secara otomatis dan cepat membersihkan semua objek dan bagian (bagian yang belum digabung dari unggah multi-bagian).
Masuk ke Konsol OSS, buka halaman Buckets, lalu klik nama bucket target.
Di panel navigasi kiri, pilih dan pastikan versioning dinonaktifkan untuk bucket tersebut.
Di panel navigasi kiri, pilih Data Management > Lifecycle. Konfigurasikan aturan siklus hidup untuk secara otomatis menghapus semua objek di dalam bucket 1 hari setelah terakhir dimodifikasi, dan secara otomatis membersihkan bagian yang dibuat lebih dari 1 hari lalu.
Pengendalian versi diaktifkan
Saat Pengendalian versi diaktifkan untuk bucket, bucket tersebut dapat berisi versi objek saat ini, versi objek sebelumnya, bagian, dan penanda hapus. Anda hanya perlu mengonfigurasi satu aturan siklus hidup untuk secara otomatis dan cepat membersihkan semua item ini.
Masuk ke Konsol OSS, buka halaman Buckets, lalu klik nama bucket target.
Di bilah navigasi kiri, pilih , lalu pastikan versioning diaktifkan untuk bucket tersebut.
Di bilah navigasi kiri, pilih , dan konfigurasikan aturan siklus hidup untuk secara otomatis menghapus semua objek versi saat ini dan sebelumnya di dalam bucket 1 hari setelah modifikasi terakhir dan secara otomatis membersihkan bagian yang dibuat lebih dari 1 hari lalu. Aturan ini juga membersihkan penanda hapus.
FAQ
Kesalahan "Bucket tidak kosong"
Error ini menunjukkan bucket masih berisi resource. Kami menyarankan menggunakan Konsol OSS untuk mengidentifikasi dan membersihkan resource yang tersisa seperti dijelaskan dalam Bersihkan resource yang diperlukan. Kemudian, coba hapus bucket lagi.
Membuat ulang bucket dengan nama yang sama
Setelah bucket dihapus, namanya memasuki periode tenang selama 4 hingga 8 jam. Selama periode ini, tidak ada pengguna yang dapat membuat bucket baru dengan nama tersebut. Jika Anda memerlukan bucket segera, gunakan nama baru.
Setelah periode tenang berakhir, nama tersebut tersedia untuk semua pengguna. Jika Anda tidak segera membuat ulang bucket, pengguna lain dapat mengklaim nama tersebut sebelum Anda sempat melakukannya.
Penghapusan batch beberapa bucket
Penghapusan batch adalah operasi berisiko tinggi yang dapat menyebabkan kehilangan data permanen. Sebelum melanjutkan, periksa dengan cermat daftar bucket yang akan dihapus dan pastikan semua data penting telah dibackup.
Konsol OSS tidak mendukung penghapusan batch. Namun, Anda dapat menulis skrip yang menggunakan ossutil untuk melakukan operasi ini.
Logika intinya adalah sebagai berikut:
Siapkan daftar: Buat file teks atau daftar akurat yang berisi nama semua bucket yang ingin Anda hapus.
Eksekusi dalam loop: Skrip Anda harus mengulangi daftar ini dan melakukan dua langkah utama berikut untuk setiap nama bucket.
Kosongkan bucket: Untuk bucket saat ini, panggil perintah ossutil untuk mengosongkannya.
Hapus bucket kosong: Setelah memastikan langkah sebelumnya berhasil, panggil perintah ossutil untuk menghapus bucket tersebut.
Error "Izin tidak mencukupi"
Sebelum menghapus bucket, Anda harus membersihkan semua resource di dalamnya. Proses ini memerlukan beberapa izin, seperti izin daftar dan hapus. Untuk mencegah kegagalan penghapusan akibat izin yang kurang, kami menyarankan menghubungi administrator untuk memberikan izin AliyunOSSFullAccess kepada identitas RAM Anda.
Cara menghentikan penagihan OSS
Untuk menghentikan semua biaya Object Storage Service (OSS), Anda harus menghapus semua bucket dalam akun Anda. Anda mungkin tetap dikenai biaya selama masih ada bucket, bahkan jika kosong, atau jika Anda memiliki tagihan yang belum diselesaikan.
Memulihkan bucket yang dihapus
Tidak bisa. Menghapus bucket adalah operasi yang tidak dapat dikembalikan. Selalu backup data Anda sebelum menghapus bucket.