Object Storage Service (OSS) では、オブジェクトタグを設定してオブジェクトを分類できます。 ライフサイクルルールを設定し、タグに基づいてオブジェクトへのアクセスを制御できます。
使用上の注意
オブジェクトのタグ付けを設定する前に、この機能に精通していることを確認してください。 詳細については、「オブジェクトのタグ付け」をご参照ください。
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョン、エンドポイント、オープンポート」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。
OSS SDK for Java 3.5.0以降のみがオブジェクトタグ付けをサポートしています。
オブジェクトにタグを追加するには、
oss:PutObjectTagging
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
オブジェクトをアップロードするときにオブジェクトにタグを追加する
シンプルアップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、単純アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-oss') const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the name of the bucket. bucket: 'yourbucketname' }); // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. const objectName = 'exampledir/exampleobject.txt' // Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. // By default, if you specify only the name of the local file such as examplefile.txt without specifying the local path, the local file is uploaded from the path of the project to which the sample program belongs. const localFilepath = 'D:\\localpath\\examplefile.txt' // Configure request headers. const headers = { // Specify the key and value of the object tag. For example, set the key to owner and value to John. 'x-oss-tagging': 'owner=John&type=document', } client.put(objectName, localFilepath, { headers })
マルチパートアップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、マルチパートアップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-oss') const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the name of the bucket. bucket: 'yourbucketname' }); // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. const objectName = 'exampledir/exampleobject.txt' // Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. // By default, if you specify only the name of the local file, such as examplefile.txt, without specifying the local path, the local file is uploaded from the path of the project to which the sample program belongs. const localFilepath = 'D:\\localpath\\examplefile.txt' // Configure request headers. const headers = { // Specify the key and value of the object tag. For example, set the key to owner and value to John. 'x-oss-tagging': 'owner=John&type=document', } async function setTag() { await client.multipartUpload(objectName, localFilepath, { // Specify the part size. Unit: bytes. Each part except the last part must be greater than or equal to 100 KB. partSize: 100 * 1024, headers }); const tag = await client.getObjectTagging(objectName); console.log(tag); } setTag()
追加アップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、追加アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-oss') const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the name of the bucket. bucket: 'yourbucketname' }); // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. const objectName = 'exampledir/exampleobject.txt' // Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. // By default, if you specify only the name of the local file, such as examplefile.txt, without specifying the local path, the local file is uploaded from the path of the project to which the sample program belongs. const localFilepath = 'D:\\localpath\\examplefile.txt' // Configure request headers. const headers = { // Specify the key and value of the object tag. For example, set the key to owner and value to John. 'x-oss-tagging': 'owner=John&type=document', } // Specify the headers when you call the AppendObject operation to add the tags to the object. // Only the tags specified when the object is appended for the first time are added to the object. async function setTag() { await client.append(objectName, localFilepath, { // Specify the part size. Unit: bytes. Each part except the last part must be greater than or equal to 100 KB. partSize: 100 * 1024, headers }); const tag = await client.getObjectTagging(objectName); console.log(tag); } setTag()
再開可能アップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、再開可能アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
const OSS = require('ali-oss') const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the name of the bucket. bucket: 'yourbucketname' }); // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. const objectName = 'exampledir/exampleobject.txt' // Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. // By default, if you specify only the name of the local file, such as examplefile.txt, without specifying the local path, the local file is uploaded from the path of the project to which the sample program belongs. const localFilepath = 'D:\\localpath\\examplefile.txt' // Configure the checkpoint information. letcheckpoint; // Configure request headers. const headers = { // Specify the key and value of the object tag. For example, set the key to owner and value to John. 'x-oss-tagging': 'owner=John&type=document', } async function setTag() { await client.multipartUpload(objectName, localFilepath, { checkponit, async progress(percentage, cpt) { checkpoint = cpt; }, headers }); const tag = await client.getObjectTagging(objectName); console.log(tag); } setTag()
既存のオブジェクトへのタグの追加またはタグの変更
既存のオブジェクトにタグがない場合、またはオブジェクトのタグが要件を満たしていない場合は、オブジェクトのタグを追加または変更できます。
次のコードは、既存のオブジェクトのタグを追加または変更する方法の例を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
const objectName = 'exampledir/exampleobject.txt'
// Specify the key and value of the object tag. For example, set the key to owner and value to John.
const tag = { owner: 'John', type: 'document' };
async function putObjectTagging(objectName, tag) {
try {
const result = await client.putObjectTagging(objectName, tag);
console.log(result);
} catch (e) {
console.log(e);
}
}
putObjectTagging(objectName, tag)
オブジェクトの特定のバージョンのタグを追加または変更する
バケットのバージョン管理が有効になっている場合、オブジェクトのバージョンIDを指定することで、バケット内のオブジェクトの特定のバージョンにタグを追加したり、タグを変更したりできます。
次のコードでは、特定のバージョンのオブジェクトにタグを追加またはタグを変更する方法の例を示します。
バージョンIDの取得方法の詳細については、「オブジェクトのリスト」をご参照ください。
const OSS = require('ali-oss')
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
const objectName = 'exampledir/exampleobject.txt'
// Specify the key and value of the object tag. For example, set the key to owner and value to John.
const tag = { owner: 'John', type: 'document' };
// Specify the version ID of the object.
constversionId='CAEQIRiBgMDqvPqA3BciIDJhMjE4MWZkN2ViYTRmYzJhZjkxMzk2YWM2NjJk****'
async function putObjectTagging(objectName, tag) {
try {
const options = {
versionId
};
const result = await client.putObjectTagging(objectName, tag, options);
console.log(result);
} catch (e) {
console.log(e);
}
}
putObjectTagging(objectName, tag)
オブジェクトをコピーするときにオブジェクトにタグを追加する
次のいずれかの方法を使用して、オブジェクトをコピーするときにオブジェクトのタグ付けを設定できます。
コピー: ソースオブジェクトのタグがコピー先オブジェクトにコピーされます。
置換: ターゲットオブジェクトには、ソースオブジェクトのタグではなく、リクエストで指定されたタグがあります。
次の例では、シンプルコピーモードで1 GB未満、マルチパートコピーモードで1 GBを超えるオブジェクトにタグを追加する方法について説明します。
単純コピーを使用してオブジェクトをコピーするときにオブジェクトにタグを追加する
次のコードでは、単純コピーを使用してオブジェクトをコピーするときに、1 GB未満のオブジェクトにタグを追加する方法の例を示します。
const OSS = require('ali-oss') const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the name of the bucket. bucket: 'yourbucketname' }); // Specify the full path of the source object. Do not include the bucket name in the full path. Example: srcexampledir/exampleobject.txt. const sourceObjectName = 'srcexampledir/exampleobject.txt'; // Specify the full path of the destination object. Do not include the bucket name in the full path. Example: destexampledir/exampleobject.txt. const targetObjectName = 'destexampledir/exampleobject.txt'; // Configure request headers. const headers = { // Specify the key and value of the object tag. For example, set the key to owner and value to John. 'x-oss-tagging': 'owner=John&type=document', // Specify the method that is used to add tags to the destination object. Valid values: Copy and Replace. Copy is the default value and indicates that the tags of the source object are copied to the destination object. Replace indicates that the tags specified in the request are added to the destination object. 'x-oss-tagging-directive': 'Replace' } async function setTag() { const result = await client.copy(targetObjectName, sourceObjectName, { headers }); const tag = await client.getObjectTagging(targetObjectName) console.log(tag) } setTag()
マルチパートコピーを使用してオブジェクトをコピーするときにオブジェクトにタグを追加する
次のコードでは、マルチパートコピーを使用してオブジェクトをコピーするときに、1 GBを超えるオブジェクトにタグを追加する方法の例を示します。
const OSS = require('ali-oss') const client = new OSS({ // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. region: 'yourregion', // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Specify the name of the bucket. bucket: 'yourbucketname' }); // Specify the full path of the source object. Do not include the bucket name in the full path. Example: srcexampledir/exampleobject.txt. const sourceObjectName = 'srcexampledir/exampleobject.txt' // Specify the full path of the destination object. Do not include the bucket name in the full path. Example: destexampledir/exampleobject.txt. const targetObjectName = 'destexampledir/exampleobject.txt' // Configure request headers. const headers = { // Specify the key and value of the object tag. For example, set the key to owner and value to John. 'x-oss-tagging': 'owner=John&type=document', } async function setTag() { await client.multipartUploadCopy(targetObjectName, { sourceKey: sourceObjectName, sourceBucketName: 'examplebucket' }, { // Specify the part size. Unit: bytes. Each part except the last part must be greater than or equal to 100 KB. partSize: 256 * 1024, headers }); const tag = await client.getObjectTagging(targetObjectName) console.log(tag) } setTag()
シンボリックリンクにタグを追加する
次のコードは、シンボリックリンクにタグを追加する方法の例を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
// Specify the full path of the symbolic link. Example: shortcut/myobject.txt.
const symLink = "shortcut/myobject.txt";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
const targetObjectName = 'exampledir/exampleobject.txt'
// Configure request headers.
const headers = {
// Specify the key and value of the object tag. For example, set the key to owner and value to John.
'x-oss-tagging': 'owner=John&type=document',
}
async function setTag() {
await client.putSymlink(symLink, targetObjectName, {
storageClass: 'IA',
meta: {
uid: '1',
slus: 'test.html'
},
headers
});
const tag = await client.getObjectTagging(targetObjectName)
console.log(tag)
}
setTag()
関連ドキュメント
オブジェクトのタグ付けの設定に使用される完全なサンプルコードについては、『GitHub』をご参照ください。
オブジェクトのタグ付けを設定するために呼び出すことができるAPI操作の詳細については、「PutObjectTagging」をご参照ください。