複数の方法を使用して、不要な OSS オブジェクトまたは HDFS ファイルをバケットから削除できます。削除されたオブジェクトは回復できません。注意して実行してください。
削除されたオブジェクトは回復できません。削除操作は注意して使用してください。
OSS-HDFS の安定性を維持し、データ損失を防ぐために、
.dlsdata/ディレクトリからオブジェクトを削除しないでください。
単一オブジェクトの削除
OSS コンソール
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションツリーで、オブジェクト管理 > オブジェクト を選択します。
OSS オブジェクトまたは HDFS ファイルを削除します。
OSS オブジェクトの削除
オブジェクト タブでオブジェクトを選択し、オブジェクトリストの下にある 完全に削除 をクリックします。
表示されるダイアログボックスで、OK をクリックします。
HDFS ファイルの削除
[HDFS] タブで、削除するファイルの [アクション] 列にある 完全に削除 をクリックします。
説明[HDFS] タブのファイルはバッチ削除をサポートしていません。[HDFS] タブからファイルを個別に削除する必要があります。
表示されるダイアログボックスで、OK をクリックします。
ossutil
ossutil を使用する前に、インストールしてください。
次の例は、examplebucket バケットから exampleobject という名前のオブジェクトを削除する方法を示しています。
ossutil api delete-object --bucket examplebucket --key exampleobjectこのコマンドの詳細については、「delete-object」をご参照ください。
ossbrowser
ossbrowser は、OSS コンソールと同様のオブジェクトレベルの操作をサポートしています。ossbrowser インターフェイスの指示に従ってオブジェクトを削除できます。ossbrowser の使用方法の詳細については、「ossbrowser の一般的な操作」をご参照ください。
OSS SDK
次のコードは、一般的なプログラミング言語の OSS SDK を使用して単一のオブジェクトを削除する方法の例を示しています。他のプログラミング言語の OSS SDK を使用して単一のオブジェクトを削除する方法の詳細については、「OSS 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 用の OSS SDK は通常、ブラウザ環境で使用されます。AccessKey ペアが公開されるのを防ぐために、セキュリティトークンサービス (STS) から取得した一時的なアクセス資格情報を使用して OSS にアクセスします。一時的なアクセス資格情報は、AccessKey ペアとセキュリティトークンで構成されます。AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。一時的なアクセス資格情報の取得方法の詳細については、「アクセス権限付与」をご参照ください。
<!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({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'yourRegion',
authorizationV4: true,
// STS から取得した一時的な AccessKey ペアを指定します。AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークンを指定します。
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());
}
}
});Object 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 へのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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 を使用するかどうかを指定します。値 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);
}
/* メモリを管理するためのメモリプールを作成します。aos_pool_t は 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_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() # コマンドライン引数を解析します。
# 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)
# オブジェクトを削除するリクエストを実行します。バケット名とオブジェクト名を指定します。
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 個のオブジェクトを削除できます。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 の使用方法の詳細については、「ossbrowser の一般的な操作」をご参照ください。
OSS SDK
次のコードは、一般的なプログラミング言語の OSS SDK を使用して複数のオブジェクトを削除する方法の例を示しています。他のプログラミング言語の OSS SDK を使用して複数のオブジェクトを削除する方法の詳細については、「OSS 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 用の OSS SDK は通常、ブラウザ環境で使用されます。AccessKey ペアが公開されるのを防ぐために、セキュリティトークンサービス (STS) から取得した一時的なアクセス資格情報を使用して OSS にアクセスします。一時的なアクセス資格情報は、AccessKey ペアとセキュリティトークンで構成されます。AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。一時的なアクセス資格情報の取得方法の詳細については、「アクセス権限付与」をご参照ください。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id="deleteAll">Delete All</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({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'yourRegion',
authorizationV4: true,
// STS から取得した一時的な AccessKey ペアを指定します。AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークンを指定します。
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();
// ID 検証用の資格情報を取得するために環境変数を使用することを明示的に設定します (形式: 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}"); // リクエスト ID。Alibaba Cloud でのトラブルシューティングに使用されます。
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");
// isQuiet を true に設定すると、削除に失敗したオブジェクトのリストのみが返されます。
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());
}
}
});Object C
// 削除するオブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");
// isQuiet を true に設定すると、削除に失敗したオブジェクトのリストのみが返されます。
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 へのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットの名前を指定します。例: examplebucket。 */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
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";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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 を使用するかどうかを指定します。値 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);
}
/* メモリを管理するためのメモリプールを作成します。aos_pool_t は 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_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()
# 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)
# 削除するオブジェクトのリストを定義します。
# 注: 複数のオブジェクトを削除する場合は、次の形式でオブジェクトリストを展開します。
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」をご参照ください。
有効期限が切れたオブジェクトの自動削除
バケットに数百万、あるいは数億のオブジェクトが含まれている場合、手動での削除は時間がかかり、エラーが発生しやすくなります。ライフサイクルルールを使用して、時間やオブジェクト名のプレフィックスなどの条件に基づいてオブジェクトを自動的かつ定期的に削除できます。これにより、運用コストが削減されます。