Object Storage Service (OSS) に保存されているオブジェクトは、キー、データ、およびオブジェクトメタデータで構成されます。 オブジェクトメタデータは、オブジェクト属性を記述する。 オブジェクトメタデータには、標準HTTPヘッダーとユーザーメタデータが含まれます。 標準のHTTPヘッダーを設定することで、オブジェクトキャッシュポリシーや強制オブジェクトダウンロードポリシーなどのカスタムHTTPリクエストポリシーを作成できます。 オブジェクトのユーザーメタデータを設定して、オブジェクトの目的や属性を識別することもできます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトメタデータを設定するには、
oss:PutObject
権限が必要です。 オブジェクトメタデータを照会するには、oss:GetObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
HTTP ヘッダーの設定
次のサンプルコードは、examplebucketバケットのexampledirディレクトリにあるexampleobject.txtオブジェクトのHTTPヘッダーを設定する方法の例を示しています。
HTTPヘッダーの詳細については、「RFC 2616」をご参照ください。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 例: 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オブジェクトのユーザーメタデータを設定する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 バケット名をフルパスに含めないでください。
object_name = 'exampledir/exampleobject.txt'
# アップロードする文字列を指定します。
content = 'a novel'
# x-oss-meta-の接頭辞を付ける必要があるユーザーメタデータを設定します。 ユーザーメタデータのサンプル名: x-oss-meta-author。 ユーザメタデータのサンプル値: O. ヘンリー
bucket.put_object(object_name, content, headers={'x-oss-meta-author': 'O) Henry' 、'Content-Type': 'application/json; charset=utf-8 '})
オブジェクトメタデータの変更
次のサンプルコードは、examplebucketバケットのexampledirディレクトリにあるexampleobject.txtオブジェクトのメタデータを変更する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 例: 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, {'x-oss-meta-price': '100 dollar'})
次のサンプルコードでは、Content-Typeなどのオブジェクトメタデータヘッダーを変更する方法の例を示します。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 例: 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、Content-Length、およびLastModifiedを照会します。 | より軽量で高速 |
head_object | オブジェクトのすべてのメタデータを照会します。 | なし |
次のサンプルコードは、examplebucketバケットのexampledirディレクトリにあるexampleobject.txtオブジェクトのメタデータを照会する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 バケット名をフルパスに含めないでください。
object_name = 'exampledir/exampleobject.txt'
# get_object_metaメソッドを使用して、オブジェクトメタデータの一部を照会します。
simplifiedmeta = bucket.get_object_meta(object_name)
print(simplifiedmeta.headers['Last-Modified'])
print(simplifiedmeta.headers['Content-Length'])
print(simplifiedmeta.headers['ETag'])
# アクセス追跡が有効になっている場合は、x-oss-last-access-timeメタデータヘッダーを照会します。 オブジェクトの最終アクセス時刻を照会するには、Python 2.16.1以降のOSS SDKのみを使用できます。
print(simplifiedmeta.headers['x-oss-last-access-time '])
# head_objectメソッドを使用して、すべてのオブジェクトメタデータヘッダーを照会します。
objectmeta = bucket.head_object(object_name)
# この例では、オブジェクトメタデータの一部のみが表示されます。 コード行を追加して、他のオブジェクトメタデータヘッダーを表示できます。
print(objectmeta.headers['Content-Type'])
print(objectmeta.headers['Last-Modified'])
print(objectmeta.headers['x-oss-object-type'])
参考資料
オブジェクトメタデータの詳細については、「オブジェクトメタデータの管理」をご参照ください。
単純なアップロード中にオブジェクトメタデータを設定するために呼び出すことができるAPI操作の詳細については、「PutObject」をご参照ください。
オブジェクトメタデータを照会するために呼び出すAPI操作の詳細については、「GetObjectMeta」および「HeadObject」をご参照ください。