すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSS SDK for Pythonを使用してオブジェクトメタデータを管理する

最終更新日:Feb 23, 2024

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」をご参照ください。