Object Storage Service (OSS) は、名前、ETag、ストレージクラス、サイズ、オブジェクトの最終変更時刻など、特定のメタデータ条件に一致するオブジェクトをクエリできるデータインデックス作成機能を提供します。 データインデックス機能は、ビジネス要件に基づいてクエリ結果をソートおよび集約します。 これにより、多数のオブジェクトから特定のオブジェクトを照会する効率が向上します。
使用上の注意
Python 2.1.6.0以降のOSS SDKのみがデータインデックス機能をサポートしています。
データインデックス機能は、中国 (杭州) リージョンにあるバケットでのみサポートされます。
詳細については、「MetaSearch」をご参照ください。このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョン、エンドポイント、オープンポート」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
バケットのメタデータ管理機能の有効化
バケットのメタデータ管理機能を有効にする方法の例を次に示します。バケットのメタデータ管理機能を有効にすると、バケットのメタデータインデックスライブラリが作成され、バケット内のすべてのオブジェクトのメタデータインデックスが作成されます。 メタデータインデックスライブラリが作成された後、OSSはバケット内の増分オブジェクトに対して準リアルタイムスキャンを実行し、増分オブジェクトのメタデータインデックスを作成します。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket. Example: examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Enable the metadata management feature for the bucket.
bucket.open_bucket_meta_query()
バケットのメタデータインデックスライブラリの照会
次のコードは、バケットのメタデータインデックスライブラリをクエリする方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket. Example: examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Query the metadata index library information of a specified bucket.
get_result = bucket.get_bucket_meta_query_status()
# Display the state.
print(get_result.state)
特定の条件を満たすオブジェクトのクエリ
次のサンプルコードは、特定の条件を満たすオブジェクトをクエリし、特定のフィールドとソート方法に基づいてオブジェクト情報を一覧表示する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import MetaQuery, AggregationsRequest
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket. Example: examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Query objects that meet specific conditions and list the object information based on specific fields and sorting methods.
# Query objects that are smaller than 1 MB, return up to 10 objects at a time, and sort the objects in ascending order.
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)
# Display the object names.
print(result.files[0].file_name)
# Display the ETags of the objects.
print(result.files[0].etag)
# Display the types of the objects.
print(result.files[0].oss_object_type)
# Display the storage classes of the objects.
print(result.files[0].oss_storage_class)
# Display the CRC-64 values of the objects.
print(result.files[0].oss_crc64)
# Display the access control lists (ACLs) of the objects.
print(result.files[0].object_acl)
バケットのメタデータ管理機能を無効にする
次のコードは、指定したバケットのメタデータ管理機能を無効にする方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of the bucket. Example: examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Disable the metadata management feature for the bucket.
bucket.close_bucket_meta_query()
関連ドキュメント
メタデータ管理機能を有効にするために呼び出すことができるAPI操作の詳細については、「OpenMetaQuery」をご参照ください。
メタデータインデックスライブラリに関する情報を照会するために呼び出すAPI操作の詳細については、「GetMetaQueryStatus」をご参照ください。
特定の条件を満たすオブジェクトを照会し、特定のフィールドとソート方法に基づいてオブジェクト情報を一覧表示するために呼び出すAPI操作の詳細については、「DoMetaQuery」をご参照ください。
メタデータ管理機能を無効にするために呼び出すことができるAPI操作の詳細については、「CloseMetaQuery」をご参照ください。