Object Storage Service (OSS) では、オブジェクトタグを設定してオブジェクトを分類できます。 ライフサイクルルールを設定し、タグに基づいてオブジェクトへのアクセスを制御できます。
背景情報
オブジェクトのタグ付けを設定するときは、次の項目に注意してください。
オブジェクトのアップロード時およびアップロード後に、オブジェクトにタグを追加できます。 オブジェクトの既存のタグのキーとして追加するタグに同じキーを指定すると、既存のタグが上書きされます。 オブジェクトにタグを追加する方法の詳細については、「PutObjectTagging」をご参照ください。
オブジェクトにタグを追加するには、PutObjectTagging操作を呼び出す権限が必要です。
スクリプトを使用してカスタムポリシーを作成し、RAMユーザーに必要な権限を付与できます。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
オブジェクトの最後に変更された時刻は、オブジェクトのタグが変更されても更新されません。
オブジェクトは最大10個のタグを持つことができます。 オブジェクトに追加されるタグには、一意のキーが必要です。
タグキーの長さは最大128文字です。 タグ値の長さは最大256文字です。
タグキーとタグ値は大文字と小文字を区別します。
タグキーとタグ値には、英数字、スペース、および次の特殊文字を使用できます。
+ - = . _ : /
説明HTTPヘッダーにタグを設定し、タグに文字が含まれている場合は、タグキーとタグ値に対してURLエンコードを実行する必要があります。
オブジェクトのタグ付けでは、キーと値のペアを使用してオブジェクトを識別します。 オブジェクトタグの詳細については、「オブジェクトタグ付け」をご参照ください。
オブジェクトをアップロードするときにオブジェクトにタグを追加する
シンプルアップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、単純アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-OSS ') const client = new OSS({ // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 region: 'yourregion' 、 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 const objectName = 'exampledir/exampleobject.txt' // ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 // デフォルトでは、ローカルパスを指定せずにexamplefile.txtなどのローカルファイル名のみを指定すると、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 const localFilepath = 'D :\\ localpath\\examplefile.txt' // リクエストヘッダーを設定します。 const headers = { // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。 'x-oss-tagging': 'owner=John&type=document' 、} client.put(objectName, localFilepath, { ヘッダー })
マルチパートアップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、マルチパートアップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-OSS ') const client = new OSS({ // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 region: 'yourregion' 、 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 const objectName = 'exampledir/exampleobject.txt' // ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 // デフォルトでは、ローカルパスを指定せずに、examplefile.txtなどのローカルファイル名のみを指定すると、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 const localFilepath = 'D :\\ localpath\\examplefile.txt' // リクエストヘッダーを設定します。 const headers = { // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。 'x-oss-tagging': 'owner=John&type=document' 、} async関数setTag() { await client.multipartUpload(objectName, localFilepath, {) // パーツサイズを指定します。 単位:バイト 最後の部分を除く各部分は100 KB以上でなければなりません。 partSize: 100*1024、 headers }); const tag = await client.getObjectTagging(objectName); console.log (タグ); } setTag()
追加アップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、マルチパートアップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-OSS ') const client = new OSS({ // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 region: 'yourregion' 、 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 const objectName = 'exampledir/exampleobject.txt' // ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 // デフォルトでは、ローカルパスを指定せずに、examplefile.txtなどのローカルファイル名のみを指定すると、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 const localFilepath = 'D :\\ localpath\\examplefile.txt' // リクエストヘッダーを設定します。 const headers = { // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。 'x-oss-tagging': 'owner=John&type=document' 、} // AppendObject操作を呼び出してオブジェクトにタグを追加するときにヘッダーを指定します。 // オブジェクトが初めて追加されたときに指定されたタグのみがオブジェクトに追加されます。 async関数setTag() { await client.append(objectName, localFilepath, {) // パーツサイズを指定します。 単位:バイト 最後の部分を除く各部分は100 KB以上でなければなりません。 partSize: 100*1024、 headers }); const tag = await client.getObjectTagging(objectName); console.log (タグ); } setTag()
再開可能アップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、再開可能アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-OSS ') const client = new OSS({ // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 region: 'yourregion' 、 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 const objectName = 'exampledir/exampleobject.txt' // ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 // デフォルトでは、ローカルパスを指定せずに、examplefile.txtなどのローカルファイル名のみを指定すると、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 const localFilepath = 'D :\\ localpath\\examplefile.txt' // チェックポイント情報を設定します。 letcheckpoint; // リクエストヘッダーを設定します。 const headers = { // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。 'x-oss-tagging': 'owner=John&type=document' 、} async関数setTag() { await client.multipartUpload(objectName, localFilepath, {) checkponit, async progress(percentage, cpt) { checkpoint = cpt; }, headers }); const tag = await client.getObjectTagging(objectName); console.log (タグ); } setTag()
既存のオブジェクトへのタグの追加またはタグの変更
既存のオブジェクトにタグがない場合、またはオブジェクトのタグが要件を満たしていない場合は、オブジェクトのタグを追加または変更できます。
次のコードは、既存のオブジェクトのタグを追加または変更する方法の例を示しています。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
region: 'yourregion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
const objectName = 'exampledir/exampleobject.txt'
// オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。
const tag = { owner: 'John', type: 'document' };
async関数putObjectTagging(objectName, tag) {
try {
const result = await client.putObjectTagging(objectName, tag);
console.log (結果);
} catch (e) {
console.log(e);
}
}
putObjectTagging(objectName, tag)
オブジェクトの特定のバージョンのタグを追加または変更する
バケットのバージョン管理が有効になっている場合、オブジェクトのバージョンIDを指定することで、バケット内のオブジェクトの特定のバージョンにタグを追加したり、タグを変更したりできます。
次のコードでは、特定のバージョンのオブジェクトにタグを追加またはタグを変更する方法の例を示します。
バージョンIDの取得方法の詳細については、「オブジェクトのリスト」をご参照ください。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
region: 'yourregion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
const objectName = 'exampledir/exampleobject.txt'
// オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。
const tag = { owner: 'John', type: 'document' };
// オブジェクトのバージョンIDを指定します。
constversionId='CAEQIRiBgMDqvPqA3BciIDJhMjE4MWZkN2ViYTRmYzJhZjkxMzk2YWM2NjJk ****'
async関数putObjectTagging(objectName, tag) {
try {
const options = {
versionId
};
const result = await client.putObjectTagging(objectName, tag, options);
console.log (結果);
} catch (e) {
console.log(e);
}
}
putObjectTagging(objectName, tag)
オブジェクトをコピーするときにオブジェクトにタグを追加する
次のいずれかの方法を使用して、オブジェクトをコピーするときにオブジェクトのタグ付けを設定できます。
コピー: ソースオブジェクトのタグがコピー先オブジェクトにコピーされます。
置換: ターゲットオブジェクトには、ソースオブジェクトのタグではなく、リクエストで指定されたタグがあります。
次の例では、シンプルコピーモードで1 GB未満、マルチパートコピーモードで1 GBを超えるオブジェクトにタグを追加する方法について説明します。
単純コピーを使用してオブジェクトをコピーするときにオブジェクトにタグを追加する
次のコードでは、単純コピーを使用してオブジェクトをコピーするときに、1 GB未満のオブジェクトにタグを追加する方法の例を示します。
const OSS = require('ali-OSS ') const client = new OSS({ // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 region: 'yourregion' 、 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // ソースオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: srcexampledir/exampleobject.txt。 const sourceObjectName = 'srcexampledir/exampleobject.txt '; // 宛先オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: destexampledir/exampleobject.txt。 const targetObjectName = 'destexampledir/exampleobject.txt '; // リクエストヘッダーを設定します。 const headers = { // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。 'x-oss-tagging': 'owner=John&type=document' 、 // ターゲットオブジェクトにタグを追加するために使用されるメソッドを指定します。 有効な値: コピーと置換。 Copyはデフォルト値で、ソースオブジェクトのタグがコピー先オブジェクトにコピーされることを示します。 置換は、リクエストで指定されたタグが宛先オブジェクトに追加されることを示します。 'x-oss-tagging-directive': 'Replace' } async関数setTag() { const result = await client.copy(targetObjectName, sourceObjectName, {) headers }); constタグ=await client.getObjectTagging(targetObjectName) console.log (タグ) } setTag()
マルチパートコピーを使用してオブジェクトをコピーするときにオブジェクトにタグを追加する
マルチパートコピーを使用してオブジェクトをコピーするときに、1 GBを超えるオブジェクトにタグを追加する方法の例を次に示します。
const OSS = require('ali-OSS ') const client = new OSS({ // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 region: 'yourregion' 、 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // ソースオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: srcexampledir/exampleobject.txt。 const sourceObjectName = 'srcexampledir/exampleobject.txt' // 宛先オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: destexampledir/exampleobject.txt。 const targetObjectName = 'destexampledir/exampleobject.txt' // リクエストヘッダーを設定します。 const headers = { // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。 'x-oss-tagging': 'owner=John&type=document' 、} async関数setTag() { await client.multipartUploadCopy(targetObjectName, {) sourceKey: sourceObjectName、 sourceBucketName: 'examplebucket' }, { // パーツサイズを指定します。 単位:バイト 最後の部分を除く各部分は100 KB以上でなければなりません。 partSize: 256*1024、 headers }); constタグ=await client.getObjectTagging(targetObjectName) console.log (タグ) } setTag()
シンボリックリンクにタグを追加する
次のコードは、シンボリックリンクにタグを追加する方法の例を示しています。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
region: 'yourregion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
// シンボリックリンクのフルパスを指定します。 例: shortcut/myobject.txt。
const symLink = "shortcut/myobject.txt";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
const targetObjectName = 'exampledir/exampleobject.txt'
// リクエストヘッダーを設定します。
const headers = {
// オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。
'x-oss-tagging': 'owner=John&type=document' 、}
async関数setTag() {
await client.putSymlink(symLink, targetObjectName, {)
storageClass: 「IA」、
meta: {
uid: '1' 、
slus: 'test.html'
},
headers
});
constタグ=await client.getObjectTagging(targetObjectName)
console.log (タグ)
}
setTag()
参考資料
オブジェクトのタグ付けの設定に使用される完全なサンプルコードについては、『GitHub』をご参照ください。
オブジェクトのタグ付けを設定するために呼び出すことができるAPI操作の詳細については、「PutObjectTagging」をご参照ください。