バケットインベントリ機能は、バケット内のオブジェクトに関するメタデータ(オブジェクト数、サイズ、ストレージクラス、暗号化状態など)をスケジュールに従って定期的にエクスポートします。オブジェクト数が非常に多いバケットでは、GetBucket (ListObjects) API オペレーションの代わりにバケットインベントリをご利用ください。GetBucket (ListObjects) とは異なり、バケットインベントリは非同期でスケジュールに基づいて実行されます。
バケットインベントリでは、以下の項目を設定できます。
レポートに含めるオブジェクトのメタデータフィールド
すべてのオブジェクトバージョンを含めるか、現在のバージョンのみを含めるか
インベントリリストを保存する送信先バケット
エクスポート頻度(週次)
インベントリリストファイルの暗号化
このトピックでは、ossutil の inventory コマンドを使用して、バケットインベントリを作成、クエリ、一覧表示、および削除する方法について説明します。
前提条件
作業を開始する前に、以下の条件を満たしていることを確認してください。
インベントリを作成するための
oss:PutBucketInventory権限インベントリをクエリするための
oss:GetBucketInventory権限インベントリを削除するための
oss:DeleteBucketInventory権限ソースバケットからオブジェクトを読み取り、送信先バケットに書き込む権限を持つ Resource Access Management (RAM) ロール(インベントリ作成時に必須)
RAM ユーザーに権限を付与する方法については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。
注意事項
ossutil 1.6.16 以降のバージョンでは、オペレーティングシステムに関係なくバイナリ名として直接
ossutilを使用します。ossutil 1.6.16 より前のバージョンでは、オペレーティングシステム固有のバイナリ名を使用します。詳細については、「ossutil コマンドリファレンス」をご参照ください。バケットインベントリ機能の詳細については、「バケットインベントリ」をご参照ください。
インベントリの作成
インベントリの作成には、次の 3 つのステップが必要です。RAM ロールの設定、XML 構成ファイルの作成、および put コマンドの実行です。
ステップ 1:RAM ロールの作成
ソースバケットからすべてのオブジェクトを読み取り、送信先バケットにオブジェクトを書き込む権限を持つ RAM ロールを作成します。詳細については、「信頼された Alibaba Cloud サービス用の RAM ロールを作成する」をご参照ください。
ステップ 2:XML 構成ファイルの作成
インベントリ構成を定義するローカル XML ファイルを作成します。以下の例では、examplebucket バケットに対して inventorytest という名前のインベントリを定義しています。OSS は、プレフィックスが dir/ のすべてのオブジェクトのメタデータを週次で destbucket にエクスポートします。エクスポートされるフィールドには、ストレージクラス、最終更新日時、フラグメントアップロードの状態、ETag、暗号化状態、およびサイズが含まれます。インベントリリストは SSE-OSS を使用して暗号化されます。
<?xml version="1.0" encoding="UTF-8"?>
<InventoryConfiguration>
<Id>inventorytest</Id>
<IsEnabled>true</IsEnabled>
<Filter>
<Prefix>dir/</Prefix>
</Filter>
<Destination>
<OSSBucketDestination>
<Format>CSV</Format>
<AccountId>1746495857602745</AccountId>
<RoleArn>acs:ram::174649585760****:role/AliyunOSSRole</RoleArn>
<Bucket>acs:oss:::destbucket</Bucket>
<Encryption>
<SSE-OSS></SSE-OSS>
</Encryption>
</OSSBucketDestination>
</Destination>
<Schedule>
<Frequency>Weekly</Frequency>
</Schedule>
<IncludedObjectVersions>All</IncludedObjectVersions>
<OptionalFields>
<Field>LastModifiedDate</Field>
<Field>StorageClass</Field>
<Field>IsMultipartUploaded</Field>
<Field>ETag</Field>
<Field>EncryptionStatus</Field>
<Field>Size</Field>
</OptionalFields>
</InventoryConfiguration>主な XML フィールドは以下のとおりです。
| フィールド | 説明 |
|---|---|
Id | このインベントリの一意な識別子です。同じ ID を持つインベントリがすでに存在する場合、リクエストは HTTP ステータスコード 409 を返します。 |
IsEnabled | インベントリがアクティブかどうかを指定します。true に設定すると有効になります。 |
Filter > Prefix | (省略可)このプレフィックスを含むオブジェクト名を持つオブジェクトのメタデータのみをエクスポートします。省略した場合は、すべてのオブジェクトが対象となります。 |
Format | 出力ファイル形式です。サポートされる値:CSV。 |
AccountId | 送信先バケットを所有する Alibaba Cloud アカウントの ID です。 |
RoleArn | 送信先バケットへの書き込みを許可された RAM ロールの ARN です。 |
Bucket | acs:oss:::<bucket-name> 形式の送信先バケットです。 |
Encryption | (省略可)インベントリリストの暗号化方式です。サポートされる方式:SSE-OSS。 |
Frequency | エクスポートスケジュールです。サポートされる値:Weekly。 |
IncludedObjectVersions | 含めるオブジェクトバージョンです。サポートされる値:All(すべてのバージョン)、Current(現在のバージョンのみ)。 |
OptionalFields > Field | 含める追加のメタデータフィールドです。サポートされる値:LastModifiedDate、StorageClass、IsMultipartUploaded、ETag、EncryptionStatus、Size。 |
ステップ 3:put コマンドの実行
構文:
ossutil inventory --method put oss://<bucket-name> <local-xml-file>パラメーター:
| パラメーター | 説明 |
|---|---|
bucket-name | インベントリを作成するバケットの名前です。 |
local-xml-file | ローカル XML 構成ファイルのパス(例:localfile.xml)です。 |
例:
ossutil inventory --method put oss://examplebucket localfile.xml期待される出力:
0.299514(s) elapsed1 つのバケットに対して複数のインベントリを作成できます。各インベントリはそのIdによって一意に識別されます。指定されたIdがすでに存在する場合、リクエストは HTTP ステータスコード 409 を返します。
特定のインベントリのクエリ
構文:
ossutil inventory --method get oss://<bucket-name> <inventory-id> [--local_xml_file <file>]パラメーター:
| パラメーター | 説明 |
|---|---|
bucket-name | バケットの名前です。 |
inventory-id | クエリするインベントリの ID です。 |
--local_xml_file | (省略可)インベントリ構成を保存するローカルファイルです。指定しない場合、出力は端末に表示されます。 |
例:
ossutil inventory --method get oss://examplebucket inventorytest localfile.txt期待される出力:
0.212407(s) elapsedバケットのすべてのインベントリの一覧表示
構文:
ossutil inventory --method list oss://<bucket-name> [--local_xml_file <file>] [--marker <value>]パラメーター:
| パラメーター | 説明 |
|---|---|
bucket-name | バケットの名前です。 |
--local_xml_file | (省略可)インベントリリストを保存するローカルファイルです。指定しない場合、出力は端末に表示されます。 |
--marker | (省略可)インベントリのプレフィックスベースのフィルター条件です。指定されたプレフィックスを含むオブジェクト名を持つオブジェクトに対してのみインベントリリストが生成されます。指定しない場合、バケット内のすべてのオブジェクトに対してインベントリリストが生成されます。 |
例:
ossutil inventory --method list oss://examplebucket localfile.txt dest期待される出力:
0.216897(s) elapsedインベントリの削除
構文:
ossutil inventory --method delete oss://<bucket-name> <inventory-id>パラメーター:
| パラメーター | 説明 |
|---|---|
bucket-name | バケットの名前です。 |
inventory-id | 削除するインベントリの ID です。 |
例:
ossutil inventory --method delete oss://examplebucket inventorytest期待される出力:
0.212407(s) elapsed共通オプション
別のリージョンにあるバケットや、別の Alibaba Cloud アカウントが所有するバケットにアクセスするには、任意の inventory コマンドの末尾に以下の関連オプションを追加します。
| オプション | 説明 |
|---|---|
-e <endpoint> | バケットが配置されているリージョンのエンドポイント(例:oss-cn-hangzhou.aliyuncs.com)です。 |
-i <AccessKey-ID> | バケットを所有するアカウントの AccessKey ID です。 |
-k <AccessKey-secret> | バケットを所有するアカウントの AccessKey Secret です。 |
例 — 別のアカウントが所有し、中国 (杭州) リージョンにあるバケットに対してインベントリを作成する場合:
ossutil inventory --method put oss://examplebucket local_xml_file -e oss-cn-hangzhou.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret一般的なオプションの完全な一覧については、「一般的なオプション」をご参照ください。