Tous les produits
Search
Centre de documentation

Object Storage Service:Supprimer un bucket pour arrêter la facturation

Dernière mise à jour :Aug 08, 2026

Si vous n’avez plus besoin d’un bucket, supprimez-le pour mettre fin à toute facturation. Les frais Object Storage Service (OSS) s’appliquant aux ressources contenues dans le bucket, vous devez vider toutes les ressources avant de le supprimer. La suppression du bucket est le moyen le plus fiable d’éviter les frais imprévus liés à des ressources facturables oubliées. Notez que les données ne peuvent pas être récupérées après la suppression d’un bucket et qu’un autre utilisateur peut s’approprier son nom une fois celui-ci libéré. Pour cesser complètement d’utiliser OSS, vous devez supprimer tous les buckets de votre compte.

image

Évaluer les risques avant la suppression

  • Risque de perte de données irréversible

    Cette action est irréversible et supprime définitivement tous les objets, leurs versions précédentes ainsi que les parties. Sauvegardez vos données au préalable.

  • Risque d’interruption de service

    La suppression d’un bucket interrompt immédiatement tous les sites web, applications ou services CDN qui en dépendent. Assurez-vous qu’aucun service n’accède activement au bucket.

  • Risque de squatting du nom du bucket

    Après la suppression d’un bucket, son nom entre dans une période de carence de 4 à 8 heures avant d’être libéré. Si vous souhaitez réserver ce nom, nous vous recommandons de vider le bucket plutôt que de le supprimer.

  • Risque de suppression synchrone

    Si vous avez activé la réplication inter-régions ou la réplication intra-région, l’opération de suppression risque également d’effacer les données du bucket de destination. Vérifiez votre configuration.

  • Estimation des coûts et du temps

    Le nettoyage d’un grand nombre d’objets peut engendrer des frais de requêtes API et prendre plusieurs heures, voire davantage, selon le volume de données.

Vérifier les ressources à supprimer

Si vous tentez de supprimer un bucket contenant des ressources telles que des objets, des parties, des points d’accès, des accélérateurs ou des URL d’ingestion RTMP, le système affiche une erreur « The bucket is not empty ». Nous vous recommandons d’utiliser l’assistant de suppression de la console OSS, qui analyse automatiquement et répertorie tous les éléments à nettoyer.

  1. Connectez-vous à la console OSS.

  2. Dans le volet de navigation de gauche, cliquez sur Buckets. Sur la page qui s’affiche, cliquez sur le nom du bucket cible.

  3. Dans le volet de navigation de gauche, faites défiler jusqu’en bas et cliquez sur Delete Bucket.

  4. Sur la page Delete Bucket, cliquez sur Delete Bucket. Vous pouvez ensuite consulter les éléments à nettoyer.

    image

Nettoyer les ressources requises

Pour supprimer un bucket, vous devez d’abord vider toutes ses ressources. Nettoyez les ressources identifiées par le système. Si le bucket contient de nombreux objets, nous vous recommandons d’utiliser une règle de cycle de vie pour automatiser le nettoyage.

Objects

Si la colonne d’état de la ressource objects indique que la fonctionnalité HDFS est activée, vous devez d’abord nettoyer les objets HDFS. Si le versioning est activé, la page Objects affiche à la fois la version actuelle et toutes les versions précédentes. Par conséquent, la sélection et la suppression de tous les objets entraînent la suppression de toutes les versions.

OSS objects

OSS console

  1. Sur la page Delete Bucket, cliquez sur Delete Bucket, repérez la ressource objects, puis cliquez sur Delete.

  2. Sélectionnez tous les objets et cliquez sur Permanently Delete en bas de la page.

  3. Dans la boîte de dialogue qui s’affiche, cliquez sur OK.

ossutil

Supprime tous les objets du bucket, y compris les versions actuelles et précédentes.

ossutil rm oss://examplebucket/ -r

Pour plus d’exemples, consultez la rubrique rm (delete).

HDFS objects

OSS console

  1. Dans la colonne Status de la ressource object, cliquez sur Pause Now pour arrêter la tâche en arrière-plan HDFS.

  2. Cliquez sur Delete pour accéder à l’onglet HDFS.

  3. Cliquez successivement sur Permanently Delete jusqu’à ce que tous les fichiers HDFS soient supprimés.

HDFS shell commands

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

Pour plus d’informations, consultez la rubrique Effectuer des opérations courantes pour le service OSS-HDFS à l’aide des commandes shell HDFS.

Parts

Les parties sont des fragments d’objets générés par des chargements multipart incomplets.

OSS console

  1. Sur la page Delete Bucket, cliquez sur Delete Bucket, repérez l’élément de ressource Parts et cliquez sur Delete.

  2. Sur la page Objects, cliquez sur Part Management.

  3. Dans le panneau Parts, cliquez sur Delete All.

  4. Dans la boîte de dialogue, cliquez sur OK.

ossutil

Supprime toutes les parties issues des chargements multipart incomplets ou annulés.

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

Pour plus d’informations, consultez la rubrique rm (delete).

Access points

  1. Dans le volet de navigation de gauche, cliquez sur Access Point.

  2. Pour chaque point d’accès, cliquez sur Delete Access Point.

  3. Suivez les instructions à l’écran pour supprimer la stratégie d’accès correspondante.

  4. Après avoir supprimé la stratégie d’accès, revenez à la liste des points d’accès. Saisissez le nom du point d’accès comme indiqué, puis cliquez sur OK pour finaliser la suppression.

Accelerators

Notez que la suppression d’un accélérateur efface uniquement ses données mises en cache. Les données stockées dans le bucket OSS ne sont pas affectées.

  1. Dans le volet de navigation de gauche, cliquez sur Bucket Settings > Accelerator.

  2. Dans la liste des accélérateurs OSS, cliquez sur Delete dans la colonne Actions.

  3. Saisissez le nom de l’accélérateur comme indiqué sur la page, puis cliquez sur OK pour finaliser la suppression.

    image

RTMP ingest URLs

Vous ne pouvez pas afficher ni supprimer les LiveChannels d’un bucket via la console OSS ou les outils dédiés. Utilisez plutôt un SDK ou appelez l’API. Pour plus d’informations, consultez la documentation de l’API DeleteLiveChannel. L’extrait de code suivant montre comment supprimer un LiveChannel spécifique.

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;

/**
 * This code provides an example of how to delete a specified LiveChannel.
 * This program demonstrates how to delete a LiveChannel in Alibaba Cloud OSS.
 */

public class Demo {

    public static void main(String[] args) throws Exception {
        // The OSS endpoint. Select an endpoint based on your region. This example uses the endpoint for the China (Hangzhou) region.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run this code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the bucket name. For example, examplebucket.
        String bucketName = "examplebucket";
        // Specify the LiveChannel name.
        String liveChannelName = "yourLiveChannelName";
        // Specify the region where the bucket is located. For example, set Region to cn-hangzhou for China (Hangzhou).
        String region = "cn-hangzhou";

        // Create an OSSClient instance.
        // When the OSSClient instance is no longer needed, call the shutdown method to release resources.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Create a request to delete the LiveChannel.
            LiveChannelGenericRequest request = new LiveChannelGenericRequest(bucketName, liveChannelName);
            // Execute the delete operation.
            ossClient.deleteLiveChannel(request);
        } catch (OSSException oe) {
            // Handle exceptions returned by the OSS server.
            oe.printStackTrace();
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (Exception e) {
            System.out.println("Caught an unexpected exception:");
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                // Release OSSClient resources.
                ossClient.shutdown();
            }
        }
    }
}

Supprimer le bucket

Une fois que vous avez confirmé que toutes les ressources du bucket ont été vidées, vous pouvez supprimer le bucket.

OSS console

  1. Revenez à la page Delete Bucket du bucket cible.

  2. Cliquez sur Delete Bucket, saisissez le nom du bucket comme indiqué, puis cliquez sur OK pour finaliser la suppression.

ossutil

La commande suivante permet de supprimer le bucket nommé examplebucket.

ossutil api delete-bucket --bucket examplebucket

Pour plus d’informations, consultez la rubrique delete-bucket.

OSS SDK

Les sections suivantes fournissent des exemples de code pour supprimer un bucket à l’aide des SDK courants. Pour obtenir des informations sur d’autres SDK, consultez la rubrique SDK 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 {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket.
        String bucketName = "examplebucket";
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Create an OSSClient instance.
        // Call the shutdown method to release associated resources when the OSSClient is no longer in use.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Delete the bucket.
            ossClient.deleteBucket(bucketName);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
} 

Python

import argparse
import alibabacloud_oss_v2 as oss

# Create a command-line argument parser and describe that this script is used to delete a specified OSS bucket.
parser = argparse.ArgumentParser(description="Delete a specified OSS bucket.")

# Add the --region command-line argument, which specifies the region where the bucket is located. This argument is required.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)

# Add the --bucket command-line argument, which specifies the name of the bucket. This argument is required.
parser.add_argument('--bucket', help='The name of the bucket to delete.', required=True)

# Add the --endpoint command-line argument, which specifies the domain name that other services can use to access OSS. This argument is not required.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS.')

def main():
    """
    The main function, which is used to parse command-line arguments and delete the specified bucket.
    """

    args = parser.parse_args()  # Parse command-line arguments.

    # Load credentials from environment variables for identity verification.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Use the default configurations of the SDK and set the credential provider and region.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # If the endpoint parameter is provided, set the endpoint in the configuration.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Create an OSS client based on the configurations.
    client = oss.Client(cfg)

    # Construct a request to delete the specified bucket.
    request = oss.DeleteBucketRequest(bucket=args.bucket)
   
    try:
        # Send the request and obtain the response.
        result = client.delete_bucket(request)

        # Print the status code and request ID of the response.
        print(f'status code: {result.status_code},'
              f' request id: {result.request_id}')
    except oss.exceptions.OperationError as e:
        # Catch and print possible exceptions.
        print(f"Failed to delete bucket: {e}")

if __name__ == "__main__":
    main()  # The script entry point. The main function is called when the file is run.
  

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() {
	// Define command line parameters to specify the region and name of the bucket.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	// Parse command line parameters.
	flag.Parse()

	// Check whether the name of the bucket is specified.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the region is specified.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and specify the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Create a request object for deletion.
	request := &oss.DeleteBucketRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Call the DeleteBucket method.
	result, err := client.DeleteBucket(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to delete bucket %v", err)
	}

	// Display the result.
	log.Printf("delete bucket result:%#v\n", result)
}

PHP

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // Automatically load objects and dependency libraries.

use AlibabaCloud\Oss\V2 as Oss;

// Specify command line parameters.
$optsdesc = [
    "region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Required) Specify the region in which the bucket is located. Example: oss-cn-hangzhou. 
    "endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Optional) Specify the endpoint that can be used by other services to access OSS. 
    "bucket" => ['help' => The name of the bucket, 'required' => True], // (Required) Specify the name of the bucket. 
];
$longopts = \array_map(function ($key) {
    return "$key:"; // Add a colon (:) to the end of each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse the command line parameters.
$options = getopt("", $longopts); 

// Check whether the required parameters are configured.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Specifies that the required parameters are not configured.
        exit(1); 
    }
}

// Obtain the values of the command line parameters.
$region = $options["region"]; // The region in which the bucket is located. 
$bucket = $options["bucket"]; // The name of the bucket. 

// Use environment variables to load the credential information (AccessKey ID and AccessKey secret).
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); 

// Use the default configurations of the SDK.
$cfg=Oss\Config::loadDefault(); // Load the default configurations of the SDK. 
$cfg->setCredentialsProvider($credentialsProvider); // Specify the credential provider. 
$cfg->setRegion($region); // Specify the region. 
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Specify the endpoint if an endpoint is provided. 
}

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

// Create a request to delete the bucket.
$request = new Oss\Models\DeleteBucketRequest($bucket); 

// Use the deleteBucket method to delete the bucket.
$result = $client->deleteBucket($request); 

// Display the returned result.
printf(
    'status code:' . $result-> statusCode. PHP_EOL . // The HTTP response status code. 
    'request id:' . $result->requestId // The unique identifier of the request. 
);

Node.js

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

const client = new OSS({
  // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Set bucket to the name of your bucket.
  bucket: 'yourBucketName',
});

async function deleteBucket() {
  try {
    // Specify the bucket name.
    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)
        {
            // Set endpoint to the Endpoint of the region where your bucket is located. For example, if your bucket is in the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com.
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
            var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
            var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
            // Set bucketName to the name of your bucket. Example: examplebucket.
            var bucketName = "examplebucket314";
            // Set region to the ID of the region where your bucket is located. For example, if your bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
            const string region = "cn-hangzhou";
            // Create a ClientConfiguration instance and modify the default parameters as needed.
            var conf = new ClientConfiguration();
            // Set the signature version to V4.
            conf.SignatureVersion = SignatureVersion.V4;

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

                Console.WriteLine("Delete bucket succeeded");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Delete bucket failed. {0}", ex.Message);
            }
        }
    }
}

Android

DeleteBucketRequest deleteBucketRequest = new DeleteBucketRequest("bucketName");

// Asynchronously delete the bucket.
OSSAsyncTask deleteBucketTask = oss.asyncDeleteBucket(deleteBucketRequest, new OSSCompletedCallback<DeleteBucketRequest, DeleteBucketResult>() {
    @Override
    public void onSuccess(DeleteBucketRequest request, DeleteBucketResult result) {
        Log.d("asyncDeleteBucket", "Success!");
    }
    @Override
    public void onFailure(DeleteBucketRequest request, ClientException clientException, ServiceException serviceException) {
        // The request failed.
        if (clientException != null) {
            // Client exceptions, such as network exceptions.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Service exceptions.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

iOS

OSSDeleteBucketRequest * delete = [OSSDeleteBucketRequest new];
// Specify the bucket name. For example, examplebucket.
delete.bucketName = @"examplebucket";
OSSTask * deleteTask = [client deleteBucket:delete];
[deleteTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"delete bucket success!");
    } else {
        NSLog(@"delete bucket failed, error: %@", task.error);
    }
    return nil;
}];
// Block the current thread until the task is complete.
// [getdeleteTask waitUntilFinished];

C++

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

int main(void)
{
    /*Initialize the OSS account information.*/
    
    /*Set yourEndpoint to the Endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com.*/
    std::string Endpoint = "yourEndpoint";
    
    /*Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.*/
    std::string Region = "yourRegion";
    
    /*Specify the bucket name, for example, examplebucket.*/
    std::string BucketName = "examplebucket";

    /*Initialize network resources.*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /*Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

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

    if (outcome.isSuccess()) {
    std::cout << "Delete bucket successfully." << std::endl;
    } else {
    std::cout << "Failed to delete bucket. Error code: " << outcome.error().Code()
              << ", Message: " << outcome.error().Message()
              << ", RequestId: " << outcome.error().RequestId() << std::endl;
    }

    /*Release network resources.*/
    ShutdownSdk();
    return 0;
}

C

#include "oss_api.h"
#include "aos_http_io.h"
/* Set yourEndpoint to the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";

/* Set the bucket name. Example: examplebucket. */
const char *bucket_name = "examplebucket";
/* Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Use a char* string to initialize the aos_string_t type. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Obtain access credentials from environment variables. Before running this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. */    
    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"));
    // Configure the following two additional parameters.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Specify whether to use a CNAME to access OSS. A value of 0 indicates that a CNAME is not used. */
    options->config->is_cname = 0;
    /* Set network parameters, such as the timeout period. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Call the aos_http_io_initialize method in main() to initialize global resources, such as network and memory resources. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* A memory pool (pool) for memory management, equivalent to apr_pool_t. Its implementation code is in the APR library. */
    aos_pool_t *pool;
    /* Create a new memory pool. The second parameter is NULL, which indicates that the pool does not inherit from other memory pools. */
    aos_pool_create(&pool, NULL);
    /* Create and initialize options. This parameter includes global configuration information, such as the endpoint, access_key_id, access_key_secret, is_cname, and curl. */
    oss_request_options_t *oss_client_options;
    /* Allocate memory for options in the memory pool. */
    oss_client_options = oss_request_options_create(pool);
    /* Initialize the client options oss_client_options. */
    init_options(oss_client_options);
    /* Initialize the parameters. */
    aos_string_t bucket;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    /* Assign the char* data to the aos_string_t bucket. */
    aos_str_set(&bucket, bucket_name);
    /* Delete the bucket. */
    resp_status = oss_delete_bucket (oss_client_options, &bucket, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("delete bucket succeeded\n");
    } else {
        printf("delete bucket failed\n");
    }
    /* Release the memory pool. This releases the memory allocated for resources during the request. */
    aos_pool_destroy(pool);
    /* Release the previously allocated global resources. */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # The China (Hangzhou) region is used as an example. Specify the actual Endpoint for your region.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name. For example, examplebucket.
client.delete_bucket('examplebucket')

Nettoyage automatisé pour les grands volumes

Si un bucket contient un très grand nombre d’objets (des millions ou plus), la configuration d’une règle de cycle de vie constitue la méthode de nettoyage la plus efficace et la plus rentable. Cette approche consiste à définir une règle d’« expiration et suppression » qui ordonne au système de supprimer automatiquement toutes les données du bucket après une période donnée. Si vous ne maîtrisez pas les règles de cycle de vie, nous vous recommandons de les tester d’abord sur un bucket hors production.

Remarque : La suppression d’objets est une action irréversible. Procédez avec prudence.

Versioning disabled

Pour un bucket dont le versioning est désactivé, il suffit de configurer une seule règle de cycle de vie afin de nettoyer rapidement et automatiquement tous les objets et parties (parties non fusionnées issues des chargements multipart).

  1. Connectez-vous à la console OSS, accédez à la page Buckets, puis cliquez sur le nom du bucket cible.

  2. Dans le volet de navigation de gauche, choisissez Content Security > Versioning et confirmez que le versioning est désactivé pour le bucket.

    未开启版本控制

  3. Dans le volet de navigation de gauche, choisissez Data Management > Lifecycle. Configurez une règle de cycle de vie pour supprimer automatiquement tous les objets du bucket 1 jour après leur dernière modification et pour nettoyer automatiquement les parties créées il y a plus d’1 jour.

    screenshot_2025-07-01_17-59-32

Versioning enabled

Lorsque le versioning est activé pour un bucket, celui-ci peut contenir des versions actuelles d’objets, des versions précédentes, des parties et des marqueurs de suppression. Il suffit de configurer une seule règle de cycle de vie pour nettoyer rapidement et automatiquement tous ces éléments.

  1. Connectez-vous à la console OSS, accédez à la page Buckets, puis cliquez sur le nom du bucket cible.

  2. Dans le volet de navigation de gauche, sélectionnez Content Security > Versioning, et confirmez que le versioning est activé pour le bucket.

    screenshot_2025-07-02_10-58-23

  3. Dans le volet de navigation de gauche, sélectionnez Data Management > Lifecycle, et configurez une règle de cycle de vie pour supprimer automatiquement tous les objets (versions actuelles et précédentes) du bucket 1 jour après leur dernière modification, ainsi que pour nettoyer automatiquement les parties créées il y a plus d’1 jour. Cette règle nettoie également les marqueurs de suppression.

    screenshot_2025-07-02_10-58-23

FAQ

Erreur « Bucket not empty »

Cette erreur indique que le bucket contient encore des ressources. Nous vous recommandons d’utiliser la console OSS pour identifier et nettoyer les ressources restantes, comme décrit dans la section Nettoyer les ressources requises. Ensuite, essayez de supprimer à nouveau le bucket.

Recréer un bucket avec le même nom

Après la suppression d’un bucket, son nom entre dans une période de carence de 4 à 8 heures. Pendant cette période, aucun utilisateur ne peut créer un nouveau bucket portant ce nom. Si vous avez besoin d’un bucket immédiatement, utilisez un nouveau nom.

À l’issue de la période de carence, le nom devient disponible pour tous les utilisateurs. Si vous ne recréez pas le bucket rapidement, un autre utilisateur risque de s’approprier ce nom avant vous.

Suppression par lot de plusieurs buckets

Avertissement

La suppression par lot est une opération à haut risque pouvant entraîner une perte permanente de données. Avant de poursuivre, vérifiez attentivement la liste des buckets à supprimer et assurez-vous que toutes les données nécessaires sont sauvegardées.

La console OSS ne prend pas en charge la suppression par lot. Toutefois, vous pouvez écrire un script utilisant ossutil pour effectuer cette opération.

La logique principale est la suivante :

  1. Préparer une liste : Créez un fichier texte ou une liste précise contenant les noms de tous les buckets que vous souhaitez supprimer.

  2. Exécuter en boucle : Votre script doit parcourir cette liste et effectuer les deux étapes clés suivantes pour chaque nom de bucket.

    1. Vider le bucket : Pour le bucket actuel, appelez la commande ossutil pour le vider.

    2. Supprimer le bucket vide : Une fois que vous avez confirmé la réussite de l’étape précédente, appelez la commande ossutil pour supprimer le bucket.

Erreur « Insufficient permissions »

Avant de supprimer un bucket, vous devez vider toutes les ressources qu’il contient. Ce processus nécessite plusieurs autorisations, telles que les autorisations de liste et de suppression. Pour éviter les échecs de suppression dus à des autorisations manquantes, nous vous recommandons de contacter un administrateur afin d’accorder l’autorisation AliyunOSSFullAccess à votre identité RAM.

Comment arrêter la facturation OSS

Pour mettre fin à tous les frais Object Storage Service (OSS), vous devez supprimer tous les buckets de votre compte. Des frais peuvent continuer à s’appliquer tant qu’un bucket existe, même vide, ou si vous avez des factures impayées.

Récupérer un bucket supprimé

Non. La suppression d’un bucket est une opération irréversible. Sauvegardez toujours vos données avant de supprimer un bucket.