このトピックでは、バージョン管理が有効なバケット内のオブジェクトのメタデータを取得する方法について説明します。
前提条件
このトピックのサンプルコードでは、中国 (杭州) リージョン (
cn-hangzhou) を例として使用します。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。オブジェクトのメタデータを取得するには、
oss:GetObject権限が必要です。詳細については、「RAM ユーザーにカスタム権限を付与する」をご参照ください。
サンプルコード
HeadObjectAsync メソッドを使用してオブジェクトのすべてのメタデータを取得する
次のサンプルコードは、HeadObjectAsync メソッドを使用して、オブジェクトの特定のバージョンのすべてのメタデータを取得する方法を示しています。
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 key"; // 必須。オブジェクトの名前。
// 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);
// HeadObjectAsync メソッドを呼び出して、宛先オブジェクトのすべてのメタデータを取得します。
var result = await client.HeadObjectAsync(new OSS.Models.HeadObjectRequest()
{
Bucket = bucket,
Key = key,
});
// 結果を出力します。
Console.WriteLine("HeadObject 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)); // すべての応答ヘッダーを走査して出力します。GetObjectMetaAsync メソッドを使用してオブジェクトのメタデータの一部を取得する
GetObjectMetaAsync メソッドを使用すると、オブジェクトのメタデータの一部 (コンテンツの長さ (Content-Length)、ETag、最終更新日時 (Last-Modified)、バージョン ID (x-oss-version-id)、オブジェクトの 64 ビット CRC 値 (x-oss-hash-crc64ecma) など) のみを取得できます。
次のサンプルコードは、GetObjectMetaAsync メソッドを使用して、オブジェクトの特定のバージョンのメタデータの一部を取得する方法を示しています。
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 key"; // 必須。オブジェクトの名前。
// 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);
// GetObjectMetaAsync メソッドを呼び出して、宛先オブジェクトのメタデータの一部を取得します。
var result = await client.GetObjectMetaAsync(new OSS.Models.GetObjectMetaRequest()
{
Bucket = bucket,
Key = key,
});
// 結果を出力します。
Console.WriteLine("GetObjectMeta 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)); // すべての応答ヘッダーを走査して出力します。関連ドキュメント
オブジェクトのすべてのメタデータを取得するサンプルコードについては、「HeadObject.cs」をご参照ください。
オブジェクトのメタデータの一部を取得するサンプルコードについては、「GetObjectMeta.cs」をご参照ください。