全部产品
Search
文档中心

Object Storage Service:Kelola metadata objek menggunakan OSS SDK untuk Python 1.0

更新时间:Aug 16, 2025

Objek yang disimpan dalam Object Storage Service (OSS) terdiri dari kunci, data, dan metadata objek. Metadata objek menjelaskan atribut objek, termasuk header HTTP standar dan metadata pengguna. Anda dapat membuat kebijakan permintaan HTTP kustom seperti kebijakan cache objek dan kebijakan unduhan paksa objek dengan mengonfigurasi header HTTP standar. Selain itu, Anda dapat mengonfigurasi metadata pengguna untuk sebuah objek guna mengidentifikasi tujuan atau atributnya.

Catatan penggunaan

  • Dalam topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lain di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir OSS.

  • Dalam topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Layanan Token Keamanan (STS), lihat Inisialisasi.

  • Untuk mengonfigurasi metadata objek, Anda harus memiliki izin oss:PutObject. Untuk menanyakan metadata objek, Anda harus memiliki izin oss:GetObject. Untuk informasi lebih lanjut, lihat Lampirkan kebijakan kustom ke Pengguna RAM.

Konfigurasikan header HTTP

Contoh kode berikut menunjukkan cara mengonfigurasi header HTTP untuk objek exampleobject.txt di direktori exampledir bucket examplebucket.

Catatan

Untuk informasi lebih lanjut tentang header HTTP, lihat RFC 2616.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam jalur lengkap.
object_name = 'exampledir/exampleobject.txt'
# Tentukan string yang ingin Anda unggah.
content = '{"age": 1}'
# Konfigurasikan header HTTP. Misalnya, atur header Content-Type ke 'application/json; charset=utf-8'.
bucket.put_object(object_name, content, headers={'Content-Type': 'application/json; charset=utf-8'})

Konfigurasikan metadata pengguna

Contoh kode berikut menunjukkan cara mengonfigurasi metadata pengguna untuk objek exampleobject.txt di direktori exampledir bucket examplebucket:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam jalur lengkap.
object_name = 'exampledir/exampleobject.txt'
# Tentukan string yang ingin Anda unggah.
content = 'a novel'
# Konfigurasikan metadata pengguna. Metadata pengguna dikonfigurasi dengan menentukan header kustom dengan awalan x-oss-meta-. Contoh header: x-oss-meta-author. Contoh nilai: O. Henry.
bucket.put_object(object_name, content, headers={'x-oss-meta-author': 'O. Henry', 'Content-Type': 'application/json; charset=utf-8'})

Modifikasi metadata objek

Contoh kode berikut menunjukkan cara memodifikasi metadata objek exampleobject.txt di direktori exampledir bucket examplebucket:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam jalur lengkap.
object_name = 'exampledir/exampleobject.txt'
# Modifikasi metadata objek.
bucket.update_object_meta(object_name, {'x-oss-meta-author': 'O. Henry'})
# Setiap kali Anda menggunakan metode bucket.update_object_meta, metadata pengguna diperbarui.
bucket.update_object_meta(object_name, {'Content-Type': 'text/plain'})

Tanyakan metadata objek

Anda dapat menggunakan metode yang disediakan oleh OSS SDK untuk Python untuk menanyakan metadata objek.

Metode

Deskripsi

Catatan

get_object_meta

Tanyakan sebagian metadata objek, termasuk ETag, ukuran, waktu modifikasi terakhir objek, dan CRC64-ECMA.

Permintaan ringan, lebih cepat, cocok untuk skenario di mana hanya sebagian informasi dasar yang perlu diambil.

head_object

Menanyakan semua metadata objek, termasuk Content-Length, Content-Type, storage-class, Content-MD5, dan CRC64-ECMA.

Lebih komprehensif, cocok untuk skenario di mana semua informasi tentang objek diperlukan.

Contoh kode berikut menunjukkan cara menanyakan metadata objek exampleobject.txt di direktori exampledir bucket examplebucket:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam jalur lengkap.
object_name = 'exampledir/exampleobject.txt'

# Tanyakan sebagian metadata objek dengan menggunakan metode get_object_meta.
simplifiedmeta = bucket.get_object_meta(object_name)
# Tampilkan sebagian metadata objek.
print("Last-Modified: " + simplifiedmeta.headers['Last-Modified'])  # Tanyakan waktu modifikasi terakhir objek.
print("Content-Length: " + simplifiedmeta.headers['Content-Length'])  # Tanyakan ukuran objek.
print("ETag: " + simplifiedmeta.headers['ETag'])  # Tanyakan ETag objek.
# Tanyakan metadata objek, termasuk waktu akses terakhir objek, setelah Anda mengaktifkan pelacakan akses. Anda hanya dapat menggunakan OSS SDK untuk Python 2.16.1 dan versi lebih baru untuk menanyakan waktu akses terakhir objek.
# print(simplifiedmeta.headers['x-oss-last-access-time'])

# Tanyakan semua metadata objek dengan menggunakan metode head_object.
objectmeta = bucket.head_object(object_name)
# Dalam contoh ini, hanya sebagian metadata objek yang ditampilkan. Anda dapat menambahkan baris kode untuk menampilkan metadata objek lainnya.
# Tampilkan sebagian metadata objek.
print("Content-Type: " + objectmeta.headers['Content-Type'])  # Tanyakan jenis MIME objek.
print("Content-MD5: " + objectmeta.headers['Content-MD5'])  # Tanyakan hash MD5 objek.
print("x-oss-storage-class: " + objectmeta.headers['x-oss-storage-class'])  # Tanyakan kelas penyimpanan objek.
print("x-oss-hash-crc64ecma: " + objectmeta.headers['x-oss-hash-crc64ecma'])  # Tanyakan CRC64-ECMA objek.


# Keluarkan semua header.
# Hapus komentar pada kode berikut untuk mengeluarkan semua header.
# print("\n all headers:")
# for key, value in objectmeta.headers.items():
#     print(f"{key}: {value}")

Referensi

  • Untuk informasi lebih lanjut tentang metadata objek, lihat Kelola metadata objek.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonfigurasi metadata objek saat melakukan unggahan sederhana, lihat PutObject.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan metadata objek, lihat GetObjectMeta dan HeadObject.