All Products
Search
Document Center

Object Storage Service:Hapus objek

Last Updated:Mar 21, 2026
Peringatan

Objek yang dihapus tidak dapat dipulihkan. Sebelum melanjutkan, tinjau langkah-langkah perlindungan berikut untuk mencegah penghapusan objek secara tidak sengaja.

OSS memungkinkan Anda menghapus satu atau beberapa objek dari bucket secara manual atau otomatis. Halaman ini mencakup kedua pendekatan tersebut beserta semua alat yang didukung.

Penting

Jika bucket Anda telah mengaktifkan OSS-HDFS, jangan menghapus objek dari direktori .dlsdata/. Melakukannya dapat menyebabkan kehilangan data atau mengganggu stabilitas layanan OSS-HDFS.

Sebelum menghapus

Penghapusan permanen tidak dapat dikembalikan. Pertimbangkan langkah-langkah perlindungan berikut sebelum menjalankan operasi penghapusan apa pun:

  • Gunakan aturan lifecycle untuk pembersihan massal. Untuk menghapus objek yang memenuhi kriteria tertentu seperti awalan (prefix) atau tanggal modifikasi terakhir, konfigurasikan aturan lifecycle alih-alih menjalankan perintah hapus secara manual. Lihat Lifecycle.

Metode penghapusan

OSS mendukung dua mode penghapusan:

ModeKapan digunakan
ManualHapus objek tertentu sesuai permintaan menggunakan console, API OSS, SDK, ossbrowser, atau ossutil
OtomatisHapus objek yang sesuai dengan aturan (awalan atau tanggal modifikasi terakhir) menggunakan aturan lifecycle

Satu permintaan hapus dapat menghapus hingga 1.000 objek. Untuk menghapus lebih banyak, kirim beberapa permintaan.

Hapus objek secara manual

OSS console

  1. Masuk ke OSS console.

  2. Di panel navigasi sebelah kiri, klik Buckets, lalu klik bucket target.

  3. Di pohon navigasi sebelah kiri, pilih Object Management > Objects.

Hapus objek OSS

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

  2. Klik OK untuk mengonfirmasi.

Hapus objek HDFS

  1. Di tab HDFS, temukan objek yang ingin Anda hapus dan klik Permanently Delete di kolom Actions.

  2. Klik OK untuk mengonfirmasi.

Tab HDFS tidak mendukung penghapusan massal. Hapus objek HDFS satu per satu.

Gunakan ossbrowser

Anda dapat menggunakan ossbrowser untuk melakukan operasi tingkat objek yang sama seperti yang tersedia di OSS console. Ikuti petunjuk di layar dalam ossbrowser untuk menghapus objek. Untuk informasi selengkapnya, lihat Common operations.

OSS SDKs

Contoh di bawah ini menghapus satu objek. Semua contoh menggunakan variabel lingkungan untuk kredensial — atur OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET sebelum menjalankan.

Untuk bahasa lain atau menghapus beberapa objek sekaligus, lihat Overview.

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 {
        // Tentukan titik akhir untuk wilayah Anda. Contoh: China (Hangzhou).
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Muat kredensial dari variabel lingkungan.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket dan path objek (jangan sertakan nama bucket dalam path).
        String bucketName = "examplebucket";
        String objectName = "exampleobject.txt";
        String region = "cn-hangzhou";

        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)
            .build();

        try {
            // Hapus objek. Untuk menghapus direktori, kosongkan terlebih dahulu.
            ossClient.deleteObject(bucketName, objectName);
        } catch (OSSException oe) {
            System.out.println("Kesalahan OSS: " + oe.getErrorMessage());
            System.out.println("Kode kesalahan: " + oe.getErrorCode());
            System.out.println("ID Permintaan: " + oe.getRequestId());
            System.out.println("Host ID: " + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Kesalahan klien: " + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Python

import argparse
import alibabacloud_oss_v2 as oss

parser = argparse.ArgumentParser(description="delete object sample")
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Titik akhir untuk mengakses OSS.')
parser.add_argument('--key', help='Nama objek.', required=True)

def main():
    args = parser.parse_args()

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

    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    client = oss.Client(cfg)

    result = client.delete_object(oss.DeleteObjectRequest(
        bucket=args.bucket,
        key=args.key,
    ))

    # HTTP 204 menunjukkan penghapusan 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()

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
	objectName string
)

func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
	flag.StringVar(&objectName, "object", "", "Nama objek.")
}

func main() {
	flag.Parse()

	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama objek wajib diisi")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	request := &oss.DeleteObjectRequest{
		Bucket: oss.Ptr(bucketName),
		Key:    oss.Ptr(objectName),
	}

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

	log.Printf("hasil penghapusan objek: %#v\n", result)
}

Node.js

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

const client = new OSS({
  region: 'oss-cn-hangzhou',      // Wilayah tempat bucket berada
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  bucket: 'examplebucket',
});

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

deleteObject();

PHP

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => true],
    "endpoint" => ['help' => 'Titik akhir OSS.', 'required' => false],
    "bucket"   => ['help' => 'Nama bucket.', 'required' => true],
    "key"      => ['help' => 'Nama objek.', 'required' => true],
];

$longopts = array_map(fn($key) => "$key:", array_keys($optsdesc));
$options = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] && empty($options[$key])) {
        echo "Kesalahan: --$key wajib diisi. " . $value['help'] . PHP_EOL;
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];
$key    = $options["key"];

// Muat kredensial dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client  = new Oss\Client($cfg);
$request = new Oss\Models\DeleteObjectRequest(bucket: $bucket, key: $key);
$result  = $client->deleteObject($request);

// HTTP 204 menunjukkan penghapusan berhasil.
printf(
    'kode status: %s' . PHP_EOL .
    'ID permintaan: %s' . PHP_EOL,
    $result->statusCode,
    $result->requestId
);

Browser.js

Untuk menghindari paparan pasangan AccessKey Anda dalam kode browser, gunakan kredensial akses temporary dari Security Token Service (STS). Kredensial temporary mencakup ID AccessKey, rahasia AccessKey, dan token keamanan. Untuk detailnya, lihat Authorize access (Browser.js SDK).
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Dokumen</title>
</head>
<body>
  <button id="delete">Delete</button>
  <!-- Impor SDK OSS. -->
  <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({
      region: 'yourRegion',
      authorizationV4: true,
      // Kredensial temporary dari STS.
      accessKeyId: 'yourAccessKeyId',
      accessKeySecret: 'yourAccessKeySecret',
      stsToken: 'yourSecurityToken',
      bucket: 'examplebucket',
    });

    document.getElementById('delete').addEventListener('click', async () => {
      // Tentukan path lengkap objek, tidak termasuk nama bucket.
      let result = await client.delete('exampledir/exampleobject.txt');
      console.log(result);
    });
  </script>
</body>
</html>

C#

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

var endpoint = "yourEndpoint";
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
var bucketName = "examplebucket";
var objectName = "exampledir/exampleobject.txt";
const string region = "cn-hangzhou";

var conf = new ClientConfiguration();
conf.SignatureVersion = SignatureVersion.V4;

var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);

try
{
    client.DeleteObject(bucketName, objectName);
    Console.WriteLine("Penghapusan objek berhasil");
}
catch (Exception ex)
{
    Console.WriteLine("Penghapusan objek gagal. {0}", ex.Message);
}

Android-Java

// Tentukan nama bucket dan path lengkap objek (jangan sertakan nama bucket).
DeleteObjectRequest delete = new DeleteObjectRequest("examplebucket", "exampledir/exampleobject.txt");

// Hapus secara asinkron.
OSSAsyncTask deleteTask = oss.asyncDeleteObject(delete, new OSSCompletedCallback<DeleteObjectRequest, DeleteObjectResult>() {
    @Override
    public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
        Log.d("asyncDeleteObject", "berhasil!");
    }

    @Override
    public void onFailure(DeleteObjectRequest request, ClientException clientException, ServiceException serviceException) {
        if (clientException != null) {
            // Kesalahan jaringan atau sisi klien.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Kesalahan sisi 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.
delete.bucketName = @"examplebucket";
// Tentukan path lengkap objek, tidak termasuk nama bucket.
delete.objectKey = @"exampleobject.txt";

OSSTask *deleteTask = [client deleteObject:delete];

[deleteTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        // Penghapusan berhasil.
    }
    return nil;
}];
// Hapus komentar untuk memblokir hingga tugas selesai.
// [deleteTask waitUntilFinished];

C++

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

int main(void)
{
    // Atur titik akhir, wilayah, nama bucket, dan path objek.
    std::string Endpoint = "yourEndpoint";
    std::string Region = "yourRegion";
    std::string BucketName = "examplebucket";
    // Untuk menghapus folder, atur ObjectName ke nama folder.
    // Folder harus dikosongkan terlebih dahulu sebelum dihapus.
    std::string ObjectName = "exampleobject.txt";

    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    DeleteObjectRequest request(BucketName, ObjectName);
    auto outcome = client.DeleteObject(request);

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

    ShutdownSdk();
    return 0;
}

C

#include "oss_api.h"
#include "aos_http_io.h"

const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
const char *bucket_name = "examplebucket";
const char *object_name = "exampleobject.jpg";
const char *region = "yourRegion";

void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    aos_str_set(&options->config->endpoint, endpoint);
    // Muat kredensial dari variabel lingkungan.
    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"));
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    options->config->is_cname = 0;
    options->ctl = aos_http_controller_create(options->pool, 0);
}

int main(int argc, char *argv[])
{
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }

    aos_pool_t *pool;
    aos_pool_create(&pool, NULL);

    oss_request_options_t *oss_client_options = oss_request_options_create(pool);
    init_options(oss_client_options);

    aos_string_t bucket;
    aos_string_t object;
    aos_table_t *resp_headers = NULL;
    aos_status_t *resp_status = NULL;

    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);

    resp_status = oss_delete_object(oss_client_options, &bucket, &object, &resp_headers);

    if (aos_status_is_ok(resp_status)) {
        printf("penghapusan objek berhasil\n");
    } else {
        printf("penghapusan objek gagal\n");
    }

    aos_pool_destroy(pool);
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

bucket = client.get_bucket('examplebucket')
# Tentukan path lengkap objek, tidak termasuk nama bucket.
bucket.delete_object('exampledir/exampleobject.txt')

ossutil

Pasang ossutil terlebih dahulu: Install ossutil.

Hapus satu objek:

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

Lihat delete-object untuk semua opsi.

Hapus beberapa objek dalam satu permintaan:

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

Lihat delete-multiple-objects untuk semua opsi.

Referensi API

Alat-alat di atas dibangun di atas API RESTful OSS. Panggil API secara langsung jika kasus penggunaan Anda memerlukan penanganan permintaan khusus. Sertakan signature yang diperlukan dalam setiap permintaan.

OperasiDeskripsi
DeleteObjectHapus satu objek
DeleteMultipleObjectsHapus hingga 1.000 objek dalam satu permintaan