Object Storage Service (OSS) では、オブジェクトタグを設定してオブジェクトを分類できます。 このトピックでは、オブジェクトへのタグの追加、オブジェクトタグのクエリ、およびオブジェクトタグの削除方法について説明します。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名や Security Token Service (STS) を使用するなどの方法で OSSClient インスタンスを作成する必要があります。 詳細については、初期化をご参照ください。
オブジェクトへのタグの追加
オブジェクトのアップロード時のタグ追加
オブジェクトのアップロード時にタグを追加する方法の例を次に示します。
OSSPutObjectRequest * put = [OSSPutObjectRequest new];
// バケット名を指定します。 例: examplebucket
put.bucketName = @"examplebucket";
// オブジェクトの完全なパスを指定します。 例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めないでください。
put.objectKey = @"exampledir/exampleobject.txt";
put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// タグを追加します。 たとえば、タグのキーを owner に、タグの値を John に設定します。
NSDictionary *tagging = @{@"owner": @"John"};
put.objectMeta = @{@"x-oss-tagging": [OSSUtil populateQueryStringFromParameter:tagging]};
// (オプション) アップロード進行状況インジケーターを設定します。
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
// アップロード中のバイト数、アップロード済みの合計バイト数、およびアップロードする合計バイト数を指定します。
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
OSSTask * putTask = [client putObject:put];
[putTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"upload object success!");
} else {
NSLog(@"upload object failed, error: %@" , task.error);
}
return nil;
}];
// [putTask waitUntilFinished];
// [put cancel];既存オブジェクトへのタグの追加または変更
既存のオブジェクトにタグを追加または変更する方法の例を次に示します。
OSSPutObjectTaggingRequest *putTaggingRequest = [OSSPutObjectTaggingRequest new];
// バケット名を指定します。 例: examplebucket
putTaggingRequest.bucketName = @"examplebucket";
// オブジェクトの完全なパスを指定します。 例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めないでください。
putTaggingRequest.objectKey = @"exampledir/exampleobject.txt";
// タグを作成して追加します。
NSDictionary *tags = @{@"key1":@"value1", @"key2":@"value2"};
putTaggingRequest.tags = tags;
OSSTask * putTask= [client putObjectTagging:putTaggingRequest];
[putTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
if (task.error) {
NSLog(@"error: %@", task.error);
} else {
NSLog(@"put tagging success");
}
return nil;
}];
// [putTask waitUntilFinished];オブジェクトのコピー時のタグ追加
オブジェクトのコピー時にタグを追加する方法の例を次に示します。
OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
// ソースバケットの名前を指定します。
copy.sourceBucketName = @"sourceBucketName";
// ソースオブジェクトのキーを指定します。
copy.sourceObjectKey = @"sourceObjectKey";
// 宛先バケットの名前を指定します。
copy.bucketName = @"bucketName";
// 宛先オブジェクトの名前を指定します。
copy.objectKey = @"objectKey";
// オブジェクトにタグを追加します。
NSDictionary *tagging = @{@"owner": @"John"};
copy.objectMeta = @{
@"x-oss-tagging": [OSSUtil populateQueryStringFromParameter:tagging],
@"x-oss-tagging-directive": @"Replace"
};
OSSTask * task = [client copyObject:copy];
[task continueWithBlock:^id(OSSTask *task) {
if (task.error) {
NSLog(@"error: %@", task.error);
} else {
NSLog(@"copy object success");
}
return nil;
}];
// [task waitUntilFinished];シンボリックリンクへのタグ追加
シンボリックリンクにタグを追加する方法の例を次に示します。
OSSPutSymlinkRequest * putSymlinkRequest = [OSSPutSymlinkRequest new];
// バケット名を指定します。
putSymlinkRequest.bucketName = @"examplebucket";
// シンボリックリンクの名前を指定します。
putSymlinkRequest.objectKey = @"examplesymlink";
// シンボリックリンクが指すオブジェクトの完全なパスを指定します。 完全なパスにバケット名を含めないでください。
putSymlinkRequest.targetObjectName = @"exampleobject.txt";
// オブジェクトにタグを追加します。
NSDictionary *tagging = @{@"owner": @"John"};
putSymlinkRequest.objectMeta = @{
@"x-oss-tagging": [OSSUtil populateQueryStringFromParameter:tagging],
};
OSSTask * putSymlinktask = [client putSymlink:putSymlinkRequest];
[putSymlinktask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"put symlink success");
} else {
NSLog(@"put symlink failed, error: %@", task.error);
}
return nil;
}];
// [putSymlinktask waitUntilFinished];オブジェクトタグのクエリ
オブジェクトのタグをクエリする方法の例を次に示します。
OSSGetObjectTaggingRequest *getTaggingRequest = [OSSGetObjectTaggingRequest new];
// バケット名を指定します。
getTaggingRequest.bucketName = @"examplebucket";
// オブジェクトの名前を指定します。
getTaggingRequest.objectKey = @"exampledir/exampleobject.txt";
OSSTask * getTask = [client getObjectTagging:getTaggingRequest];
// オブジェクトのタグをクエリします。
[getTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
if (!task.error) {
OSSGetObjectTaggingResult *result = task.result;
for (NSString *key in [result.tags allKeys]) {
NSLog(@"tagging %@: %@", key, result.tags[key]);
}
} else {
NSLog(@"get object tagging fail! error: %@", task.error);
}
return nil;
}];
// [getTask waitUntilFinished];オブジェクトタグの削除
オブジェクトのタグを削除する方法の例を次に示します。
OSSDeleteObjectTaggingRequest *deleteTaggingRequest = [OSSDeleteObjectTaggingRequest new];
// バケット名を指定します。
deleteTaggingRequest.bucketName = @"examplebucket";
// オブジェクトの名前を指定します。
deleteTaggingRequest.objectKey = @"exampledir/exampleobject.txt";
OSSTask *deleteTask = [client deleteObjectTagging:deleteTaggingRequest];
// オブジェクトに追加されたタグを削除します。
[deleteTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
if (!task.error) {
NSLog(@"delete object tagging success");
} else {
NSLog(@"delete object tagging fail! error: %@", task.error);
}
return nil;
}];
// [deleteTask waitUntilFinished];関連ドキュメント
オブジェクトにタグを追加するために呼び出すことができる API 操作の詳細については、「PutObjectTagging」をご参照ください。
オブジェクトのタグをクエリするために呼び出すことができる API 操作の詳細については、「GetObjectTagging」をご参照ください。
オブジェクトのタグを削除するために呼び出すことができる API 操作の詳細については、「DeleteObjectTagging」をご参照ください。