このトピックでは、OSS SDK for C# を使用して、指定されたバケット内のすべてのオブジェクトをリストする方法について説明します。
注意事項
このトピックのサンプルコードでは、中国 (杭州) リージョン (
cn-hangzhou) を例として使用します。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。このトピックでは、環境変数からアクセス資格情報を読み取る例を示します。アクセス資格情報を設定する方法の詳細については、「アクセス資格情報の設定」をご参照ください。
オブジェクトをリストするには、
oss:ListObjects権限が必要です。詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
サンプルコード
次のコードを使用して、指定されたバケット内のすべてのオブジェクトをリストできます。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を cn-hangzhou に設定します。
var endpoint = null as string; // オプション。OSS サービスへのアクセスに使用するドメイン名を指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Endpoint を https://oss-cn-hangzhou.aliyuncs.com に設定します。
var bucket = "your bucket 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);
// ListObjectsV2Paginator メソッドを呼び出して、宛先バケット内のすべてのオブジェクトを取得します。
var paginator = client.ListObjectsV2Paginator(new OSS.Models.ListObjectsV2Request()
{
Bucket = bucket
});
// バケット内のすべてのオブジェクトの情報を出力します。
Console.WriteLine("Objects:");
await foreach (var page in paginator.IterPageAsync()) // 結果の各ページを非同期で走査します。
{
// 現在のページの各オブジェクトを走査します。
foreach (var content in page.Contents ?? [])
{
// オブジェクト情報 (キー、サイズ (バイト単位)、最終更新日時) を出力します。
Console.WriteLine($"Object:{content.Key}, {content.Size}, {content.LastModified}");
}
}参考
完全なサンプルコードについては、「ListObjects.cs」をご参照ください。