Object Storage Service (OSS) に保存されているオブジェクトは、キー、データ、およびオブジェクトメタデータで構成されています。オブジェクトメタデータは、オブジェクト属性を記述します。オブジェクトメタデータには、標準 HTTP ヘッダーとユーザーメタデータが含まれます。標準 HTTP ヘッダーを構成することにより、オブジェクトキャッシュポリシーや強制オブジェクトダウンロードポリシーなどのカスタム HTTP リクエストポリシーを作成できます。また、オブジェクトの目的または属性を識別するために、オブジェクトのユーザーメタデータを構成することもできます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントが使用されています。 OSS と同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスが作成されます。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトメタデータを構成するには、
oss:PutObject権限が必要です。オブジェクトメタデータを照会するには、oss:GetObject権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。
HTTP ヘッダーの構成
examplebucket バケットの exampledir ディレクトリにある exampleobject.txt オブジェクトの HTTP ヘッダーを構成する方法の例を、次のサンプルコードに示します。
HTTP ヘッダーの詳細については、「RFC 2616」をご参照ください。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマップするリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトの完全なパスを指定します。例: exampledir/exampleobject.txt。完全なパスにバケット名を含めないでください。
object_name = 'exampledir/exampleobject.txt'
# アップロードする文字列を指定します。
content = '{"age": 1}'
# HTTP ヘッダーを構成します。たとえば、Content-Type ヘッダーを 'application/json; charset=utf-8' に設定します。
bucket.put_object(object_name, content, headers={'Content-Type': 'application/json; charset=utf-8'})ユーザーメタデータの構成
examplebucket バケットの exampledir ディレクトリにある exampleobject.txt オブジェクトのユーザーメタデータを構成する方法の例を、次のサンプルコードに示します。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマップするリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトの完全なパスを指定します。例: exampledir/exampleobject.txt。完全なパスにバケット名を含めないでください。
object_name = 'exampledir/exampleobject.txt'
# アップロードする文字列を指定します。
content = 'a novel'
# ユーザーメタデータを構成します。ユーザーメタデータは、x-oss-meta- というプレフィックスが付いたカスタムヘッダーを指定することで構成されます。サンプルヘッダー: x-oss-meta-author。サンプル値: O. Henry。
bucket.put_object(object_name, content, headers={'x-oss-meta-author': 'O. Henry', 'Content-Type': 'application/json; charset=utf-8'})オブジェクトメタデータの変更
examplebucket バケットの exampledir ディレクトリにある exampleobject.txt オブジェクトのメタデータを変更する方法の例を、次のサンプルコードに示します。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマップするリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトの完全なパスを指定します。例: exampledir/exampleobject.txt。完全なパスにバケット名を含めないでください。
object_name = 'exampledir/exampleobject.txt'
# オブジェクトメタデータを変更します。
bucket.update_object_meta(object_name, {'x-oss-meta-author': 'O. Henry'})
# bucket.update_object_meta メソッドを使用するたびに、ユーザーメタデータが更新されます。
bucket.update_object_meta(object_name, {'Content-Type': 'text/plain'})オブジェクトメタデータの照会
OSS SDK for Python が提供するメソッドを使用して、オブジェクトメタデータを照会できます。
メソッド | 説明 | 備考 |
get_object_meta | オブジェクトの ETag、サイズ、最終変更時刻、CRC64-ECMA など、オブジェクトメタデータの一部を照会します。 | 軽量で高速なリクエストであり、基本情報の一部のみを取得する必要があるシナリオに適しています。 |
head_object | Content-Length、Content-Type、storage-class、Content-MD5、CRC64-ECMA など、オブジェクトのすべてのメタデータを照会します。 | より包括的であり、オブジェクトに関するすべての情報が必要なシナリオに適しています。 |
examplebucket バケットの exampledir ディレクトリにある exampleobject.txt オブジェクトのメタデータを照会する方法の例を、次のサンプルコードに示します。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマップするリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトの完全なパスを指定します。例: exampledir/exampleobject.txt。完全なパスにバケット名を含めないでください。
object_name = 'exampledir/exampleobject.txt'
# get_object_meta メソッドを使用して、オブジェクトメタデータの一部を照会します。
simplifiedmeta = bucket.get_object_meta(object_name)
# オブジェクトメタデータの一部を表示します。
print("Last-Modified: " + simplifiedmeta.headers['Last-Modified']) # オブジェクトの最終変更時刻を照会します。
print("Content-Length: " + simplifiedmeta.headers['Content-Length']) # オブジェクトのサイズを照会します。
print("ETag: " + simplifiedmeta.headers['ETag']) # オブジェクトの ETag を照会します。
# アクセストラッキングを有効にした後、オブジェクトの最終アクセス時刻を含むオブジェクトメタデータを照会します。オブジェクトの最終アクセス時刻を照会するには、OSS SDK for Python 2.16.1 以降のみを使用できます。
# print(simplifiedmeta.headers['x-oss-last-access-time'])
# head_object メソッドを使用して、すべてのオブジェクトメタデータを照会します。
objectmeta = bucket.head_object(object_name)
# この例では、オブジェクトメタデータの一部のみが表示されます。他のオブジェクトメタデータを表示するためのコード行を追加できます。
# オブジェクトメタデータの一部を表示します。
print("Content-Type: " + objectmeta.headers['Content-Type']) # オブジェクトの MIME タイプを照会します。
print("Content-MD5: " + objectmeta.headers['Content-MD5']) # オブジェクトの MD5 ハッシュを照会します。
print("x-oss-storage-class: " + objectmeta.headers['x-oss-storage-class']) # オブジェクトのストレージタイプを照会します。
print("x-oss-hash-crc64ecma: " + objectmeta.headers['x-oss-hash-crc64ecma']) # オブジェクトの CRC64-ECMA を照会します。
# すべてのヘッダーを出力します。
# すべてのヘッダーを出力するには、次のコードのコメントを解除します。
# print("\n all headers:")
# for key, value in objectmeta.headers.items():
# print(f"{key}: {value}")関連情報
オブジェクトメタデータの詳細については、「オブジェクトメタデータの管理」をご参照ください。
シンプルアップロードを実行するときにオブジェクトメタデータを構成するために呼び出すことができる API 操作の詳細については、「PutObject」をご参照ください。
オブジェクトメタデータを照会するために呼び出すことができる API 操作の詳細については、「GetObjectMeta」および「HeadObject」をご参照ください。