データインデックス機能を使用して、特定の条件を満たすオブジェクトをクエリできるのは、OSS SDK for Java、OSS SDK for Python、およびOSS SDK for Goのみです。 データインデックス機能を使用してバケット内のオブジェクトをクエリする前に、バケットのメタデータ管理機能を有効にする必要があります。
Java
パッケージcom.aliyun.sts.sample;
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo delをインポートします。*;
public classデモ {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
プライベート静的文字列エンドポイント="https://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。 例: examplebucket.
プライベート静的文字列bucketName = "examplebucket";
public static void main(String[] args) throws Exception {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// 100に戻すオブジェクトの最大数を設定します。
int maxResults = 100;
// クエリするオブジェクトの最終変更時刻の開始日と終了日を指定します。 この例では、開始日は2023年12月1日に設定され、終了日は2024年3月31日に設定されています。
文字列クエリ="{\n" +
" \" SubQueries\":[\n" +
" {\n" +
" \" フィールド \":\" FileModifiedTime\",\n" +
" \" 値 \": \" 2023-12-01T00:00:00.000 + 08:00\",\n" +
" \" 操作 \":\" gt\"\n" +
" }, \n" +
" {\n" +
" \" フィールド \":\" FileModifiedTime\",\n" +
" \" 値 \": \" 2024-03-31T23:59:59.000 + 08:00\",\n" +
" \" 操作 \":\" lt\"\n" +
" }\n" +
" ],\n" +
" \" 操作 \":\" および \"\n" +
"}";
// 返された結果をオブジェクト名で昇順にソートするように指定します。
String sort = "Filename";
DoMetaQueryRequest doMetaQueryRequest=新しいDoMetaQueryRequest(bucketName、maxResults、query、sort);
doMetaQueryRequest.setOrder(SortOrder.ASC);
DoMetaQueryResult doMetaQueryResult = ossClient.doMetaQuery(doMetaQueryRequest);
if (doMetaQueryResult.getFiles() != null) {
for (ObjectFileファイル: doMetaQueryResult.getFiles().getFile()) {
System.out.println("Filename: " + file.getFilename());
// オブジェクトのコンテンツを識別するために使用されるETag値を照会します。
System.out.println("ETag: " + file.getETag());
// オブジェクトのアクセス制御リスト (ACL) を照会します。
System.out.println("ObjectACL: " + file.getObjectACL());
// オブジェクトのタイプを照会します。
System.out.println("OssObjectType: " + file.getOssObjectType());
// オブジェクトのストレージクラスを照会します。
System.out.println("OssStorageClass: " + file.getOssStorageClass());
// オブジェクトのタグ数を照会します。
System.out.println("TaggingCount: " + file.getOssTaggingCount());
if (file.getOssTagging() != null) {
for (タグ: file.getOssTagging().getTagging()) {
System.out.println("Key: " + tag.getKey());
System.out.println("Value: " + tag.getValue());
}
}
if (file.getOssUserMeta() != null) {
for (UserMeta meta : file.getOssUserMeta().getUserMeta()) {
System.out.println("Key: " + meta.getKey());
System.out.println("Value: " + meta.getValue());
}
}
}
}
} catch (Exception e) {
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Error Message: " + ce.getMessage());
} 最後に{
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
}
Python
# -*-コーディング: 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 ', 'examplebucket0703')
# クエリするオブジェクトの最終変更時刻の開始日と終了日を指定します。 この例では、開始日は2023年12月1日に設定され、終了日は2024年3月31日に設定されています。
do_meta_query_request = MetaQuery(max_results=100, query='{"SubQueries":[{"Field": "FileModifiedTime","Value": 2023-12-01T00:00:00.000 + 08: "Operation": "gt"}, {"Field": "FileModifiedTime": "+ 3100","-59.000" "lt"}],"Operation": "and"}', sort='Filename', order='asc')
result = bucket.do_bucket_meta_query(do_meta_query_request)
result.filesのsのために:
プリント (s.file_name)
プリント (s.etag)
print(s.oss_object_type)
print(s.oss_storage_class)
プリント (s.oss_crc64)
プリント (s.object_acl)
Go
パッケージメイン
import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// クエリするオブジェクトの最終変更時刻の開始日と終了日を指定します。 この例では、開始日は2023年12月1日に設定され、終了日は2024年3月31日に設定されています。
query := oss.MetaQuery {
NextToken: "" 、MaxResults: 100、クエリ: '{
"SubQueries":[
{
"フィールド":"FileModifiedTime" 、
"値": "2023-12-01T00:00:00.000 + 08:00" 、
"操作":"gt"
},
{
"フィールド":"FileModifiedTime" 、
"値": "2024-03-31T23:59:59.000 + 08:00" 、
"操作":"lt"
}
],
"操作":"と"
} ',
// 返された結果をオブジェクト名で昇順にソートするように指定します。
並べ替え: "Filename" 、注文: "asc" 、}
// 特定の条件に一致するオブジェクトを照会し、特定のフィールドとソート方法に基づいてオブジェクト情報をリストします。
result, err := client.DoMetaQuery("examplebucket", query)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("NextToken:% s\n", result.NextToken)
_, file := range result.Files {
fmt.Printf("ファイル名: % s\n", File. Filename)
fmt.Printf("size: % d\n", file.Size)
fmt.Printf("File Modified Time:% s\n", file.FileModifiedTime)
fmt.Printf("Oss Object Type:% s\n", file.OssObjectType)
fmt.Printf("Oss Storage Class:% s\n", file.OssStorageClass)
fmt.Printf("Object ACL:% s\n", file.ObjectACL)
fmt.Printf("ETag:% s\n", file.ETag)
fmt.Printf("Oss CRC64:% s\n", file.OssCRC64)
fmt.Printf("Oss Tagging Count:% d\n", file.OssTaggingCount)
for _, tagging := range file.OssTagging {
fmt.Printf("Oss Tagging Key:% s\n", tagging.Key)
fmt.Printf("Oss Tagging Value:% s\n", tagging.Value)
}
_, userMeta := range file.OssUserMeta {
fmt.Printf("Oss User Meta Key:% s\n", userMeta.Key)
fmt.Printf("Oss User Meta Key Value:% s\n", userMeta.Value)
}
}
}