すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:コスト削減のためのバケット削除

最終更新日:Dec 06, 2025

バケットが不要になった場合は、課金を停止するために削除します。Object Storage Service (OSS) の料金は、主にバケット内のリソースに対して発生します。バケットを削除する前に、そのすべてのリソースをクリアする必要があります。バケットを削除することは、課金対象のリソースを見逃して予期せぬ料金が発生するのを防ぐための最も確実な方法です。削除されたデータは復元できないことにご注意ください。また、バケット名は他のユーザーが登録できるようになります。OSS サービスを完全に利用停止するには、アカウント配下のすべてのバケットを削除する必要があります。

image

削除前のリスク評価

  • データが回復不能になるリスク

    バケットを削除すると、旧バージョンやパートを含むすべてのファイルが完全に削除されます。この操作は元に戻せません。事前にデータをバックアップしてください。

  • ビジネス中断のリスク

    バケットを削除すると、それに依存するウェブサイト、アプリ、または CDN サービスが直ちに中断されます。バケットにアクセスしているサービスがないことを確認してください。

  • バケット名の占有リスク

    バケットが削除されると、その名前はリリースされるまでに 4〜8 時間のクールダウン期間に入ります。名前を予約するには、バケットを削除するのではなく、ファイルを空にしてください。

  • 同期削除のリスク

    クロスリージョンレプリケーションまたは同一リージョンレプリケーションが有効になっている場合、削除操作によって宛先バケットのデータもクリアされる可能性があります。構成を確認してください。

  • コストと時間の見積もり

    多数のファイルをクリーンアップすると、API リクエスト料金が発生し、ファイル数によっては数時間以上かかる場合があります。

削除が必要なリソースの確認

[ファイル][パート][アクセスポイント][アクセラレータ]、または [RTMP アップストリーミング URL] などのリソースを含むバケットを削除しようとすると、バケットが空ではないことを示すエラーメッセージが表示されます。OSS コンソールの削除ウィザードを使用してください。ウィザードは、削除が必要なすべての項目を自動的にスキャンして一覧表示します。

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションウィンドウで、一番下までスクロールし、バケットの削除 をクリックします。

  4. バケットの削除 ページで、[バケットの削除] ボタンをクリックします。その後、クリアする必要がある項目を表示できます。

    image

削除が必要なリソースのクリーンアップ

バケットを削除する前に、その中のすべてのリソースをクリアする必要があります。システムによって検出された残りのリソースをクリーンアップします。ファイルが多数ある場合は、ライフサイクルルールを使用して自動的に処理することを推奨します。

ファイルのクリーンアップ

[ファイル] リソースのステータス列に HDFS 機能が有効になっていることが示されている場合は、まず HDFS ファイルを削除する必要があります。バージョン管理が有効になっている場合、OSS ファイルリストには現在のバージョンと旧バージョンの両方が表示されます。したがって、すべてのファイルを選択して削除すると、それらのすべてのバージョンも削除されます。

OSS オブジェクト

OSS コンソールの使用

  1. バケットの削除 ページで、[バケットの削除] をクリックします。次に、[オブジェクト] リソースを見つけ、[削除] をクリックします。

  2. すべてのオブジェクトを選択し、下部にある 完全に削除 をクリックします。

  3. 表示されるダイアログボックスで OK をクリックします。

ossutil の使用

現在のバージョンと旧バージョンを含む、バケット内のすべてのファイルを削除します。

ossutil rm oss://examplebucket/ -r

詳細については、「rm (削除)」をご参照ください。

HDFS ファイル

OSS コンソールの使用

  1. [オブジェクト] リソースについて、ステータス列の [今すぐ一時停止] をクリックして HDFS バックグラウンドタスクを一時停止します。

  2. [削除] をクリックして [HDFS] タブに移動します。

  3. 各 HDFS ファイルに対して [完全削除] をクリックします。

HDFS Shell コマンドの使用

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

詳細については、「HDFS Shell コマンドを使用した OSS-HDFS サービスの一般的な操作の実行」をご参照ください。

パートのクリーンアップ

パートは、マルチパートアップロード機能によって生成された、マージされていないファイルフラグメントです。

OSS コンソールの使用

  1. バケットの削除 ページで、[バケットの削除] をクリックし、次に [パート] リソースの [削除] をクリックします。

  2. [オブジェクト] ページで、[パート] タブをクリックします。

  3. [パート] パネルで、[すべて削除] をクリックします。

  4. ダイアログボックスで [OK] をクリックします。

ossutil の使用

未完了またはキャンセルされたマルチパートアップロードからすべてのパートを削除します。

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

詳細については、「rm (削除)」をご参照ください。

アクセスポイントの削除

  1. 左側のナビゲーションウィンドウで、[アクセスポイント] をクリックします。

  2. 各アクセスポイントについて、[アクセスポイントの削除] をクリックします。

  3. 指示に従って、対応するアクセスポリシーを削除します。

  4. アクセスポリシーを削除した後、アクセスポイントリストに戻ります。プロンプトに従ってアクセスポイント名を入力し、[OK] をクリックして削除を完了します。

アクセラレータの削除

アクセラレータを削除すると、アクセラレータにキャッシュされたデータのみがクリアされることに注意してください。OSS バケット内のデータは影響を受けません。

  1. 左側のナビゲーションウィンドウで、[バケット設定] > [アクセラレータ] をクリックします。

  2. OSS アクセラレータリストで、[アクション] 列の [削除] をクリックします。

  3. アクセラレータ名を入力し、[OK] をクリックして削除を確認します。

    image

RTMP アップストリーミング URL のクリーンアップ

ツールやコンソールを使用してバケットの LiveChannel を表示または削除することはできません。これらの操作は、API または SDK を呼び出すことで実行できます。詳細については、「DeleteLiveChannel API ドキュメント」をご参照ください。次の Java コードは、指定された LiveChannel を削除する方法の例を示しています。

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;

/**
 * このコードは、指定された LiveChannel を削除する方法の例を示します。
 * このプログラムは、Alibaba Cloud OSS で LiveChannel を削除する方法を示します。
 */

public class Demo {

    public static void main(String[] args) throws Exception {
        // OSS エンドポイント。リージョンに基づいてエンドポイントを選択します。この例では、中国 (杭州) リージョンのエンドポイントを使用します。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケット名を指定します。例:examplebucket。
        String bucketName = "examplebucket";
        // LiveChannel 名を指定します。
        String liveChannelName = "yourLiveChannelName";
        // バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は Region を cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // LiveChannel を削除するリクエストを作成します。
            LiveChannelGenericRequest request = new LiveChannelGenericRequest(bucketName, liveChannelName);
            // 削除操作を実行します。
            ossClient.deleteLiveChannel(request);
        } catch (OSSException oe) {
            // OSS サーバーから返された例外を処理します。
            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) {
                // OSSClient リソースを解放します。
                ossClient.shutdown();
            }
        }
    }
}

バケットの削除

バケット内のすべてのリソースが削除されたことを確認した後、バケットを削除できます。

OSS コンソールの使用

  1. 対象のバケットの [バケットの削除] ページに移動します。

  2. [バケットの削除] をクリックします。表示されるダイアログボックスで [削除] をクリックし、次に [OK] をクリックします。

ossutil

次のコマンドは examplebucket バケットを削除します。

ossutil api delete-bucket --bucket examplebucket

詳細については、「delete-bucket」をご参照ください。

OSS SDK

以下のセクションでは、一般的な SDK を使用してバケットを削除するコード例を示します。他の SDK を使用したコード例については、「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 {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。実際のエンドポイントを指定してください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。例:examplebucket。
        String bucketName = "examplebucket";
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        // OSSClient が不要になったら、shutdown メソッドを呼び出して関連リソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // バケットを削除します。
            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

# コマンドライン引数パーサーを作成し、このスクリプトが指定された OSS バケットを削除するために使用されることを記述します。
parser = argparse.ArgumentParser(description="Delete a specified OSS bucket.")

# --region コマンドライン引数を追加します。これはバケットが配置されているリージョンを指定します。この引数は必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)

# --bucket コマンドライン引数を追加します。これはバケットの名前を指定します。この引数は必須です。
parser.add_argument('--bucket', help='The name of the bucket to delete.', required=True)

# --endpoint コマンドライン引数を追加します。これは他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。この引数は必須ではありません。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS.')

def main():
    """
    メイン関数。コマンドライン引数を解析し、指定されたバケットを削除するために使用されます。
    """

    args = parser.parse_args()  # コマンドライン引数を解析します。

    # ID 検証のために環境変数から認証情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を使用し、認証情報プロバイダーとリージョンを設定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # endpoint パラメーターが提供されている場合、設定でエンドポイントを設定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 設定に基づいて OSS クライアントを作成します。
    client = oss.Client(cfg)

    # 指定されたバケットを削除するリクエストを構築します。
    request = oss.DeleteBucketRequest(bucket=args.bucket)
   
    try:
        # リクエストを送信し、レスポンスを取得します。
        result = client.delete_bucket(request)

        # レスポンスのステータスコードとリクエスト ID を出力します。
        print(f'status code: {result.status_code},'
              f' request id: {result.request_id}')
    except oss.exceptions.OssError as e:
        # 発生する可能性のある例外をキャッチして出力します。
        print(f"Failed to delete bucket: {e}")

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
)

func init() {
	// バケットのリージョンと名前を指定するためのコマンドラインパラメーターを定義します。
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	// コマンドラインパラメーターを解析します。
	flag.Parse()

	// バケットの名前が指定されているかどうかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// リージョンが指定されているかどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// デフォルトの設定を読み込み、認証情報プロバイダーとリージョンを指定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// 削除用のリクエストオブジェクトを作成します。
	request := &oss.DeleteBucketRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// DeleteBucket メソッドを呼び出します。
	result, err := client.DeleteBucket(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to delete bucket %v", err)
	}

	// 結果を表示します。
	log.Printf("delete bucket result:%#v\n", result)
}

PHP

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // オブジェクトと依存ライブラリを自動的に読み込みます。

use AlibabaCloud\Oss\V2 as Oss;

// コマンドラインパラメーターを指定します。
$optsdesc = [
    "region" => ['help' => The region in which the bucket is located.', 'required' => True], // (必須) バケットが配置されているリージョンを指定します。例:oss-cn-hangzhou。
    "endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (任意) 他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。
    "bucket" => ['help' => The name of the bucket, 'required' => True], // (必須) バケットの名前を指定します。
];
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの末尾にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドラインパラメーターを解析します。
$options = getopt("", $longopts); 

// 必須パラメーターが設定されているかどうかを確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須パラメーターが設定されていないことを指定します。
        exit(1); 
    }
}

// コマンドラインパラメーターの値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。

// 環境変数を使用して認証情報 (AccessKey ID と AccessKey Secret) を読み込みます。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); 

// SDK のデフォルト設定を使用します。
$cfg=Oss\Config::loadDefault(); // SDK のデフォルト設定を読み込みます。
$cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを指定します。
$cfg->setRegion($region); // リージョンを指定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // エンドポイントが提供されている場合は、エンドポイントを指定します。
}

// OSSClient インスタンスを作成します。
$client = new Oss\Client($cfg); 

// バケットを削除するリクエストを作成します。
$request = new Oss\Models\DeleteBucketRequest($bucket); 

// deleteBucket メソッドを使用してバケットを削除します。
$result = $client->deleteBucket($request); 

// 返された結果を表示します。
printf(
    'status code:' . $result-> statusCode. PHP_EOL . // HTTP レスポンスのステータスコード。
    'request id:' . $result->requestId // リクエストの一意の識別子。
);

Node.js

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

const client = new OSS({
  // region をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、region を oss-cn-hangzhou に設定します。
  region: 'yourregion',
  // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // bucket をご利用のバケットの名前に設定します。
  bucket: 'yourBucketName',
});

async function deleteBucket() {
  try {
    // バケット名を指定します。
    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)
        {
            // endpoint をご利用のバケットが配置されているリージョンのエンドポイントに設定します。たとえば、ご利用のバケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
            var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
            var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
            // bucketName をご利用のバケットの名前に設定します。例:examplebucket314。
            var bucketName = "examplebucket314";
            // region をご利用のバケットが配置されているリージョンの ID に設定します。たとえば、ご利用のバケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
            const string region = "cn-hangzhou";
            // ClientConfiguration インスタンスを作成し、必要に応じてデフォルトのパラメーターを変更します。
            var conf = new ClientConfiguration();
            // 署名バージョンを V4 に設定します。
            conf.SignatureVersion = SignatureVersion.V4;

            // OssClient インスタンスを作成します。
            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");

// バケットを非同期で削除します。
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) {
        // リクエストは失敗しました。
        if (clientException != null) {
            // ネットワーク例外などのクライアント例外。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // サービス例外。
            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];
// バケット名を指定します。 例: 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;
}];
// タスクが完了するまで現在のスレッドをブロックします。
// [getdeleteTask waitUntilFinished];

C++

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

int main(void)
{
    /*OSS アカウント情報を初期化します。*/
    
    /*yourEndpoint をバケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    
    /*yourRegion をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    
    /*バケット名を指定します。例:examplebucket。*/
    std::string BucketName = "examplebucket";

    /*ネットワークリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /*環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /*バケットを削除します。*/
    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;
    }

    /*ネットワークリソースを解放します。*/
    ShutdownSdk();
    return 0;
}

C

#include "oss_api.h"
#include "aos_http_io.h"
/* yourEndpoint をバケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";

/* バケット名を設定します。例:examplebucket。 */
const char *bucket_name = "examplebucket";
/* yourRegion をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* char* 文字列を使用して aos_string_t 型を初期化します。 */
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */    
    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"));
    // 以下の 2 つの追加パラメーターを設定します。
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* CNAME を使用して OSS にアクセスするかどうかを指定します。値 0 は CNAME を使用しないことを示します。 */
    options->config->is_cname = 0;
    /* タイムアウト期間などのネットワークパラメーターを設定します。 */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* main() で aos_http_io_initialize メソッドを呼び出して、ネットワークやメモリリソースなどのグローバルリソースを初期化します。 */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* メモリ管理用のメモリプール (pool)。apr_pool_t と同等です。その実装コードは APR ライブラリにあります。 */
    aos_pool_t *pool;
    /* 新しいメモリプールを作成します。2 番目のパラメーターは NULL で、プールが他のメモリプールから継承しないことを示します。 */
    aos_pool_create(&pool, NULL);
    /* オプションを作成して初期化します。このパラメーターには、エンドポイント、access_key_id、access_key_secret、is_cname、curl などのグローバル設定情報が含まれます。 */
    oss_request_options_t *oss_client_options;
    /* メモリプールにオプション用のメモリを割り当てます。 */
    oss_client_options = oss_request_options_create(pool);
    /* クライアントオプション oss_client_options を初期化します。 */
    init_options(oss_client_options);
    /* パラメーターを初期化します。 */
    aos_string_t bucket;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    /* char* データを aos_string_t バケットに割り当てます。 */
    aos_str_set(&bucket, bucket_name);
    /* バケットを削除します。 */
    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");
    }
    /* メモリプールを解放します。これにより、リクエスト中にリソースに割り当てられたメモリが解放されます。 */
    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',
  # 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します。例:examplebucket。
client.delete_bucket('examplebucket')

多数のファイルとパートの自動クリーンアップ

バケットに数百万以上の多数のファイルが含まれている場合、ライフサイクルルールを設定することが、最も効率的でコスト効果の高いクリーンアップ方法です。この方法では、期限切れのオブジェクトを削除するルールを設定します。その後、システムは指定された時間の経過後にバケット内のすべてのデータを自動的に削除します。ライフサイクルルールに慣れていない場合は、まずテスト用のバケットで試してください。

ファイルの削除は元に戻せないことにご注意ください。慎重に進めてください。

バージョン管理が無効なバケットの場合

バージョン管理が無効なバケットの場合、単一のライフサイクルルールを設定して、すべてのファイルとパート (マルチパートアップロードからの未マージのパート) を自動的かつ迅速に削除できます。

  1. OSS コンソールにログインします。[バケット] ページに移動し、対象のバケットを見つけます。

  2. 左側のナビゲーションウィンドウで、[コンテンツセキュリティ] > [バージョン管理] を選択します。バケットのバージョン管理が無効になっていることを確認します。

    未开启版本控制

  3. 左側のナビゲーションウィンドウで、[データ管理] > [ライフサイクル] を選択します。最終更新日から 1 日後にファイルを自動的に削除し、1 日以上経過したパートを削除するライフサイクルルールを設定します。

    screenshot_2025-07-01_17-59-32

バージョン管理が有効なバケットの場合

バージョン管理が有効な場合、バケットには現在のファイルバージョン、旧ファイルバージョン、パート、および削除マーカーが含まれることがあります。単一のライフサイクルルールを設定して、これらの項目を自動的かつ迅速にクリーンアップできます。

  1. OSS コンソールにログインします。[バケット] ページに移動し、対象のバケットを見つけます。

  2. 左側のナビゲーションウィンドウで、[コンテンツセキュリティ] > [バージョン管理] を選択します。バケットのバージョン管理が有効になっていることを確認します。

    screenshot_2025-07-02_10-58-23

  3. 左側のナビゲーションウィンドウで、[データ管理] > [ライフサイクル] を選択します。最終更新日から 1 日後にすべての現在および旧ファイルバージョンを自動的に削除し、1 日以上経過したパートを削除し、削除マーカーを削除するライフサイクルルールを設定します。

    screenshot_2025-07-02_10-58-23

よくある質問

「Bucket is not empty」というエラーが表示された場合はどうすればよいですか?

このエラーは、バケットにまだリソースが含まれていることを示します。OSS コンソールを使用して残りのリソースを確認してください。その後、リソースをクリーンアップしてから、再度バケットの削除を試みてください。詳細については、「削除が必要なリソースのクリーンアップ」をご参照ください。

バケットを削除した直後に同じ名前のバケットを作成できないのはなぜですか?

バケットを削除すると、その名前は 4〜8 時間のクールダウン期間に入ります。この期間中、どのユーザーも同じ名前で新しいバケットを作成することはできません。すぐにバケットを作成するには、別の名前を使用する必要があります。

クールダウン期間が終了すると、その名前はすべてのユーザーが利用できるようになります。バケットを迅速に再作成しないと、他のユーザーがその名前を登録してしまう可能性があります。

複数のバケットをバッチ操作で削除するにはどうすればよいですか?

警告

バッチ削除は、恒久的なデータ損失を引き起こす可能性のある高リスクな操作です。続行する前に、削除したいバケットのリストを再確認し、必要なすべてのデータをバックアップしたことを確認してください。

OSS コンソールはバッチ削除をサポートしていません。ただし、ossutil を使用してこの操作を実行するスクリプトを作成できます。

中心となるロジックは次のとおりです:

  1. リストの準備:削除したいすべてのバケットの名前を含む正確なテキストファイルまたはリストを作成します。

  2. ループでの実行:スクリプトはリストを走査し、各バケット名に対して次の 2 つの主要なステップを実行する必要があります。

    1. リソースを空にする:ossutil コマンドを呼び出してバケットを空にします。

    2. 空のバケットを削除する:前のステップが成功したことを確認した後、ossutil コマンドを呼び出してバケットを削除します。

削除中に「Insufficient permissions」エラーが発生した場合はどうすればよいですか?

バケットを削除するには、まずそのすべてのリソースをクリアする必要があります。このプロセスには、リスト権限や削除権限など、複数の権限が必要です。管理者に連絡して、ご利用の RAM ID に AliyunOSSFullAccess 権限を付与することを推奨します。これにより、権限不足による削除の失敗を防ぐことができます。

OSS の課金を完全に停止するにはどうすればよいですか?

Object Storage Service (OSS) のすべての課金を完全に停止するには、アカウント配下のすべてのバケットを削除する必要があります。アカウントにバケットが存在する限り、たとえ空であっても、または未払いの請求がある場合でも、OSS 関連の料金が発生し続ける可能性があります。

誤って削除したバケットを回復できますか?

いいえ、できません。削除操作は元に戻せません。バケットを削除する前に、必ずデータをバックアップしてください。