このトピックでは、単一のオブジェクトを削除する方法、または複数のオブジェクトを一度に削除する方法について説明します。
削除操作を実行する際は、十分にご注意ください。削除されたオブジェクトは回復できません。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトを削除するには、
oss:DeleteObject権限が必要です。詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。
単一オブジェクトの削除
次のコードは、examplebucket バケットから exampleobject.txt オブジェクトを削除する方法を示しています。
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);
}複数オブジェクトの削除
一度に最大 1,000 個のオブジェクトを削除できます。
結果は、次の 2 つのモードで返されます。要件に基づいて返却モードを選択してください。
verbose:`quietMode` が指定されていないか、`false` に設定されている場合、削除されたすべてのオブジェクトのリストが返されます。これはデフォルトの返却モードです。
quiet:`quietMode` が `true` に設定されている場合、メッセージ本文は返されません。
次のコードは、examplebucket という名前のバケットから複数の指定されたオブジェクトを削除する方法の例を示しています:
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";
// バケットが所在するリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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
{
// 削除する複数のオブジェクトのパスを指定します。完全なパスにバケット名を含めないでください。
var keys = new List<string>();
keys.Add("exampleobject.txt");
keys.Add("testdir/sampleobject.txt");
// quietMode を空のままにするか、false に設定すると、削除されたオブジェクトのリストが返されます。
var quietMode = false;
var request = new DeleteObjectsRequest(bucketName, keys, quietMode);
// 複数のオブジェクトを削除します。
var result = client.DeleteObjects(request);
if ((!quietMode) && (result.Keys != null))
{
foreach (var obj in result.Keys)
{
Console.WriteLine("Delete successfully : {0} ", obj.Key);
}
}
Console.WriteLine("Delete objects succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Delete objects failed. {0}", ex.Message);
}関連ドキュメント
単一オブジェクトの削除
単一のオブジェクトを削除するために呼び出すことができる API 操作の詳細については、「DeleteObject」をご参照ください。
複数オブジェクトの削除
複数のオブジェクトを削除するために使用される完全なサンプルコードについては、GitHub をご参照ください。
複数のオブジェクトを削除するために呼び出すことができる API 操作の詳細については、「DeleteMultipleObjects」をご参照ください。