すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:データインデックス作成

最終更新日:Feb 23, 2024

Object Storage Service (OSS) は、名前、ETag、ストレージクラス、サイズ、オブジェクトの最終変更時刻など、特定のメタデータ条件に一致するオブジェクトをクエリできるデータインデックス作成機能を提供します。 データインデックス機能は、ビジネス要件に基づいてクエリ結果をソートおよび集約します。 これにより、多数のオブジェクトから特定のオブジェクトを照会する効率が向上します。

使用上の注意

  • Python 2.1.6.0以降のOSS SDKのみがデータインデックス機能をサポートしています。

  • データインデックス機能は、中国 (杭州) およびオーストラリア (シドニー) リージョンにあるバケットでのみサポートされます。 詳細については、「データインデックス作成」をご参照ください。

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。

バケットのメタデータ管理機能の有効化

バケットのメタデータ管理機能を有効にする方法の例を次に示します。バケットのメタデータ管理機能を有効にすると、バケットのメタデータインデックスライブラリが作成され、バケット内のすべてのオブジェクトのメタデータインデックスが作成されます。 メタデータインデックスライブラリが作成された後、OSSはバケット内の増分オブジェクトに対して準リアルタイムスキャンを実行し、増分オブジェクトのメタデータインデックスを作成します。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'http:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# バケットのメタデータ管理機能を有効にします。 
bucket.open_bucket_meta_query() 

バケットのメタデータインデックスライブラリの照会

次のコードは、バケットのメタデータインデックスライブラリをクエリする方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'http:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# 指定されたバケットのメタデータインデックスライブラリ情報を照会します。 
get_result = bucket.get_bucket_meta_query_status()

# 状態を表示します。 
print(get_result.state) 

特定の条件を満たすオブジェクトのクエリ

次のサンプルコードは、特定の条件を満たすオブジェクトをクエリし、特定のフィールドとソート方法に基づいてオブジェクト情報を一覧表示する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからMetaQuery、AggregationsRequestをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'http:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# 特定の条件を満たすオブジェクトを照会し、特定のフィールドとソート方法に基づいてオブジェクト情報を一覧表示します。 
#1 MB未満のオブジェクトを照会し、一度に最大10個のオブジェクトを返し、オブジェクトを昇順で並べ替えます。 
do_meta_query_request = MetaQuery(max_results=10、query='{"Field": "Size" 、"Value": "1048576" 、"Operation": "lt"}' 、sort='Size' 、order='asc')
result = bucket.do_bucket_meta_query(do_meta_query_request)

# オブジェクト名を表示します。 
print(result.files[0].file_name)
# オブジェクトのETagsを表示します。 
print(result.files[0].etag)
# オブジェクトのタイプを表示します。 
print(result.files[0].oss_object_type)
# オブジェクトのストレージクラスを表示します。 
print(result.files[0].oss_storage_class)
# オブジェクトのCRC-64値を表示します。 
print(result.files[0].oss_crc64)
# オブジェクトのアクセス制御リスト (ACL) を表示します。 
print(result.files[0].object_acl) 

バケットのメタデータ管理機能を無効にする

次のコードは、指定したバケットのメタデータ管理機能を無効にする方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'http:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# バケットのメタデータ管理機能を無効にします。 
bucket.close_bucket_meta_query() 

参考資料

  • メタデータ管理機能を有効にするために呼び出すことができるAPI操作の詳細については、「OpenMetaQuery」をご参照ください。

  • メタデータインデックスライブラリに関する情報を照会するために呼び出すAPI操作の詳細については、「GetMetaQueryStatus」をご参照ください。

  • 特定の条件を満たすオブジェクトを照会し、特定のフィールドとソート方法に基づいてオブジェクト情報を一覧表示するために呼び出すAPI操作の詳細については、「DoMetaQuery」をご参照ください。

  • メタデータ管理機能を無効にするために呼び出すことができるAPI操作の詳細については、「CloseMetaQuery」をご参照ください。