バケットから OSS オブジェクトまたは HDFS オブジェクトを削除するには、いくつかの方法があります。削除されたオブジェクトは回復できません。オブジェクトを削除する際は、十分にご注意ください。
一度削除されたオブジェクトは回復できません。オブジェクトを削除する際は、十分にご注意ください。
OSS-HDFS の安定性を維持し、データ損失を防ぐため、
.dlsdata/ディレクトリからオブジェクトを削除しないでください。バケットで ObjectWorm または BucketWorm が有効になっている場合、保持期間内のオブジェクトは削除できません。削除しようとすると、OSS からエラーが返されます。オブジェクトは、保持期間が終了した後にのみ削除できます。
単一オブジェクトの削除
OSS コンソール
-
OSS コンソールにログインします。
-
左側のナビゲーションウィンドウで、バケット をクリックします。表示されたページで、対象のバケット名をクリックします。
-
左側のナビゲーションウィンドウで、オブジェクト管理 > オブジェクト を選択します。
OSS オブジェクトまたは HDFS オブジェクトを削除します。
OSS オブジェクト
オブジェクト タブでオブジェクトを選択し、オブジェクトリストの下にある 完全に削除 をクリックします。
ダイアログボックスで OK をクリックします。
HDFS オブジェクト
[HDFS] タブで、削除したいオブジェクトの 完全に削除 列にある [完全に削除] をクリックします。
説明[HDFS] タブのファイルはバッチ削除できません。[HDFS] タブのすべてのファイルは、1 つずつ手動で削除することでのみ削除できます。
ダイアログボックスで OK をクリックします。
ossutil
開始する前に、ossutil をインストールしてください。
次のコマンドは、examplebucket バケットから exampleobject という名前のオブジェクトを削除します。
ossutil api delete-object --bucket examplebucket --key exampleobjectこのコマンドの詳細については、「delete-object」をご参照ください。
ossbrowser
ossbrowser は、OSS コンソールと同様のオブジェクトレベルの操作をサポートしています。画面の指示に従ってオブジェクトを削除してください。ossbrowser の使用方法の詳細については、「ossbrowser 2.0 の一般的な操作」をご参照ください。
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";
// オブジェクトの完全なパスを指定します。オブジェクトの完全なパスにバケット名を含めないでください。
String objectName = "exampleobject.txt";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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.deleteObject(bucketName, objectName);
} 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();
}
}
}
} Node.js
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、環境変数 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: 'examplebucket',
});
async function deleteObject() {
try {
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。
const result = await client.delete('exampleobject.txt');
console.log(result);
} catch (error) {
console.log(error);
}
}
deleteObject();
Browser.js
Browser.js SDK は通常、ブラウザ環境で使用されます。AccessKey ペア (AccessKey ID と AccessKey Secret) の漏洩を防ぐため、一時的な認証情報を使用して OSS 操作を実行することを強く推奨します。一時的な認証情報には、一時的な AccessKey ペアとセキュリティトークンが含まれます。一時的な認証情報を取得する方法の詳細については、「アクセス権限の付与 (Browser.js SDK)」をご参照ください。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id="delete">Delete</button>
<!--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({
// region をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、region を oss-cn-hangzhou に設定します。
region: 'yourRegion',
authorizationV4: true,
// STS から取得した一時的な AccessKey ペア (AccessKey ID と AccessKey Secret)。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークン (SecurityToken)。
stsToken: 'yourSecurityToken',
// バケット名を指定します。例: examplebucket。
bucket: "examplebucket",
});
const deleteSingle = document.getElementById("delete");
// 単一のファイルを削除します。
deleteSingle.addEventListener("click", async () => {
// 削除するオブジェクトの名前を指定します。オブジェクト名は、バケット名を含まないオブジェクトの完全なパスである必要があります。例: 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;
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケット名を指定します。例: examplebucket。
var bucketName = "examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。
var objectName = "exampledir/exampleobject.txt";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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.DeleteObject(bucketName, objectName);
Console.WriteLine("Delete object succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Delete object failed. {0}", ex.Message);
}Android Java
// 削除リクエストを作成します。
// バケット名 (例: examplebucket) とオブジェクトの完全なパス (例: exampledir/exampleobject.txt) を指定します。オブジェクトの完全なパスにバケット名を含めることはできません。
DeleteObjectRequest delete = new DeleteObjectRequest("examplebucket", "exampledir/exampleobject.txt");
// オブジェクトを非同期で削除します。
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) {
// リクエストエラー。
if (clientExcepion != null) {
// ネットワーク例外などのクライアント例外が発生しました。
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// サーバー例外が発生しました。
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];
// バケット名を指定します。例: examplebucket。
delete.bucketName = @"examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: exampleobject.txt。
delete.objectKey = @"exampleobject.txt";
OSSTask * deleteTask = [client deleteObject:delete];
[deleteTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
// ...
}
return nil;
}];
// タスクが完了するのを待つために同期ブロッキングを実装します。
// [deleteTask 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";
/* オブジェクトの完全なパスを指定します。例: exampleobject.txt。完全なパスにバケット名を含めることはできません。*/
/* フォルダを削除するには、ObjectName をフォルダ名に設定します。フォルダが空でない場合は、フォルダを削除する前にフォルダ内のすべてのオブジェクトを削除する必要があります。*/
std::string ObjectName = "exampleobject.txt";
/* ネットワークリソースを初期化します。*/
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);
DeleteObjectRequest request(BucketName, ObjectName);
/* ファイルを削除します。*/
auto outcome = client.DeleteObject(request);
if (!outcome.isSuccess()) {
/* 例外を処理します。*/
std::cout << "DeleteObject fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースを解放します。*/
ShutdownSdk();
return 0;
}C
#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/* バケット名を指定します。例: examplebucket。*/
const char *bucket_name = "examplebucket";
/* 削除するファイルの完全なパスを指定します。完全なパスにバケット名を含めることはできません。*/
const char *object_name = "exampleobject.jpg";
/* yourRegion をバケットのリージョン ID に設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョン ID を cn-hangzhou に設定します。*/
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* aos_string_t 型を char* 文字列で初期化します。*/
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;
/* Canonical Name (CNAME) が使用されるかどうかを指定します。値 0 は CNAME が使用されないことを示します。*/
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメーターを設定します。*/
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* プログラムエントリで 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);
/* オプションを作成して初期化します。このパラメーターには、endpoint、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_string_t object;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
/* char* 型のデータを aos_string_t 型のバケットに割り当てます。*/
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("delete object succeed\n");
} else {
printf("delete object failed\n");
}
/* メモリプールを解放します。これにより、リクエスト中にリソースに割り当てられたメモリが解放されます。*/
aos_pool_destroy(pool);
/* 以前に割り当てられたグローバルリソースを解放します。*/
aos_http_io_deinitialize();
return 0;
}Ruby
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# エンドポイントをバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
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。
bucket = client.get_bucket('examplebucket')
# オブジェクトの完全なパスを設定します。例: exampledir/exampleobject.txt。完全なパスにバケット名を含めることはできません。
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"
)
// グローバル変数を定義します。
var (
region string // バケットが配置されているリージョン。
bucketName string // バケットの名前。
objectName string // オブジェクトの名前。
)
// コマンドラインパラメーターを初期化するために使用される init 関数を指定します。
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
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")
}
// オブジェクトの名前が指定されているかどうかを確認します。
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// デフォルト設定をロードし、認証情報プロバイダーとリージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSS クライアントを作成します。
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("failed to delete object %v", err)
}
// 結果を表示します。
log.Printf("delete object result:%#v\n", result)
}
Python
import argparse
import alibabacloud_oss_v2 as oss
# コマンドライン引数パーサーを作成します。
parser = argparse.ArgumentParser(description="delete object sample")
# --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.', required=True)
# --endpoint コマンドライン引数を追加します。これは他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。この引数は必須ではありません。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# --key コマンドライン引数を追加します。これはオブジェクトの名前を指定します。この引数は必須です。
parser.add_argument('--key', help='The name of the object.', required=True)
def main():
args = parser.parse_args() # コマンドライン引数を解析します。
# 本人確認のために環境変数から認証情報をロードします。
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)
# オブジェクトを削除するリクエストを実行します。バケット名とオブジェクト名を指定します。
result = client.delete_object(oss.DeleteObjectRequest(
bucket=args.bucket,
key=args.key,
))
# リクエストが成功したかどうかを確認するために、リクエストのステータスコード、リクエスト ID、バージョン ID、削除マーカーを出力します。
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' version id: {result.version_id},'
f' delete marker: {result.delete_marker},'
)
if __name__ == "__main__":
main() # スクリプトのエントリポイント。ファイルが直接実行されると main 関数が呼び出されます。PHP
<?php
// 依存ライブラリをロードするために autoload ファイルを導入します。
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], // (必須) バケットが配置されているリージョンを指定します。
"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], // (必須) バケットの名前を指定します。
"key" => ['help' => 'The name of the object', 'required' => True], // (必須) オブジェクトの名前を指定します。
];
// 説明を getopt で必要なロングオプションのリストに変換します。
// 各パラメーターの末尾にコロン (:) を追加して、値が必要であることを示します。
$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" . PHP_EOL;
exit(1); // 必須パラメーターが欠落している場合はプログラムを終了します。
}
}
// コマンドラインパラメーターから解析された値を対応する変数に割り当てます。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。
$key = $options["key"]; // オブジェクトの名前。
// 環境変数からアクセス認証情報をロードします。
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を取得します。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// SDK のデフォルト設定を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを指定します。
$cfg->setRegion($region); // バケットが配置されているリージョンを指定します。
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // エンドポイントが提供されている場合は指定します。
}
// OSSClient インスタンスを作成します。
$client = new Oss\Client($cfg);
// 指定されたオブジェクトを削除するために DeleteObjectRequest オブジェクトを作成します。
$request = new Oss\Models\DeleteObjectRequest(bucket: $bucket, key: $key);
// オブジェクトを削除します。
$result = $client->deleteObject($request);
// オブジェクト削除操作の結果を表示します。
// HTTP ステータスコードとリクエスト ID を表示して、リクエストが成功したかどうかを確認します。
printf(
'status code:' . $result->statusCode . PHP_EOL . // HTTP ステータスコード。たとえば、HTTP ステータスコード 204 は削除が成功したことを示します。
'request id:' . $result-> requestId. PHP_EOL // リクエスト ID。リクエストのデバッグやトレースに使用されます。
);
API
高度な要件がある場合は、REST API オペレーションを直接呼び出すことができます。これには、署名計算コードを手動で記述する必要があります。単一オブジェクトを削除するための API オペレーションの詳細については、「DeleteObject」をご参照ください。
オブジェクトの一括削除
1 回のリクエストで最大 1,000 個のオブジェクトを削除できます。それ以上のオブジェクトを削除するには、複数のリクエストを送信できます。
OSS コンソール
-
OSS コンソールにログインします。
-
左側のナビゲーションウィンドウで、バケット をクリックします。表示されたページで、対象のバケット名をクリックします。
-
左側のナビゲーションウィンドウで、オブジェクト管理 > オブジェクト を選択します。
OSS オブジェクトまたは HDFS オブジェクトを削除します。
OSS オブジェクト
OSS オブジェクト タブで複数のオブジェクトを選択し、オブジェクトリストの下にある 完全に削除 をクリックします。
ダイアログボックスで OK をクリックします。
HDFS オブジェクト
「[HDFS]」タブで、削除するオブジェクトの操作列にある「完全に削除」をクリックします。
説明[HDFS] タブのファイルはバッチ削除をサポートしていません。[HDFS] タブのすべてのファイルは、1 つずつ手動で削除することでのみ削除できます。
ダイアログボックスで OK をクリックします。
ossutil
開始する前に、ossutil をインストールしてください。
次のコマンドは、examplebucket バケットから複数のオブジェクトを削除します。
ossutil api delete-multiple-objects --bucket examplebucket --delete "{\"Quiet\":\"false\",\"Object\":[{\"Key\":\"multipart.data\"},{\"Key\":\"test.jpg\"}]}"このコマンドの詳細については、「delete-multiple-objects」をご参照ください。
ossbrowser
ossbrowser は、OSS コンソールと同様のオブジェクトレベルの操作をサポートしています。画面の指示に従ってオブジェクトを削除してください。ossbrowser の使用方法の詳細については、「ossbrowser 2.0 の一般的な操作」をご参照ください。
OSS SDK
以下の例は、主要な SDK を使用して複数のオブジェクトを削除する方法を示しています。その他の SDK の例については、「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 {
// この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントを指定してください。
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 {
// オブジェクトを削除します。
// 削除したい複数のオブジェクトの完全なパスを指定します。オブジェクトの完全なパスにバケット名を含めないでください。
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("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();
}
}
}
} Node.js
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、環境変数 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: 'examplebucket',
});
async function deleteMulti() {
try {
// 削除するオブジェクトの完全なパスを指定し、応答モードを verbose に設定します。完全なパスにバケット名を含めることはできません。
// let result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt']);
// console.log(result);
// 削除するオブジェクトの完全なパスを指定し、応答モードを quiet に設定します。完全なパスにバケット名を含めることはできません。
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
Browser.js SDK は通常、ブラウザ環境で使用されます。AccessKey ペア (AccessKey ID と AccessKey Secret) の漏洩を防ぐため、一時的な認証情報を使用して OSS 操作を実行することを強く推奨します。一時的な認証情報には、一時的な AccessKey ペアとセキュリティトークンが含まれます。一時的な認証情報を取得する方法の詳細については、「アクセス権限の付与 (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>
<!--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({
// region をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、region を oss-cn-hangzhou に設定します。
region: 'yourRegion',
authorizationV4: true,
// STS から取得した一時的な AccessKey ペア (AccessKey ID と AccessKey Secret)。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークン (SecurityToken)。
stsToken: 'yourSecurityToken',
// バケット名を指定します。例: examplebucket。
bucket: "examplebucket",
});
const deleteAll = document.getElementById("deleteAll");
// 複数のファイルを削除します。
deleteAll.addEventListener("click", async () => {
// 削除するオブジェクトの名前を指定します。オブジェクト名は、バケット名を含まないオブジェクトの完全なパスである必要があります。
let result = await client.deleteMulti([
"example.txt",
"exampleobject.txt",
"newexampleobject.txt",
]);
console.log(result);
result = await client.deleteMulti(
["example.txt", "exampleobject.txt", "newexampleobject.txt"],
{
// quiet パラメーターを使用して、削除されたすべてのファイルのリストを返すかどうかを指定します。quiet が true に設定されている場合、OSS はメッセージ本文を返しません。quiet が false に設定されている場合、OSS は削除されたすべてのファイルのリストを返します。
quiet: true,
}
);
});
</script>
</body>
</html>
C#
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョンを設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
var endpoint = null as string; // 任意。OSS サービスへのアクセスに使用されるドメイン名を指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var bucket = "your bucket name"; // 必須。バケット名。
var keys = new List<String> // 必須。削除される送信先オブジェクト。
{
"your object key1",
"your object key2",
"your object key3"
};
// OSS SDK のデフォルト設定をロードします。設定は環境変数から認証情報 (AccessKey など) を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// 本人確認のために認証情報を取得するために環境変数を明示的に使用するように設定します (フォーマット: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// 設定でバケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントを上書きします。
if(endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定情報を使用して OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// 削除するオブジェクトのコレクションを作成します。
var objects = new List<OSS.Models.DeleteObject>();
// 削除するオブジェクトキーのリストを走査します (keys が null の場合はスキップ)。
foreach (var item in keys ?? [])
{
objects.Add(new OSS.Models.DeleteObject()
{
Key = item,
});
}
// DeleteMultipleObjectsAsync メソッドを呼び出してバッチ削除リクエストを実行します。
var result = await client.DeleteMultipleObjectsAsync(new OSS.Models.DeleteMultipleObjectsRequest()
{
Bucket = bucket,
Objects = objects
});
// 結果情報を出力します。
Console.WriteLine("DeleteMultipleObjects done"); // 操作が完了したことを示すメッセージ。
Console.WriteLine($"StatusCode: {result.StatusCode}"); // HTTP ステータスコード。
Console.WriteLine($"RequestId: {result.RequestId}"); // Alibaba Cloud でのトラブルシューティングに使用されるリクエスト ID。
Console.WriteLine("Response Headers:"); // レスポンスヘッダー情報。
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value)); // すべてのレスポンスヘッダーを走査して出力します。
Console.WriteLine("Key to be deleted:");
keys?.ToList().ForEach(x => Console.WriteLine(x)); // 削除されたオブジェクトのリストを出力します。Android Java
// 削除したいオブジェクトの完全なパスを指定します。オブジェクトの完全なパスにバケット名を含めることはできません。
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");
// モードを基本モードに設定して、削除に失敗したファイルのリストのみを返します。
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) {
// リクエストエラー。
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());
}
}
});Objective-C
// 削除したいオブジェクトの完全なパスを指定します。オブジェクトの完全なパスにバケット名を含めることはできません。
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");
// モードを基本モードに設定して、削除に失敗したファイルのリストのみを返します。
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) {
// リクエストエラー。
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());
}
}
});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);
DeleteObjectsRequest request(BucketName);
/* 削除するオブジェクトの完全なパスを追加します。*/
request.addKey("yourObjectName1");
request.addKey("yourObjectName2");
/* ファイルを削除します。*/
auto outcome = client.DeleteObjects(request);
if (!outcome.isSuccess()) {
/* 例外を処理します。*/
std::cout << "DeleteObjects fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースを解放します。*/
ShutdownSdk();
return 0;
}C
#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
const char *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/* バケット名を指定します。例: examplebucket。*/
const char *bucket_name = "examplebucket";
/* 削除するファイルの完全なパスを指定します。完全なパスにバケット名を含めることはできません。*/
const char *object_name1 = "exampleobject1.jpg";
const char *object_name2 = "testobject2.png";
/* yourRegion をバケットのリージョン ID に設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョン ID を cn-hangzhou に設定します。*/
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* aos_string_t 型を char* 文字列で初期化します。*/
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 が使用されるかどうかを指定します。値 0 は CNAME が使用されないことを示します。*/
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメーターを設定します。*/
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* プログラムエントリで 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);
/* オプションを作成して初期化します。このパラメーターには、endpoint、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_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);
/* 削除するファイルのリストを構築します。*/
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);
/* リスト内のファイルを削除します。`is_quiet` は削除結果を返すかどうかを指定します。*/
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("delete objects succeeded\n");
} else {
printf("delete objects failed\n");
}
/* メモリプールを解放します。これにより、リクエスト中にリソースに割り当てられたメモリが解放されます。*/
aos_pool_destroy(pool);
/* 以前に割り当てられたグローバルリソースを解放します。*/
aos_http_io_deinitialize();
return 0;
}Ruby
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# エンドポイントをバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
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。
bucket = client.get_bucket('examplebucket')
# 削除するオブジェクトの完全なパスを設定します。完全なパスにバケット名を含めることはできません。
objs = ['my-object-1', 'my-object-2']
result = bucket.batch_delete_objects(objs)
# デフォルトでは、正常に削除されたオブジェクトが返されます。
puts result #['my-object-1', 'my-object-2']
objs = ['my-object-3', 'my-object-4']
result = bucket.batch_delete_objects(objs, :quiet => true)
# 削除結果は返されません。
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"
)
// グローバル変数を定義します。
var (
region string // バケットが配置されているリージョン。
bucketName string // バケットの名前。
objects string // オブジェクト名のリスト (カンマ区切り)。
)
// コマンドラインパラメーターを初期化するために使用される init 関数を指定します。
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objects, "objects", "", "The name of the objects (comma-separated).")
}
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")
}
// オブジェクト名のリストが提供されているかどうかを確認します。
if len(objects) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, objects name required")
}
// デフォルト設定をロードし、認証情報プロバイダーとリージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSS クライアントを作成します。
client := oss.NewClient(cfg)
// オブジェクト名のリストをスライスに変換します。
var DeleteObjects []oss.DeleteObject
objectSlice := strings.Split(objects, ",")
for _, name := range objectSlice {
DeleteObjects = append(DeleteObjects, oss.DeleteObject{Key: oss.Ptr(strings.TrimSpace(name))})
}
// 複数のオブジェクトを削除するリクエストを作成します。
request := &oss.DeleteMultipleObjectsRequest{
Bucket: oss.Ptr(bucketName), // バケットの名前。
Objects: DeleteObjects, // 削除するオブジェクトのリスト。
}
// リクエストを実行し、結果を処理します。
result, err := client.DeleteMultipleObjects(context.TODO(), request)
if err != nil {
log.Fatalf("failed to delete multiple objects %v", err)
}
// 結果を表示します。
log.Printf("delete multiple objects result:%#v\n", result)
}
Python
import argparse
import alibabacloud_oss_v2 as oss
# コマンドライン引数パーサーを作成します。
parser = argparse.ArgumentParser(description="delete multiple objects sample")
# --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.', required=True)
# --endpoint コマンドライン引数を追加します。これは他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。この引数は必須ではありません。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# --key コマンドライン引数を追加します。これはオブジェクトの名前を指定します。この引数は必須です。
parser.add_argument('--key', help='The name of the object.', required=True)
# 注: 複数のオブジェクトを削除する場合は、オブジェクトの名前を指定する --key2 コマンドライン引数を追加します。
parser.add_argument('--key2', help='The name of the object.', required=True)
def main():
# コマンドライン引数を解析します。
args = parser.parse_args()
# 本人確認のために環境変数から認証情報をロードします。
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)
# 削除するオブジェクトのリストを定義します。
# 注: 複数のオブジェクトを削除する場合は、次の形式で objects リストを拡張します。
objects = [oss.DeleteObject(key=args.key), oss.DeleteObject(key=args.key2)]
# 複数のオブジェクトを削除するリクエストを実行します。バケット名、エンコーディングタイプ、オブジェクトリストを指定します。
result = client.delete_multiple_objects(oss.DeleteMultipleObjectsRequest(
bucket=args.bucket,
encoding_type='url',
objects=objects,
))
# リクエストが成功したかどうかを確認するために、ステータスコード、リクエスト ID、削除されたオブジェクトに関する情報を出力します。
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' key: {result.deleted_objects[0].key},'
f' version id: {result.deleted_objects[0].version_id},'
f' delete marker: {result.deleted_objects[0].delete_marker},'
f' delete marker version id: {result.deleted_objects[0].delete_marker_version_id},'
f' encoding type: {result.encoding_type},'
)
if __name__ == "__main__":
main() # スクリプトのエントリポイント。ファイルが直接実行されると main 関数が呼び出されます。
API
高度な要件がある場合は、REST API オペレーションを直接呼び出すことができます。これには、署名計算コードを手動で記述する必要があります。複数のオブジェクトを削除するための API オペレーションの詳細については、「DeleteMultipleObjects」をご参照ください。
期限切れオブジェクトの自動削除
バケットから数百万、あるいは数億のオブジェクトを手動で削除するのは、時間がかかり、エラーも発生しやすくなります。ライフサイクルルールを使用すると、時間やオブジェクトのプレフィックスなどの条件に基づいて、オブジェクトを自動的かつ定期的に削除できます。これにより、運用コストを削減できます。