Object Storage Service (OSS) は、オブジェクトメタデータを使用してオブジェクト属性を記述します。 オブジェクトメタデータには、標準HTTPヘッダーとユーザーメタデータが含まれます。 HTTPヘッダーを使用してHTTPリクエストのカスタムポリシーを指定し、ユーザーメタデータを使用してオブジェクトの目的や属性を識別できます。 set-metaコマンドを実行して、アップロードされたオブジェクトのメタデータを設定、変更、または削除できます。
このトピックのサンプルコマンドラインは、64ビットLinuxシステムに基づいています。 他のシステムの場合は、を交換します。対応するバイナリ名を持つコマンドの /ossutil64。 詳細は、「ossutilコマンドリファレンス」をご参照ください。
set-metaコマンドを実行してオブジェクトメタデータを設定または更新した後、statコマンドを実行してオブジェクトメタデータを表示できます。 詳細は、「stat」をご参照ください。
コマンド構文
. /ossutil64 set-meta oss:// bucketname[/prefix]
[header:value#header:value...]
[-- 更新]
[-- 削除]
[-r, -- recursive]
[-f, -- force]
[-- object-file, <value>]
[-- snapshot-path, <value>]
[-- disable-無視-エラー]
[-- version <value>]
[-- include <value>]
[-- exclude <value>]
次の表に、set-metaコマンドを実行するために設定できるオプションを示します。
パラメーター | 説明 |
bucketname | メタデータを管理するオブジェクトが格納されているバケットの名前。 |
プレフィックス | バケットに保存されているリソース (ディレクトリやオブジェクトなど) 。 |
header:value#header:value... | オブジェクトメタデータの識別に使用されるキーと値のペア。 ヘッダーは大文字と小文字を区別しませんが、値は大文字と小文字を区別します。 複数のメタデータセットを設定する場合は、メタデータセットを番号記号 (#) で区切ります。 例: 次のヘッダーを設定できます。 を持つヘッダーヘッダーの使用方法の詳細については、「オブジェクトメタデータの管理」をご参照ください。 |
-- 更新 | オブジェクトメタデータを更新します。 このオプションは -uに短縮でき、-- deleteと共に使用することはできません。 |
-- 削除 | オブジェクトメタデータを削除します。 このオプションは -- updateと共に使用できません。 |
-r, -- recursive | メタデータを設定できるオブジェクトを指定します。 このオプションを指定すると、バケット内の名前に特定のプレフィックスが含まれるすべてのオブジェクトのメタデータが設定されます。 このオプションを指定しない場合、ossutilは特定のオブジェクトに対してのみメタデータを構成します。 |
-f, -- force | 操作を強制的に実行することを指定します。 操作は確認のプロンプトなしで実行されます。 |
-- object-file | 一度に複数のオブジェクトのメタデータを構成、更新、または削除します。 このオプションを使用するには、次の手順を実行します。
説明 オブジェクトの1つが実行されているときにエラーが発生した場合、ossutilはそのオブジェクトに関するエラー情報をレポートファイルに記録し、他のオブジェクトのメタデータを構成します。 メタデータを設定、更新、または削除するオブジェクトの情報はレポートファイルに記録されません。 |
-- snapshot-path | 生成されるスナップショット。 このオプションを指定した場合、ossutilはこの操作に関連するオブジェクトに対してのみスナップショットを生成します。 この操作に関連するオブジェクトのスナップショットがすでに生成されている場合、この操作は無視されます。 説明 このオプションは、-r、-- recursiveまたは -- object-fileと共に使用する必要があります。 |
-- disable-無視-エラー | バッチ操作中にエラーが無視されないように指定します。 |
-- version-id | メタデータを管理するオブジェクトのバージョンID。 このオプションは、バケットのバージョン管理ステータスが有効または一時停止されている場合にのみ適用されます。 |
-含める | 指定された条件を満たすすべてのオブジェクトにコマンドが適用されることを指定します。 詳細については、「Options -- include and -- exclude」をご参照ください。 |
-除外 | 指定された条件を満たさないすべてのオブジェクトにコマンドが適用されることを指定します。 詳細については、「Options -- include and -- exclude」をご参照ください。 |
オブジェクトメタデータの設定または更新
-- updateオプションを含まない次のサンプルコマンドでは、header:value#header:value... を指定しないと、X-Oss-Meta-
で始まるユーザーメタデータのみが保持され、ユーザーメタデータの値は変更されません。 HTTPヘッダーの場合、ossutilはインタラクティブモードを使用して、これらのヘッダーを保持するかどうかを尋ねます。
例1: 単一オブジェクトのメタデータの設定または更新
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトのアクセス制御リスト (ACL) をprivateに設定します。
. /ossutil64 set-meta oss:// examplebucket/exampleobject.txt X-Oss-Object-Acl:private
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトの特定のバージョンのストレージクラスをStandardに設定します。
. /ossutil64 set-meta oss:// examplebucket/exampleobject.txt X-Oss-Storage-Class:Standard -- version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトの特定のバージョンのストレージクラスをCold Archiveに設定します。
. /ossutil64 set-meta oss:// examplebucket/exampleobject.txt X-Oss-Storage-Class:ColdArchive -- version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk
説明set-metaコマンドを実行しても、ストレージクラスは変更されません。 ストレージクラスは、コマンドを実行した後にのみ変更されます。
オブジェクトのバージョンを照会する方法の詳細については、「Is」をご参照ください。
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトのACLをpublic-readに設定します。
. /ossutil64 set-meta oss:// examplebucket/exampleobject.txt X-Oss-Object-Acl:public-read -- update
-- updateオプションを使用すると、宛先オブジェクトの指定されたヘッダーに一致するメタデータのみが更新され、オブジェクトヘッダーの値は指定されたヘッダーの値に置き換えられます。 指定したヘッダーの値は空のままにできます。 値を空のままにすると、ヘッダーの値は変更されません。 上記の例では、exampleobject.txtオブジェクトのACLがpublic-readに更新され、オブジェクトの他のメタデータは変更されません。
例2: 同じディレクトリ内の複数のオブジェクトのメタデータを同時に設定または更新する
いずれかのオブジェクトのメタデータが構成または変更されているときにエラーが発生した場合、ossutilはそのオブジェクトに関するエラー情報をossutil_outputディレクトリのレポートファイルに記録します。 メタデータが設定または更新されたオブジェクトに関する情報は、レポートファイルに記録されません。
名前に特定のプレフィックスが含まれるオブジェクトのメタデータを設定する
次のコマンドでは、-rオプションを使用して、オブジェクトのキャッシュ動作をno-cacheに変更し、オブジェクトのACLをprivateに変更する方法の例を示します。 オブジェクトの名前にはsrcプレフィックスが含まれ、オブジェクトはexamplebucketに格納されます。
. /ossutil64 set-meta oss:// examplebucket/src Cache-Control:no-cache#X-Oss-Object-Acl:private -r
指定された条件を満たすオブジェクトのメタデータの変更
次のコマンドでは、-rおよび -uオプションを使用して、オブジェクトのストレージクラスを低頻度アクセス (IA) に変更する方法の例を示します。 オブジェクトのタイプはです。jpgに格納され、オブジェクトはexamplebucketのdesfolderディレクトリに格納されます。
. /ossutil64 set-meta oss:// examplebucket/desfolder/ X-Oss-Storage-Class:IA -- include "*.jpg" -u -r
次のコマンドでは、-rおよび -uオプションを使用してオブジェクトのストレージクラスをアーカイブに変更する方法の例を示します。 オブジェクトの名前にはabcが含まれます。 オブジェクトのタイプがjpgまたはtxtではなく、examplebucketのdesfolderディレクトリに保存されます。
. /ossutil64 set-meta oss:// examplebucket/desfolder/ X-Oss-Storage-Class:Archive -- include "* abc *" -- exclude "*.jpg" -- exclude "*.txt" -u -r
重要set-metaコマンドを実行して、サイズが100 MBを超えるCold ArchiveオブジェクトまたはDeep Cold Archiveオブジェクトのストレージクラスを変更すると、サーバーのタイムアウトにより操作が失敗することがあります。 サイズが100 MBを超えるCold ArchiveオブジェクトまたはDeep Cold Archiveオブジェクトのストレージクラスを変更するには、cpコマンドを実行することを推奨します。
例3: 同じまたは異なるディレクトリ内の複数のオブジェクトのメタデータを設定または更新する
異なるディレクトリ内の複数のオブジェクトのメタデータの設定または更新
たとえば、examplebucketバケットの異なるディレクトリにある次のオブジェクトのメタデータを設定または更新します。ルートディレクトリにはexampleobject1.jpgという名前のオブジェクト、dir1 /ディレクトリにはexampleobject2.pngという名前のオブジェクト、dir2 /ディレクトリにはexampleobject3.txtという名前のオブジェクトです。 オブジェクトのメタデータを設定または更新するには、次の手順を実行します。
メタデータを設定または更新するオブジェクトの名前をlocalfile.txtファイルに書き込みます。
exampleobject1.jpg dir1/exampleobject2.png dir2/exampleobject3.txt
オブジェクトのメタデータを設定または更新します。
次のコマンドでは、-- object-fileオプションを使用して、オブジェクトのキャッシュ動作をno-cacheに、オブジェクトのACLをprivateに変更し、スナップショットを有効にする方法の例を示します。
. /ossutil64 set-meta oss:// examplebucket Cache-Control:no-cache#X-Oss-Object-Acl:private -- update -- object-file localfile.txt -- snapshot-path dir/
同じディレクトリ内の複数のオブジェクトのメタデータの設定または更新
方法 1
同じディレクトリ内の複数のオブジェクトのメタデータを設定または更新する方法の詳細については、このトピックの「例3: 同じディレクトリまたは異なるディレクトリ内の複数のオブジェクトのメタデータを設定または更新する」の異なるディレクトリ内の操作を参照してください。
方法 2
同じディレクトリ内の複数のオブジェクトのメタデータを設定または更新する方法の詳細については、このトピックの「例2: 同じディレクトリ内の複数のオブジェクトのメタデータを同時に設定または更新する」を参照してください。
レスポンスの例
上記のコマンドが正常に実行されると、次のようなコマンド出力が返され、オブジェクトメタデータの設定または更新に費やされた時間が示されます。
0.106852経過
ユーザーメタデータの削除
-- deleteオプションを使用してユーザーメタデータを削除すると、X-Oss-Meta-
で始まるユーザーメタデータのみを削除できます。
例1: 単一のオブジェクトのユーザーメタデータの削除
次のコマンドは、examplebucketに格納されているexampleobject.txtオブジェクトの
X-Oss-Meta-
で始まるユーザーメタデータを削除する方法の例を示しています。 ユーザーメタデータの値は空のままにする必要があります。. /ossutil64 set-meta oss:// examplebucket/exampleobject.txt X-Oss-Meta-Createdby -- 削除
例2: 複数のオブジェクトのユーザーメタデータを同時に削除する
複数のオブジェクトのユーザーメタデータを同時に削除するには、次の手順を実行します。
ユーザーメタデータを削除するオブジェクトの名前をlocalfile.txtファイルに書き込みます。
exampleobject1.jpg dir1/exampleobject2.png dir2/exampleobject3.txt
オブジェクトのユーザーメタデータを削除します。
次のコマンドでは、-- object-fileオプションを使用して、examplebucketバケット内の複数のオブジェクトの
X-Oss-Meta-
で始まるユーザーメタデータを同時に削除する方法の例を示します。. /ossutil64 set-meta oss:// examplebucket X-Oss-Meta-Location -- delete -- object-file localfile.txt -- snapshot-path dir/
レスポンスの例
上記のコマンドが正常に実行されると、次のようなコマンド出力が返され、ユーザーメタデータの削除に費やされた期間が示されます。
0.106846経過
一般的なオプション
ossutilを使用して別のリージョンにあるバケットに切り替える場合は、コマンドに -eオプションを追加して、指定したバケットがあるリージョンのエンドポイントを指定します。 ossutilを使用して別のAlibaba Cloudアカウントに属するバケットに切り替える場合、コマンドに -iオプションを追加して、指定されたアカウントのAccessKey IDを指定し、コマンドに -kオプションを追加して、指定されたアカウントのAccessKeyシークレットを指定します。
たとえば、次のコマンドを実行して、中国 (上海) リージョンにあり、別のAlibaba Cloudアカウントが所有するtestbucketバケット内のtestobject.jpgオブジェクトのメタデータを設定できます。
. /ossutil64 set-meta oss:// testbucket/testobject.jpg X-Oss-Object-Acl:private -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA **** -k 67DLVBkH7EamOjy2W5RVAHUY9H ****
同期コマンドに使用できるその他の一般的なオプションの詳細については、「オプションの表示」をご参照ください。