このトピックでは、バケットインベントリ設定の追加、表示、一覧表示、削除の方法について説明します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
インベントリ設定を追加、表示、一覧表示、削除する権限があることを確認してください。 デフォルトでは、バケットの所有者がこれらの権限を持っています。 これらの権限がない場合は、バケットの所有者に権限を要求する必要があります。
単一のバケットに対して、最大 1,000 個のインベントリルールを設定できます。
インベントリルールを設定するソースバケットと、マニフェストファイルが格納される宛先バケットは、同じリージョンにある必要があります。
インベントリ設定の追加
次のコードは、バケットのインベントリ設定を追加する方法の例です。
using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントに endpoint を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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");
// バケット名を指定します。
var bucketName = "examplebucket";
// バケットの所有者によって付与された AccountId を指定します。
var accountId ="yourDestinationBucketAccountId";
// ソースバケット内のすべてのファイルを読み取り、宛先バケットにファイルを書き込む権限を持つロールの名前を指定します。
var roleArn ="yourDestinationBucketRoleArn";
// インベントリ結果が格納されるバケットの名前を指定します。
var destBucketName ="yourDestinationBucketName";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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 config = new InventoryConfiguration();
// インベントリルール名を設定します。
config.Id = "report1";
// インベントリ設定が有効かどうかを示すフラグ。 有効な値:true と false。 値を true に設定すると、インベントリ設定が有効になります。
config.IsEnabled = true;
// プレフィックスでオブジェクトをフィルタリングするようにインベントリフィルター ルールを設定します。
config.Filter = new InventoryFilter("filterPrefix");
// インベントリの宛先バケット設定を作成します。
config.Destination = new InventoryDestination();
config.Destination.OSSBucketDestination = new InventoryOSSBucketDestination();
// インベントリのフォーマットを設定します。
config.Destination.OSSBucketDestination.Format = InventoryFormat.CSV;
// インベントリ結果が格納される宛先バケットを所有するユーザーの AccountId。
config.Destination.OSSBucketDestination.AccountId = accountId;
// インベントリ結果が格納される宛先バケットの roleArn。
config.Destination.OSSBucketDestination.RoleArn = roleArn;
// インベントリ結果が格納される宛先バケットの名前。
config.Destination.OSSBucketDestination.Bucket = destBucketName;
// インベントリ結果のストレージパスのプレフィックスを設定します。
config.Destination.OSSBucketDestination.Prefix = "prefix1";
// インベントリの生成スケジュールを設定します。 次の例は、週次生成用です。 Weekly は週次生成に対応し、Daily は日次生成に対応します。
config.Schedule = new InventorySchedule(InventoryFrequency.Daily);
// インベントリに含めるオブジェクトバージョンを現在のバージョンに設定します。 これを InventoryIncludedObjectVersions.All に設定すると、すべてのオブジェクトバージョンが含まれます。 これは、バージョン管理が有効な場合にのみ有効になります。
config.IncludedObjectVersions = InventoryIncludedObjectVersions.All;
// インベントリに含めるオブジェクトプロパティを設定します。
config.OptionalFields.Add(InventoryOptionalField.Size);
config.OptionalFields.Add(InventoryOptionalField.LastModifiedDate);
config.OptionalFields.Add(InventoryOptionalField.StorageClass);
config.OptionalFields.Add(InventoryOptionalField.IsMultipartUploaded);
config.OptionalFields.Add(InventoryOptionalField.EncryptionStatus);
config.OptionalFields.Add(InventoryOptionalField.ETag);
var req = new SetBucketInventoryConfigurationRequest(bucketName, config);
client.SetBucketInventoryConfiguration(req);
Console.WriteLine("Set bucket:{0} InventoryConfiguration succeeded", bucketName);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}インベントリ設定の表示
次のコードは、バケットのインベントリ設定を表示する方法の例です。
using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントに endpoint を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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");
// バケット名を指定します。
var bucketName = "examplebucket";
// インベントリルール名を指定します。
var id = "BucketInventoryConfigurationId";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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
{
// 指定された ID のインベントリ設定情報を表示します。
var request = new GetBucketInventoryConfigurationRequest(bucketName, id);
// バケットインベントリを取得します。
var result = client.GetBucketInventoryConfiguration(request);
Console.WriteLine("Get bucket:{0} BucketInventoryConfiguration succeeded ", bucketName);
// バケットインベントリ情報を出力します。
Console.WriteLine("bucket InventoryConfiguration id: {0}; bucket InventoryConfiguration IsEnabled: {1}", result.Configuration.Id, result.Configuration.IsEnabled);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}インベントリ設定の一覧表示
1 回のリクエストで取得できるインベントリ設定は最大 100 件です。 100 件を超えるインベントリ設定を取得するには、複数のリクエストを送信する必要があります。 前のリクエストから返されたトークンを次のリクエストのパラメーターとして使用します。
次のコードは、バケットのインベントリ設定を一覧表示する方法の例です。
using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントに endpoint を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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");
// バケット名を指定します。
var bucketName = "examplebucket";
// インベントリルール名を指定します。
var id = "BucketInventoryConfigurationId";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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
{
// インベントリ設定項目を一覧表示します。 デフォルトでは、一度に最大 100 件の結果が一覧表示されます。 100 件を超える設定がある場合、結果はページ単位で返されます。 トークンを渡して次のページを一覧表示します。
string continuationToken = null;
bool isTruncated = false;
do {
var request = new ListBucketInventoryConfigurationRequest(bucketName, continuationToken)
var result = client.ListBucketInventoryConfiguration(request);
Console.WriteLine("List bucket:{0} BucketInventoryConfiguration succeeded ", bucketName);
//バケットインベントリ情報を出力します。
for (var i = 0; i < result.Configurations.Count; i++) {
Console.WriteLine("bucket InventoryConfiguration id: {0}; bucket InventoryConfiguration IsEnabled: {1}", result.Configurations[i].Id, result.Configurations[i].IsEnabled);
}
continuationToken = result.NextContinuationToken;
isTruncated = result.IsTruncated;
} while (isTruncated)
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}インベントリ設定の削除
次のコードは、バケットのインベントリ設定を削除する方法の例です。
using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントに endpoint を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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");
// バケット名を指定します。
var bucketName = "examplebucket";
// インベントリルール名を指定します。
var id = "BucketInventoryConfigurationId";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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
{
// 指定された ID のインベントリ設定を削除します。
var request = new DeleteBucketInventoryConfigurationRequest(bucketName, id);
var result = client.DeleteBucketInventoryConfiguration(request);
Console.WriteLine("delete bucket:{0} BucketInventoryConfiguration succeeded ", bucketName);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}関連ドキュメント
バケットのインベントリ設定を追加するための API 操作の詳細については、「PutBucketInventory」をご参照ください。
バケットのインベントリ設定を表示するための API 操作の詳細については、「GetBucketInventory」をご参照ください。
バケットのインベントリ設定を一覧表示するための API 操作の詳細については、「ListBucketInventory」をご参照ください。
バケットのインベントリ設定を削除するための API 操作の詳細については、「DeleteBucketInventory」をご参照ください。