Hanya SDK OSS untuk Java, Python, dan Go yang mendukung penggunaan fitur pengindeksan data untuk menyaring objek berdasarkan kondisi tertentu. Sebelum menggunakan fitur ini, aktifkan manajemen metadata untuk bucket yang bersangkutan.
Java
package com.aliyun.sts.sample;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
public class Demo {
// Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
private static String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah yang sesuai dengan endpoint. Contoh: cn-hangzhou.
private static String region = "cn-hangzhou";
// Tentukan nama bucket. Contoh: examplebucket.
private static String bucketName = "examplebucket";
public static void main(String[] args) throws Exception {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya saat OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Secara eksplisit nyatakan penggunaan algoritma tanda tangan V4.
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Tetapkan jumlah maksimum objek yang ingin Anda kembalikan menjadi 100.
int maxResults = 100;
// Tentukan tanggal mulai dan tanggal akhir dari waktu modifikasi terakhir objek yang ingin Anda kueri. Dalam contoh ini, tanggal mulai diatur ke 1 Desember 2023 dan tanggal akhir diatur ke 31 Maret 2024.
String query = "{\n" +
" \"SubQueries\":[\n" +
" {\n" +
" \"Field\":\"FileModifiedTime\",\n" +
" \"Value\": \"2023-12-01T00:00:00.000+08:00\",\n" +
" \"Operation\":\"gt\"\n" +
" }, \n" +
" {\n" +
" \"Field\":\"FileModifiedTime\",\n" +
" \"Value\": \"2024-03-31T23:59:59.000+08:00\",\n" +
" \"Operation\":\"lt\"\n" +
" }\n" +
" ],\n" +
" \"Operation\":\"and\"\n" +
"}";
// Tentukan bahwa hasil yang dikembalikan diurutkan secara menaik berdasarkan nama objek.
String sort = "Filename";
DoMetaQueryRequest doMetaQueryRequest = new DoMetaQueryRequest(bucketName, maxResults, query, sort);
doMetaQueryRequest.setOrder(SortOrder.ASC);
DoMetaQueryResult doMetaQueryResult = ossClient.doMetaQuery(doMetaQueryRequest);
if (doMetaQueryResult.getFiles() != null) {
for (ObjectFile file : doMetaQueryResult.getFiles().getFile()) {
System.out.println("Nama File: " + file.getFilename());
// Kueri nilai ETag yang digunakan untuk mengidentifikasi isi objek.
System.out.println("ETag: " + file.getETag());
// Kueri daftar kontrol akses (ACL) objek.
System.out.println("ObjectACL: " + file.getObjectACL());
// Kueri jenis objek.
System.out.println("OssObjectType: " + file.getOssObjectType());
// Kueri kelas penyimpanan objek.
System.out.println("OssStorageClass: " + file.getOssStorageClass());
// Kueri jumlah tag objek.
System.out.println("TaggingCount: " + file.getOssTaggingCount());
if (file.getOssTagging() != null) {
for (Tagging tag : 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 (OSSException oe) {
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Pesan Kesalahan: " + ce.getMessage());
} finally {
// Matikan instance OSSClient.
ossClient.shutdown();
}
}
}
Python
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import MetaQuery, AggregationsRequest
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
# Tentukan nama bucket. Contoh: examplebucket.
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'examplebucket0703')
# Tentukan tanggal mulai dan tanggal akhir dari waktu modifikasi terakhir objek yang ingin Anda kueri. Dalam contoh ini, tanggal mulai diatur ke 1 Desember 2023 dan tanggal akhir diatur ke 31 Maret 2024.
do_meta_query_request = MetaQuery(max_results=100, query='{"SubQueries":[{"Field":"FileModifiedTime","Value": "2023-12-01T00:00:00.000+08:00","Operation":"gt"}, {"Field":"FileModifiedTime","Value": "2024-03-31T23:59:59.000+08:00","Operation":"lt"}],"Operation":"and"}', sort='Filename', order='asc')
result = bucket.do_bucket_meta_query(do_meta_query_request)
for s in result.files:
print(s.file_name)
print(s.etag)
print(s.oss_object_type)
print(s.oss_storage_class)
print(s.oss_crc64)
print(s.object_acl)
Go
package main
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func main() {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda.
client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan tanggal mulai dan tanggal akhir dari waktu modifikasi terakhir objek yang ingin Anda kueri. Dalam contoh ini, tanggal mulai diatur ke 1 Desember 2023 dan tanggal akhir diatur ke 31 Maret 2024.
query := oss.MetaQuery{
NextToken: "",
MaxResults: 100,
Query: `{
"SubQueries":[
{
"Field":"FileModifiedTime",
"Value": "2023-12-01T00:00:00.000+08:00",
"Operation":"gt"
},
{
"Field":"FileModifiedTime",
"Value": "2024-03-31T23:59:59.000+08:00",
"Operation":"lt"
}
],
"Operation":"and"
}`,
// Tentukan bahwa hasil yang dikembalikan diurutkan secara menaik berdasarkan nama objek.
Sort: "Filename",
Order: "asc",
}
// Kueri objek yang sesuai dengan kondisi tertentu dan daftarkan informasi objek berdasarkan bidang dan metode pengurutan tertentu.
result, err := client.DoMetaQuery("examplebucket", query)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("NextToken:%s\n", result.NextToken)
for _, file := range result.Files {
fmt.Printf("Nama File: %s\n", file.Filename)
fmt.Printf("Ukuran: %d\n", file.Size)
fmt.Printf("Waktu Modifikasi File:%s\n", file.FileModifiedTime)
fmt.Printf("Jenis Objek OSS:%s\n", file.OssObjectType)
fmt.Printf("Kelas Penyimpanan OSS:%s\n", file.OssStorageClass)
fmt.Printf("ACL Objek:%s\n", file.ObjectACL)
fmt.Printf("ETag:%s\n", file.ETag)
fmt.Printf("CRC64 OSS:%s\n", file.OssCRC64)
fmt.Printf("Jumlah Tagging OSS:%d\n", file.OssTaggingCount)
for _, tagging := range file.OssTagging {
fmt.Printf("Kunci Tagging OSS:%s\n", tagging.Key)
fmt.Printf("Nilai Tagging OSS:%s\n", tagging.Value)
}
for _, userMeta := range file.OssUserMeta {
fmt.Printf("Kunci Meta Pengguna OSS:%s\n", userMeta.Key)
fmt.Printf("Nilai Meta Pengguna OSS:%s\n", userMeta.Value)
}
}
}