すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSS SDK for iOSを使用してオブジェクトをリストする

最終更新日:Sep 14, 2024

このトピックでは、バケット内のオブジェクトを一覧表示する方法について説明します。 たとえば、すべてのオブジェクト、特定の数のオブジェクト、および名前に特定のプレフィックスが含まれているオブジェクトをバケットに一覧表示できます。

使用上の注意

  • このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。

    説明

    OSSClientインスタンスを初期化するときに、バケットのリージョンにマップされるエンドポイントを指定します。

  • オブジェクトを一覧表示するには、ossGetObject権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

特定の数のオブジェクトを一覧表示する

次のサンプルコードでは、examplebucketという名前のバケットに最大20個のオブジェクトを一覧表示する方法の例を示します。

OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// Specify the name of the bucket. Example: examplebucket. 
getBucket.bucketName = @"examplebucket";
// Specify the maximum number of returned objects. By default, the value of this parameter is 100. The maximum value you can specify is 1000. 
getBucket.maxKeys = 20;

OSSTask * getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        OSSGetBucketResult * result = task.result;
        NSLog(@"get bucket success!");
        for (NSDictionary * objectInfo in result.contents) {
            NSLog(@"list object: %@", objectInfo);
        }
    } else {
        NSLog(@"get bucket failed, error: %@", task.error);
    }
    return nil;
}];
// Implement synchronous blocking to wait for the task to complete. 
// [getBucketTask waitUntilFinished];

名前に特定のプレフィックスが含まれるオブジェクトのリスト

次のサンプルコードは、examplebucketという名前のバケットに "file" プレフィックスを含む名前のオブジェクトを一覧表示する方法の例を示しています。

OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// Specify the name of the bucket. Example: examplebucket. 
getBucket.bucketName = @"examplebucket";
// Specify the prefix. 
getBucket.prefix = @"file";

OSSTask * getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        OSSGetBucketResult * result = task.result;
        NSLog(@"get bucket success!");
        for (NSDictionary * objectInfo in result.contents) {
            NSLog(@"list object: %@", objectInfo);
        }
    } else {
        NSLog(@"get bucket failed, error: %@", task.error);
    }
    return nil;
}];
// Implement synchronous blocking to wait for the task to complete. 
// [getBucketTask waitUntilFinished]

markerの値の後に名前がアルファベット順に表示されるオブジェクトを一覧表示します。

次のサンプルコードでは、examplebucketという名前のバケットで、exampleobject.txtマーカーの後に名前がアルファベット順に表示されるオブジェクトをリストする方法の例を示します。

OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// Specify the name of the bucket. Example: examplebucket. 
getBucket.bucketName = @"examplebucket";
// Specify the marker. Objects whose names are alphabetically after the marker are returned. 
// If the object specified by marker does not exist in the bucket, the objects whose names are alphabetically after the value of marker are returned. 
getBucket.marker = @"exampleobject.txt";

OSSTask * getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        OSSGetBucketResult * result = task.result;
        NSLog(@"get bucket success!");
        for (NSDictionary * objectInfo in result.contents) {
            NSLog(@"list object: %@", objectInfo);
        }
    } else {
        NSLog(@"get bucket failed, error: %@", task.error);
    }
    return nil;
}];
// Implement synchronous blocking to wait for the task to complete. 
// [getBucketTask waitUntilFinished]

ページ別にオブジェクトを一覧表示

まず、リスト操作に関連するグローバル変数を宣言します。

@interface ... {
    NSString *_marker;
    BOOL _isCompleted;
}
@end

次のサンプルコードは、ページごとにexamplebucketバケット内のオブジェクトを一覧表示する方法の例を示しています。 この例では、1ページあたり最大20個のオブジェクトが返されます。

 do {
    OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
    getBucket.bucketName = @"examplebucket";
    getBucket.marker = _marker;  // Accessing the _marker instance variable
    getBucket.maxKeys = 20;

    OSSTask *getBucketTask = [client getBucket:getBucket];
    [getBucketTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            OSSGetBucketResult *result = task.result;
            NSLog(@"Get bucket success!");
            NSLog(@"objects: %@", result.contents);
            if (result.isTruncated) {
                _marker = result.nextMarker;  // Update the _marker instance variable
                _isCompleted = NO;
            } else {
                _isCompleted = YES;
            }
        } else {
            _isCompleted = YES;
            NSLog(@"Get bucket failed, error: %@", task.error);
        }
        return nil;
    }];
    // Implement synchronous blocking to wait for the task to complete. 
    [getBucketTask waitUntilFinished];
} while (!_isCompleted);

指定されたプレフィックスを含む名前のオブジェクトをページ単位でリストする

まず、リスト操作に関連するグローバル変数を宣言します。

@interface ... {
    NSString *_marker;
    BOOL _isCompleted;
}
@end

次のサンプルコードでは、examplebucketバケットに名前プレフィックス "file" を持つオブジェクトを一覧表示する方法の例を示します。 この例では、1ページあたり最大20個のオブジェクトが返されます。

do {
    OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
    getBucket.bucketName = @"examplebucket";
    getBucket.marker = _marker;  // Accessing the _marker instance variable
    getBucket.maxKeys = 20;
    getBucket.prefix = @"file";

    OSSTask *getBucketTask = [client getBucket:getBucket];
    [getBucketTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            OSSGetBucketResult *result = task.result;
            NSLog(@"Get bucket success!");
            NSLog(@"objects: %@", result.contents);

            if (result.isTruncated) {
                _marker = result.nextMarker;  // Update the _marker instance variable
                _isCompleted = NO;
            } else {
                _isCompleted = YES;
            }
        } else {
            _isCompleted = YES;
            NSLog(@"Get bucket failed, error: %@", task.error);
        }
        return nil;
    }];
    // Implement synchronous blocking to wait for the task to complete. 
    [getBucketTask waitUntilFinished];
} while (!_isCompleted);

関連ドキュメント

  • オブジェクトを一覧表示するために呼び出すAPI操作の詳細については、「GetBucket (ListObjects) 」をご参照ください。

  • OSSClientインスタンスを初期化する方法の詳細については、「初期化」をご参照ください。