All Products
Search
Document Center

Object Storage Service:Hapus file

Last Updated:Apr 01, 2026

Anda dapat menghapus objek OSS atau HDFS dari bucket dengan beberapa cara. Objek yang telah dihapus tidak dapat dipulihkan. Berhati-hatilah saat menghapus objek.

Peringatan
  • Setelah objek dihapus, objek tersebut tidak dapat dipulihkan. Berhati-hatilah saat menghapus objek.

  • Untuk menjaga stabilitas OSS-HDFS dan mencegah kehilangan data, jangan menghapus objek dari direktori .dlsdata/.

  • Jika ObjectWorm atau BucketWorm diaktifkan untuk suatu bucket, objek dalam periode retensi tidak dapat dihapus. Upaya penghapusan akan mengembalikan error dari OSS. Anda hanya dapat menghapus objek tersebut setelah periode retensinya berakhir.

Hapus satu objek

Konsol OSS

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket target.

  3. Di panel navigasi kiri, pilih Object Management > Objects.

  4. Hapus objek OSS atau objek HDFS.

    Objek OSS

    1. Pada tab Objects, pilih objek, lalu klik Permanently Delete di bawah daftar objek.

    2. Pada kotak dialog, klik OK.

    Objek HDFS

    1. Pada tab HDFS, klik Permanently Delete di kolom Actions pada objek yang ingin dihapus.

      Catatan

      Anda tidak dapat menghapus file pada tab HDFS secara batch. Anda dapat menghapus semua file pada tab HDFS dengan menghapusnya satu per satu secara manual.

    2. Pada kotak dialog, klik OK.

ossutil

Sebelum memulai, instal ossutil.

Perintah berikut menghapus objek bernama exampleobject dari bucket examplebucket.

ossutil api delete-object --bucket examplebucket --key exampleobject

Untuk informasi lebih lanjut tentang perintah ini, lihat delete-object.

ossbrowser

ossbrowser mendukung operasi tingkat objek yang mirip dengan Konsol OSS. Ikuti petunjuk di layar untuk menghapus objek. Untuk informasi lebih lanjut tentang cara menggunakan ossbrowser, lihat Operasi umum di ossbrowser 2.0.

OSS SDK

Contoh berikut menunjukkan cara menghapus satu objek menggunakan SDK populer. Untuk contoh yang menggunakan 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 {
        // Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint 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 path lengkap objek. Jangan sertakan nama bucket dalam path lengkap objek.
        String objectName = "exampleobject.txt";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya 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 objek atau direktori. Sebelum menghapus direktori, pastikan direktori tersebut tidak berisi objek.
            ossClient.deleteObject(bucketName, objectName);
        } 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("Host ID:" + 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();
            }
        }
    }
}            

Node.js

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

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region menjadi oss-cn-hangzhou.
  region: 'oss-cn-hangzhou',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket.
  bucket: 'examplebucket',
});

async function deleteObject() {
  try {
    // Tentukan path lengkap objek. Path lengkap tidak boleh berisi nama bucket.
    const result = await client.delete('exampleobject.txt');
    console.log(result);
  } catch (error) {
    console.log(error);
  }
}

deleteObject();

Browser.js

Catatan

SDK Browser.js biasanya digunakan di lingkungan browser. Untuk mencegah Pasangan AccessKey (ID AccessKey dan rahasia AccessKey) Anda terpapar, kami sangat menyarankan agar Anda menggunakan kredensial sementara untuk melakukan operasi OSS. Kredensial sementara mencakup Pasangan AccessKey sementara dan token keamanan. Untuk informasi lebih lanjut tentang cara mendapatkan kredensial sementara, lihat Otorisasi akses (Browser.js SDK).

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Document</title>
</head>

<body>
  <button id="delete">Delete</button> 
  <!--Impor file SDK.-->
  <script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
  <script type="text/javascript">
    const client = new OSS({
      // Atur region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi oss-cn-hangzhou.
      region: 'yourRegion',
      authorizationV4: true,
      // Pasangan AccessKey sementara (ID AccessKey dan rahasia AccessKey) yang diperoleh dari STS.
      accessKeyId: 'yourAccessKeyId',
      accessKeySecret: 'yourAccessKeySecret',
      // Token keamanan (SecurityToken) yang diperoleh dari STS.
      stsToken: 'yourSecurityToken',
      // Tentukan nama bucket. Misalnya, examplebucket.
      bucket: "examplebucket",
    });

    const deleteSingle = document.getElementById("delete");   

    // Hapus satu file.
    deleteSingle.addEventListener("click", async () => {
      // Tentukan nama objek yang akan dihapus. Nama objek harus berupa path lengkap objek, tidak termasuk nama bucket. Misalnya, exampledir/exampleobject.txt.
      let result = await client.delete('exampledir/exampleobject.txt');
      console.log(result);
    });

  </script>
</body>

</html>

C#

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

// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt.
var objectName = "exampledir/exampleobject.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instance ClientConfiguration dan ubah parameter default sesuai kebutuhan Anda.
var conf = new ClientConfiguration();

// Gunakan algoritma signature V4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instance OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Hapus objek.
    client.DeleteObject(bucketName, objectName);
    Console.WriteLine("Hapus objek berhasil");
}
catch (Exception ex)
{
    Console.WriteLine("Hapus objek gagal. {0}", ex.Message);
}

Android Java

// Buat permintaan penghapusan.
// Tentukan nama bucket (misalnya, examplebucket) dan path lengkap objek (misalnya, exampledir/exampleobject.txt). Path lengkap objek tidak boleh berisi nama bucket.
DeleteObjectRequest delete = new DeleteObjectRequest("examplebucket", "exampledir/exampleobject.txt");
// Hapus objek secara asinkron.
OSSAsyncTask deleteTask = oss.asyncDeleteObject(delete, new OSSCompletedCallback<DeleteObjectRequest, DeleteObjectResult>() {
    @Override
    public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
        Log.d("asyncDeleteObject", "success!");
    }

    @Override
    public void onFailure(DeleteObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // Terjadi kesalahan permintaan.
        if (clientExcepion != null) {
            // Terjadi exception klien, seperti exception jaringan.
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // Terjadi exception server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Objective-C

OSSDeleteObjectRequest * delete = [OSSDeleteObjectRequest new];
// Tentukan nama bucket. Contoh: examplebucket.
delete.bucketName = @"examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampleobject.txt.
delete.objectKey = @"exampleobject.txt";

OSSTask * deleteTask = [client deleteObject:delete];

[deleteTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        // ...
    }
    return nil;
}];
// Implementasikan pemblokiran sinkron untuk menunggu tugas selesai.
// [deleteTask 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 China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Misalnya, examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan path lengkap objek. Misalnya, exampleobject.txt. Path lengkap tidak boleh berisi nama bucket. */
    /* Untuk menghapus folder, atur ObjectName menjadi nama folder. Jika folder tidak kosong, Anda harus menghapus semua objek dalam folder sebelum menghapus folder tersebut. */
    std::string ObjectName = "exampleobject.txt";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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);
   
    DeleteObjectRequest request(BucketName, ObjectName);

    /* Hapus file. */
    auto outcome = client.DeleteObject(request);

    if (!outcome.isSuccess()) {
        /* Tangani exception. */
        std::cout << "DeleteObject gagal" <<
        ",kode:" << outcome.error().Code() <<
        ",pesan:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

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

C

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/* Tentukan nama bucket. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan path lengkap file yang akan dihapus. Path lengkap tidak boleh menyertakan nama bucket. */
const char *object_name = "exampleobject.jpg";
/* Atur yourRegion ke ID Wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur ID Wilayah menjadi cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Inisialisasi tipe aos_string_t dengan string char*. */
    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 berikut.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah nama kanonik (CNAME) digunakan. Nilai 0 menunjukkan bahwa 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 awal program untuk menginisialisasi sumber daya 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 library apr. */
    aos_pool_t *pool;
    /* Buat pool memori. Parameter kedua adalah NULL, yang menunjukkan bahwa pool baru 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 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_string_t object;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    /* Tetapkan data tipe char* ke tipe bucket aos_string_t. */
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    /* Hapus file. */
    resp_status = oss_delete_object(oss_client_options, &bucket, &object, &resp_headers);
    /* Periksa apakah file berhasil dihapus. */
    if (aos_status_is_ok(resp_status)) {
        printf("hapus objek berhasil\n");
    } else {
        printf("hapus objek gagal\n");
    }
    /* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # Atur Endpoint ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
  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.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Atur nama bucket. Misalnya, examplebucket.
bucket = client.get_bucket('examplebucket')
# Atur path lengkap objek. Misalnya, exampledir/exampleobject.txt. Path lengkap tidak boleh berisi nama bucket.
bucket.delete_object('exampledir/exampleobject.txt')            

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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
	objectName string // Nama objek.
)

// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
	flag.StringVar(&objectName, "object", "", "Nama objek.")
}

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 diisi")
	}

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

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

	// 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 permintaan untuk menghapus objek.
	request := &oss.DeleteObjectRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		Key:    oss.Ptr(objectName), // Nama objek.
	}

	// Jalankan permintaan dan proses hasilnya.
	result, err := client.DeleteObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus objek %v", err)
	}

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

Python

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh hapus objek")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib diisi.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib diisi.
parser.add_argument('--bucket', help='Nama bucket.', 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')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib diisi.
parser.add_argument('--key', help='Nama objek.', required=True)

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

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

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # Atur wilayah dalam konfigurasi.
    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 menggunakan informasi yang telah dikonfigurasi.
    client = oss.Client(cfg)

    # Jalankan permintaan untuk menghapus objek. Tentukan nama bucket dan nama objek.
    result = client.delete_object(oss.DeleteObjectRequest(
        bucket=args.bucket,
        key=args.key,
    ))

    # Cetak kode status, ID permintaan, ID versi, dan penanda hapus permintaan untuk memeriksa apakah permintaan berhasil.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID versi: {result.version_id},'
          f' penanda hapus: {result.delete_marker},'
    )

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

PHP

<?php

// Impor file autoload untuk memuat library dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan dan jelaskan parameter baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
    "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.
    "key" => ['help' => 'Nama objek', 'required' => True], // (Wajib) Tentukan nama objek.
];

// Konversi deskripsi menjadi daftar opsi panjang yang dibutuhkan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Uraikan argumen 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']; // Dapatkan informasi bantuan untuk parameter.
        echo "Error: argumen berikut wajib diisi: --$key, $help" . PHP_EOL;
        exit(1); // Keluar dari program jika parameter wajib tidak tersedia.
    }
}

// Tetapkan nilai yang diuraikan dari parameter baris perintah ke variabel yang sesuai.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.

// Muat kredensial akses dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk mengambil ID AccessKey dan rahasia AccessKey dari variabel lingkungan.   
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

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

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

// Buat objek DeleteObjectRequest untuk menghapus objek yang ditentukan.
$request = new Oss\Models\DeleteObjectRequest(bucket: $bucket, key: $key);

// Hapus objek.
$result = $client->deleteObject($request);

// Tampilkan hasil operasi penghapusan objek.
// Tampilkan kode status HTTP dan ID permintaan untuk memeriksa apakah permintaan berhasil.
printf(
    'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 204 menunjukkan bahwa penghapusan berhasil.
    'ID permintaan:' . $result-> requestId. PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);

API

Untuk kebutuhan lanjutan, Anda dapat memanggil operasi REST API secara langsung. Hal ini mengharuskan Anda menulis kode perhitungan signature secara manual. Untuk informasi lebih lanjut tentang operasi API untuk menghapus satu objek, lihat DeleteObject.

Hapus objek secara batch

Satu permintaan dapat menghapus hingga 1.000 objek. Untuk menghapus lebih banyak objek, Anda dapat mengirim beberapa permintaan.

Konsol OSS

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket target.

  3. Di panel navigasi kiri, pilih Object Management > Objects.

  4. Hapus objek OSS atau objek HDFS.

    Objek OSS

    1. Pada tab OSS Object, pilih beberapa objek, lalu klik Permanently Delete di bawah daftar objek.

    2. Pada kotak dialog, klik OK.

    Objek HDFS

    1. Pada tab HDFS, klik Permanently Delete di kolom Actions pada objek yang ingin dihapus.

      Catatan

      File pada tab HDFS tidak mendukung penghapusan batch. Anda dapat menghapus semua file pada tab HDFS dengan menghapusnya satu per satu secara manual.

    2. Pada kotak dialog, klik OK.

ossutil

Sebelum memulai, instal ossutil.

Perintah berikut menghapus beberapa objek dari bucket examplebucket.

ossutil api delete-multiple-objects --bucket examplebucket --delete "{\"Quiet\":\"false\",\"Object\":[{\"Key\":\"multipart.data\"},{\"Key\":\"test.jpg\"}]}"

Untuk informasi lebih lanjut tentang perintah ini, lihat delete-multiple-objects.

ossbrowser

ossbrowser mendukung operasi tingkat objek yang mirip dengan Konsol OSS. Ikuti petunjuk di layar untuk menghapus objek. Untuk informasi lebih lanjut tentang cara menggunakan ossbrowser, lihat Operasi umum di ossbrowser 2.0.

OSS SDK

Contoh berikut menunjukkan cara menghapus beberapa objek menggunakan SDK populer. Untuk contoh yang menggunakan SDK lainnya, lihat Ikhtisar SDK.

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.DeleteObjectsRequest;
import com.aliyun.oss.model.DeleteObjectsResult;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint 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), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya 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 objek.
            // Tentukan path lengkap beberapa objek yang ingin dihapus. Jangan sertakan nama bucket dalam path lengkap objek.
            List<String> keys = new ArrayList<String>();
            keys.add("exampleobjecta.txt");
            keys.add("testfolder/sampleobject.txt");
            keys.add("exampleobjectb.txt");

            DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keys).withEncodingType("url"));
            List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();
            try {
                for(String obj : deletedObjects) {
                    String deleteObj =  URLDecoder.decode(obj, "UTF-8");
                    System.out.println(deleteObj);
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        } 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("Host ID:" + 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();
            }
        }
    }
}         

Node.js

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

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region menjadi oss-cn-hangzhou.
  region: 'oss-cn-hangzhou',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket.
  bucket: 'examplebucket',
});

async function deleteMulti() {
  try {
    // Tentukan path lengkap objek yang akan dihapus dan atur mode respons menjadi verbose. Path lengkap tidak boleh berisi nama bucket.
    // let result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt']);
    // console.log(result);
    // Tentukan path lengkap objek yang akan dihapus dan atur mode respons menjadi quiet. Path lengkap tidak boleh berisi nama bucket.
    const result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt'], {quiet: true});
    console.log(result);
  } catch (error) {
    console.log(error);
  }
}

deleteMulti();

Browser.js

Catatan

SDK Browser.js biasanya digunakan di lingkungan browser. Untuk mencegah Pasangan AccessKey (ID AccessKey dan rahasia AccessKey) Anda terpapar, kami sangat menyarankan agar Anda menggunakan kredensial sementara untuk melakukan operasi OSS. Kredensial sementara mencakup Pasangan AccessKey sementara dan token keamanan. Untuk informasi lebih lanjut tentang cara mendapatkan kredensial sementara, lihat Otorisasi akses (Browser.js SDK).

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <button id="deleteAll">Delete multiple files</button>
    <!--Impor file SDK.-->
    <script
      type="text/javascript"
      src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.16.0.min.js"
    ></script>
    <script type="text/javascript">
      const client = new OSS({
        // Atur region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi oss-cn-hangzhou.
        region: 'yourRegion',
        authorizationV4: true,
        // Pasangan AccessKey sementara (ID AccessKey dan rahasia AccessKey) yang diperoleh dari STS.
        accessKeyId: 'yourAccessKeyId',
        accessKeySecret: 'yourAccessKeySecret',
        // Token keamanan (SecurityToken) yang diperoleh dari STS.
        stsToken: 'yourSecurityToken',
        // Tentukan nama bucket. Misalnya, examplebucket.
        bucket: "examplebucket",
      });

      const deleteAll = document.getElementById("deleteAll");

      // Hapus beberapa file.
      deleteAll.addEventListener("click", async () => {
        // Tentukan nama objek yang akan dihapus. Nama objek harus berupa path lengkap objek, tidak termasuk nama bucket.
        let result = await client.deleteMulti([
          "example.txt",
          "exampleobject.txt",
          "newexampleobject.txt",
        ]);
        console.log(result);

        result = await client.deleteMulti(
          ["example.txt", "exampleobject.txt", "newexampleobject.txt"],
          {
            // Gunakan parameter quiet untuk menentukan apakah akan mengembalikan daftar semua file yang dihapus. Jika quiet diatur ke true, OSS tidak mengembalikan body pesan. Jika quiet diatur ke false, OSS mengembalikan daftar semua file yang dihapus.
            quiet: true,
          }
        );
      });
    </script>
  </body>
</html>

C#

using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS untuk menyederhanakan penggunaan selanjutnya.

var region = "cn-hangzhou";  // Wajib. Atur wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
var endpoint = null as string;  // Opsional. Tentukan nama domain yang digunakan untuk mengakses layanan OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
var bucket = "your bucket name";  // Wajib. Nama bucket.
var keys = new List<String>  // Wajib. Objek tujuan yang akan dihapus.
{
    "your object key1",
    "your object key2",
    "your object key3"
};

// Muat konfigurasi default SDK OSS. Konfigurasi secara otomatis membaca informasi kredensial (seperti AccessKey) dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur penggunaan variabel lingkungan untuk mendapatkan kredensial guna verifikasi identitas (format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket dalam konfigurasi.
cfg.Region = region;   
// Jika endpoint ditentukan, ini akan menggantikan endpoint default.
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Buat instance klien OSS menggunakan informasi konfigurasi.
using var client = new OSS.Client(cfg);

// Buat koleksi objek yang akan dihapus.
var objects = new List<OSS.Models.DeleteObject>();
// Lakukan iterasi terhadap daftar kunci objek yang akan dihapus (lewati jika keys bernilai null).
foreach (var item in keys ?? [])
{
    objects.Add(new OSS.Models.DeleteObject()
    {
        Key = item,
    });
}

// Panggil metode DeleteMultipleObjectsAsync untuk menjalankan permintaan penghapusan batch.
var result = await client.DeleteMultipleObjectsAsync(new OSS.Models.DeleteMultipleObjectsRequest()
{
    Bucket = bucket,
    Objects = objects
});

// Cetak informasi hasil.
Console.WriteLine("DeleteMultipleObjects selesai");  // Pesan yang menunjukkan bahwa operasi telah selesai.
Console.WriteLine($"StatusCode: {result.StatusCode}");  // Kode status HTTP.
Console.WriteLine($"RequestId: {result.RequestId}");  // ID permintaan, yang digunakan untuk troubleshooting di Alibaba Cloud.
Console.WriteLine("Header Respons:");  // Informasi header respons.
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Lakukan iterasi dan cetak semua header respons.
Console.WriteLine("Kunci yang akan dihapus:");  
keys?.ToList().ForEach(x => Console.WriteLine(x));  // Cetak daftar objek yang dihapus.

Android Java

// Tentukan path lengkap objek yang ingin dihapus. Path lengkap objek tidak boleh berisi nama bucket.
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");

// Atur mode ke mode dasar untuk hanya mengembalikan daftar file yang gagal dihapus.
DeleteMultipleObjectRequest request = new DeleteMultipleObjectRequest("examplebucket", objectKeys, true);

oss.asyncDeleteMultipleObject(request, new OSSCompletedCallback<DeleteMultipleObjectRequest, DeleteMultipleObjectResult>() {
    @Override
    public void onSuccess(DeleteMultipleObjectRequest request, DeleteMultipleObjectResult result) {
        Log.i("DeleteMultipleObject", "success");
    }

    @Override
    public void onFailure(DeleteMultipleObjectRequest request, ClientException clientException, ServiceException serviceException) {
        // Terjadi kesalahan permintaan.
        if (clientException != null) {
            // Terjadi exception klien, seperti exception jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Terjadi exception server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Objective-C

// Tentukan path lengkap objek yang ingin dihapus. Path lengkap objek tidak boleh berisi nama bucket.
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");

// Atur mode ke mode dasar untuk hanya mengembalikan daftar file yang gagal dihapus.
DeleteMultipleObjectRequest request = new DeleteMultipleObjectRequest("examplebucket", objectKeys, true);

oss.asyncDeleteMultipleObject(request, new OSSCompletedCallback<DeleteMultipleObjectRequest, DeleteMultipleObjectResult>() {
    @Override
    public void onSuccess(DeleteMultipleObjectRequest request, DeleteMultipleObjectResult result) {
        Log.i("DeleteMultipleObject", "success");
    }

    @Override
    public void onFailure(DeleteMultipleObjectRequest request, ClientException clientException, ServiceException serviceException) {
        // Terjadi kesalahan permintaan.
        if (clientException != null) {
            // Terjadi exception klien, seperti exception jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Terjadi exception server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

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 China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Misalnya, examplebucket. */
    std::string BucketName = "examplebucket";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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);

    DeleteObjectsRequest request(BucketName);
    /* Tambahkan path lengkap objek yang akan dihapus. */
    request.addKey("yourObjectName1");
    request.addKey("yourObjectName2");
  
    /* Hapus file. */
    auto outcome = client.DeleteObjects(request);

    if (!outcome.isSuccess()) {
        /* Tangani exception. */
        std::cout << "DeleteObjects gagal" <<
        ",kode:" << outcome.error().Code() <<
        ",pesan:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

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

C

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/* Tentukan nama bucket. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan path lengkap file yang akan dihapus. Path lengkap tidak boleh menyertakan nama bucket. */
const char *object_name1 = "exampleobject1.jpg";
const char *object_name2 = "testobject2.png";
/* Atur yourRegion ke ID Wilayah bucket. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur ID Wilayah menjadi cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Inisialisasi tipe aos_string_t dengan string char*. */
    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 berikut.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah CNAME digunakan. Nilai 0 menunjukkan bahwa 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 awal program untuk menginisialisasi sumber daya 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 library apr. */
    aos_pool_t *pool;
    /* Buat pool memori. Parameter kedua adalah NULL, yang menunjukkan bahwa pool baru 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 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_string_t object1;
    aos_string_t object2;
    int is_quiet = 1;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object1, object_name1);
    aos_str_set(&object2, object_name2);
    /* Bangun daftar file yang akan dihapus. */
    aos_list_t object_list;
    aos_list_t deleted_object_list;
    oss_object_key_t *content1;
    oss_object_key_t *content2;
    aos_list_init(&object_list);
    aos_list_init(&deleted_object_list);
    content1 = oss_create_oss_object_key(pool);
    aos_str_set(&content1->key, object_name1);
    aos_list_add_tail(&content1->node, &object_list);
    content2 = oss_create_oss_object_key(pool);
    aos_str_set(&content2->key, object_name2);
    aos_list_add_tail(&content2->node, &object_list);
    /* Hapus file dalam daftar. `is_quiet` menentukan apakah akan mengembalikan hasil penghapusan. */
    resp_status = oss_delete_objects(oss_client_options, &bucket, &object_list, is_quiet, &resp_headers, &deleted_object_list);
    if (aos_status_is_ok(resp_status)) {
        printf("hapus objek berhasil\n");
    } else {
        printf("hapus objek gagal\n");
    }
    /* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # Atur Endpoint ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
  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.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Atur nama bucket. Misalnya, examplebucket.
bucket = client.get_bucket('examplebucket')
# Atur path lengkap objek yang akan dihapus. Path lengkap tidak boleh berisi nama bucket.
objs = ['my-object-1', 'my-object-2']
result = bucket.batch_delete_objects(objs)
# Secara default, objek yang berhasil dihapus akan dikembalikan.
puts result #['my-object-1', 'my-object-2']

objs = ['my-object-3', 'my-object-4']
result = bucket.batch_delete_objects(objs, :quiet => true)
# Hasil penghapusan tidak dikembalikan.
puts result #[]            

Go

package main

import (
	"context"
	"flag"
	"log"
	"strings"

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

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
	objects    string // Daftar nama objek (dipisahkan dengan koma).
)

// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
	flag.StringVar(&objects, "objects", "", "Nama objek (dipisahkan koma).")
}

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 diisi")
	}

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

	// Periksa apakah daftar nama objek telah disediakan.
	if len(objects) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama objek wajib diisi")
	}

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

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

	// Konversi daftar nama objek menjadi slice.
	var DeleteObjects []oss.DeleteObject
	objectSlice := strings.Split(objects, ",")
	for _, name := range objectSlice {
		DeleteObjects = append(DeleteObjects, oss.DeleteObject{Key: oss.Ptr(strings.TrimSpace(name))})
	}

	// Buat permintaan untuk menghapus beberapa objek.
	request := &oss.DeleteMultipleObjectsRequest{
		Bucket:  oss.Ptr(bucketName), // Nama bucket.
		Objects: DeleteObjects,       // Daftar objek yang akan dihapus.
	}

	// Jalankan permintaan dan proses hasilnya.
	result, err := client.DeleteMultipleObjects(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus beberapa objek %v", err)
	}

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

Python

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh hapus beberapa objek")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib diisi.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib diisi.
parser.add_argument('--bucket', help='Nama bucket.', 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')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib diisi.
parser.add_argument('--key', help='Nama objek.', required=True)
# Catatan: Jika Anda ingin menghapus beberapa objek, tambahkan argumen baris perintah --key2, yang menentukan nama objek.
parser.add_argument('--key2', help='Nama objek.', required=True)

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

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

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # Atur wilayah dalam konfigurasi.
    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 menggunakan informasi yang telah dikonfigurasi.
    client = oss.Client(cfg)

    # Definisikan daftar objek yang akan dihapus.
    # Catatan: Jika Anda ingin menghapus beberapa objek, perluas daftar objek dalam format berikut.
    objects = [oss.DeleteObject(key=args.key), oss.DeleteObject(key=args.key2)]


    # Jalankan permintaan untuk menghapus beberapa objek. Tentukan nama bucket, jenis encoding, dan daftar objek.
    result = client.delete_multiple_objects(oss.DeleteMultipleObjectsRequest(
        bucket=args.bucket,
        encoding_type='url',
        objects=objects,
    ))

    # Cetak kode status, ID permintaan, dan informasi tentang objek yang dihapus untuk memeriksa apakah permintaan berhasil.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' kunci: {result.deleted_objects[0].key},'
          f' ID versi: {result.deleted_objects[0].version_id},'
          f' penanda hapus: {result.deleted_objects[0].delete_marker},'
          f' ID versi penanda hapus: {result.deleted_objects[0].delete_marker_version_id},'
          f' jenis encoding: {result.encoding_type},'
    )


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

API

Untuk kebutuhan lanjutan, Anda dapat memanggil operasi REST API secara langsung. Hal ini mengharuskan Anda menulis kode perhitungan signature secara manual. Untuk informasi lebih lanjut tentang operasi API untuk menghapus beberapa objek, lihat DeleteMultipleObjects.

Hapus objek kedaluwarsa secara otomatis

Menghapus jutaan, atau bahkan ratusan juta objek dari bucket secara manual memakan waktu dan rentan terhadap kesalahan. Anda dapat menggunakan aturan lifecycle untuk menghapus objek secara otomatis dan berkala berdasarkan kondisi seperti waktu atau awalan objek. Hal ini mengurangi biaya operasional.