Object Storage Service (OSS) は、オブジェクトメタデータを使用してオブジェクトを記述します。 オブジェクトメタデータには、標準HTTPヘッダーとユーザーメタデータが含まれます。 HTTPヘッダーを使用してHTTPリクエストのカスタムポリシーを指定し、ユーザーメタデータを使用してオブジェクトの目的や属性を識別できます。 set-metaコマンドを実行して、オブジェクトのメタデータを設定、変更、または削除できます。
使用上の注意
単一のオブジェクトのメタデータを設定するには、
oss:GetObject
、oss:PutObject
、oss:GetObjectVersion
、およびoss:GetObjectAcl
権限が必要です。 一度に複数のオブジェクトのメタデータを設定するには、oss:GetObject
、oss:PutObject
、oss:GetObjectVersion
、およびoss:ListObjects
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。ossutil 1.6.16以降の場合、コマンドラインでossutilをバイナリ名として直接使用できます。 オペレーティングシステムに基づいてバイナリ名を更新する必要はありません。 1.6.16より前のossutilの場合、オペレーティングシステムに基づいてバイナリ名を更新する必要があります。 詳細は、「ossutilコマンドリファレンス」をご参照ください。
set-metaコマンドを実行してオブジェクトメタデータを設定または更新した後、statコマンドを実行してオブジェクトメタデータを表示できます。 詳細は、「stat」をご参照ください。
コマンド構文
ossutil set-meta oss://bucketname[/prefix]
[header:value#header:value...]
[--update]
[--delete]
[-r, --recursive]
[-f, --force]
[--object-file, <value>]
[--snapshot-path, <value>]
[--disable-ignore-error]
[--version <value>]
[--include <value>]
[--exclude <value>]
次の表に、コマンド構文のパラメーターとオプションを示します。
パラメータ /オプション | 説明 |
bucketname | バケットの名前です。 |
プレフィックス | バケット内のリソース (ディレクトリやオブジェクトなど) の名前のプレフィックス。 |
header:value#header:value... | キーと値のペアの形式のメタデータヘッダー。 ヘッダーキーは大文字と小文字を区別しませんが、ヘッダー値は大文字と小文字を区別します。 複数のメタデータヘッダーを設定する場合は、メタデータヘッダーを番号記号 (#) で区切ります。 例: 次のヘッダーを設定できます。
を持つヘッダー ヘッダーの使用方法の詳細については、「オブジェクトメタデータの管理」をご参照ください。 |
-- 更新 | オブジェクトメタデータを更新します。 このオプションは -uに短縮でき、-- deleteと共に使用することはできません。 |
-- 削除 | オブジェクトメタデータを削除します。 このオプションは -- updateと共に使用できません。 |
-r, -- recursive | メタデータを設定できるオブジェクトを指定します。 このオプションを指定すると、バケット内の指定されたプレフィックスを名前に含むすべてのオブジェクトのメタデータが設定されます。 このオプションを指定しない場合、ossutilは指定されたオブジェクトに対してのみメタデータを構成します。 |
-f, -- force | 確認を必要とせずに操作を強制します。 |
-- object-file | メタデータを一度に設定、更新、または削除するオブジェクトを指定します。 このオプションを使用するには、次の手順を実行します。
説明 いずれかのオブジェクトでエラーが発生した場合、ossutilはそのオブジェクトに関するエラー情報をレポートファイルに記録し、他のオブジェクトで操作を続行します。 メタデータを設定、更新、または削除するオブジェクトの情報はレポートファイルに記録されません。 |
-- snapshot-path | スナップショットのパス。 このオプションを指定した場合、ossutilはこの操作に関連するオブジェクトに対してのみスナップショットを生成します。 この操作に関連するオブジェクトのスナップショットがすでに生成されている場合、そのオブジェクトのスナップショットは再度生成されません。 説明 このオプションは、-r、-- recursiveまたは -- object-fileと共に使用する必要があります。 |
-- disable-無視-エラー | バッチ操作中のエラーを無視しないように指定します。 |
-- version-id | メタデータを管理するオブジェクトのバージョンID。 このオプションは、バケットのバージョン管理ステータスが有効または一時停止されている場合にのみ適用されます。 |
-含める | 指定された条件を満たすすべてのオブジェクトを含みます。 詳細については、「オプション -- includeおよび -- exclude」をご参照ください。 |
-除外 | 指定された条件を満たすすべてのオブジェクトを除外します。 詳細については、「オプション -- includeおよび -- exclude」をご参照ください。 |
オブジェクトメタデータの設定または更新
-- updateオプションを含まない次のサンプルコマンドでは、header:value#header:value... を指定しないと、X-Oss-Meta-
で始まるユーザーメタデータのみが保持され、ユーザーメタデータの値は変更されません。 HTTPヘッダーの場合、ossutilはインタラクティブモードを使用して、これらのヘッダーを保持するかどうかを尋ねます。
例1: 単一オブジェクトのメタデータの設定または更新
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトのアクセス制御リスト (ACL) をprivateに設定します。
ossutil set-meta oss:// examplebucket/exampleobject.txt X-Oss-Object-Acl:private
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトの特定のバージョンのストレージクラスをStandardに設定します。
ossutil set-meta oss:// examplebucket/exampleobject.txt X-Oss-Storage-Class:Standard -- version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトの特定のバージョンのストレージクラスをCold Archiveに設定します。
ossutil set-meta oss:// examplebucket/exampleobject.txt X-Oss-Storage-Class:ColdArchive -- version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk
説明ストレージクラスは、set-metaコマンドが完了する前に変更されません。 ストレージクラスは、コマンドが完了したときにのみ変更されます。
オブジェクトのバージョンを照会する方法の詳細については、「Is」をご参照ください。
次のコマンドを実行して、examplebucketバケット内のexampleobject.txtオブジェクトのACLをpublic-readに設定します。
ossutil set-meta oss:// examplebucket/exampleobject.txt X-Oss-Object-Acl:public-read -- update
-- updateオプションを使用すると、オブジェクトの指定されたヘッダーが指定された値に更新されます。 指定したヘッダーの値は空のままにできます。 指定したヘッダーの値を空のままにすると、元のヘッダー値は変更されません。 上記の例では、exampleobject.txtオブジェクトのACLがpublic-readに更新され、オブジェクトの他のメタデータは変更されません。
例2: 同じディレクトリ内の複数のオブジェクトのメタデータを同時に設定または更新する
いずれかのオブジェクトのメタデータが構成または変更されているときにエラーが発生した場合、ossutilはそのオブジェクトに関するエラー情報をレポートファイルのossutil_outputディレクトリに記録します。 メタデータが設定または更新されたオブジェクトに関する情報は、レポートファイルに記録されません。
名前に特定のプレフィックスが含まれるオブジェクトのメタデータを設定する
次のコマンドは、-rオプションを使用して、examplebucketバケット内の名前にsrcプレフィックスを持つオブジェクトのキャッシュ動作をno-cacheに、オブジェクトのACLをprivateに変更します。
ossutil set-meta oss:// examplebucket/src Cache-Control:no-cache#X-Oss-Object-Acl:private -r
指定された条件を満たすオブジェクトのメタデータの変更
次のコマンドは、. jpgメソッドを使用して、examplebucketバケットのdesfolderディレクトリ内のオブジェクトを低頻度アクセス (IA) に-rと-uオプション:
ossutil set-meta oss:// examplebucket/desfolder/ X-Oss-Storage-Class:IA -- include "*.jpg" -u -r
次のコマンドは、-rおよび -uオプションを使用して、次のオブジェクトのストレージクラスをアーカイブに変更します。非-JPGおよび非-TXTオブジェクトの名前にexamplebucket のdesfolderディレクトリにabcが含まれています。
ossutil 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に変更し、スナップショットを有効にする方法の例を示します。
ossutil 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-
で始まるユーザーメタデータを削除する方法の例を示しています。 ユーザーメタデータの値は空のままにする必要があります。ossutil 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-
で始まるユーザーメタデータを同時に削除する方法の例を示します。 メタデータヘッダーの値は空である必要があります。ossutil 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 secretを指定します。
たとえば、次のコマンドを実行して、中国 (上海) リージョンにあり、別のAlibaba Cloudアカウントが所有するtestbucketバケット内のtestobject.jpgオブジェクトのメタデータを設定できます。
ossutil set-meta oss:// testbucket/testobject.jpg X-Oss-Object-Acl:private -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA **** -k 67DLVBkH7EamOjy2W5RVAHUY9H ****
共通オプションの詳細については、「共通オプション」をご参照ください。