このトピックでは、OSS C# SDK を使用して単一または複数のオブジェクトを削除する方法について説明します。
注意事項
このトピックのサンプルコードでは、中国 (杭州) リージョン (
cn-hangzhou) を例として使用し、デフォルトでパブリックエンドポイントを使用します。同じリージョン内の別の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。このトピックの例では、環境変数からアクセス資格情報を読み取る方法を示します。アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
オブジェクトを削除するには、
oss:DeleteObject権限が必要です。詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
サンプルコード
単一オブジェクトの削除
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 key = "your object name"; // 必須。宛先オブジェクトの名前。
// 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);
// DeleteObjectAsync メソッドを呼び出して、宛先オブジェクトを削除します。
var result = await client.DeleteObjectAsync(new OSS.Models.DeleteObjectRequest()
{
Bucket = bucket,
Key = key,
});
// 結果情報を出力します。
Console.WriteLine("DeleteObject 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)); // すべての応答ヘッダーを走査して出力します。複数オブジェクトの削除
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)); // 削除されたオブジェクトのリストを出力します。関連ドキュメント
完全なサンプルコードについては、「delete_object.cs」をご参照ください。