このトピックでは、バケット内のオブジェクトをリストする方法について説明します。たとえば、バケット内のすべてのオブジェクト、指定した数のオブジェクト、および名前に指定したプレフィックスを含むオブジェクトをリストできます。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名や Security Token Service (STS) などのメソッドを使用して OSSClient インスタンスを作成する必要があります。詳細については、「初期化」をご参照ください。
説明OSSClient インスタンスを初期化する際は、バケットのリージョンに対応するエンドポイントを指定してください。
ファイルをリストするには、
ossGetObject権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。
指定した数のオブジェクトのリスト
次のサンプルコードは、examplebucket という名前のバケット内のオブジェクトを最大 20 個リストする方法の例を示しています。
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// バケットの名前を指定します。例: examplebucket。
getBucket.bucketName = @"examplebucket";
// 返されるオブジェクトの最大数を指定します。このパラメーターのデフォルト値は 100 です。指定できる最大値は 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;
}];
// 同期ブロッキングを実装して、タスクが完了するのを待ちます。
// [getBucketTask waitUntilFinished];名前に指定したプレフィックスを含むオブジェクトのリスト
次のサンプルコードは、examplebucket という名前のバケット内で、名前に "file" プレフィックスを含むオブジェクトをリストする方法の例を示しています。
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// バケットの名前を指定します。例: examplebucket。
getBucket.bucketName = @"examplebucket";
// プレフィックスを指定します。
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;
}];
// 同期ブロッキングを実装して、タスクが完了するのを待ちます。
// [getBucketTask waitUntilFinished]マーカー以降のオブジェクトのリスト
次のサンプルコードは、examplebucket という名前のバケット内で、名前が exampleobject.txt マーカーのアルファベット順で後にあるオブジェクトをリストする方法の例を示しています。
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// バケットの名前を指定します。例: examplebucket。
getBucket.bucketName = @"examplebucket";
// マーカーを指定します。名前がマーカーのアルファベット順で後にあるオブジェクトが返されます。
// マーカーで指定されたオブジェクトがバケットに存在しない場合、名前がマーカーの値のアルファベット順で後にあるオブジェクトが返されます。
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;
}];
// 同期ブロッキングを実装して、タスクが完了するのを待ちます。
// [getBucketTask waitUntilFinished]ページ単位でのオブジェクトのリスト
まず、リスト操作に関連するグローバル変数を宣言します。
@interface ... {
NSString *_marker;
BOOL _isCompleted;
}
@end次のサンプルコードは、examplebucket バケット内のオブジェクトをページ単位でリストする方法の例を示しています。この例では、ページごとに最大 20 個のオブジェクトが返されます。
do {
OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
getBucket.bucketName = @"examplebucket";
getBucket.marker = _marker; // _marker インスタンス変数にアクセスします
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; // _marker インスタンス変数を更新します
_isCompleted = NO;
} else {
_isCompleted = YES;
}
} else {
_isCompleted = YES;
NSLog(@"Get bucket failed, error: %@", task.error);
}
return nil;
}];
// 同期ブロッキングを実装して、タスクが完了するのを待ちます。
[getBucketTask waitUntilFinished];
} while (!_isCompleted);指定したプレフィックスを含むオブジェクトのページ単位でのリスト
まず、リスト操作に関連するグローバル変数を宣言します。
@interface ... {
NSString *_marker;
BOOL _isCompleted;
}
@end次のサンプルコードは、examplebucket バケット内で、名前のプレフィックスが "file" のオブジェクトをリストする方法の例を示しています。この例では、ページごとに最大 20 個のオブジェクトが返されます。
do {
OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
getBucket.bucketName = @"examplebucket";
getBucket.marker = _marker; // _marker インスタンス変数にアクセスします
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; // _marker インスタンス変数を更新します
_isCompleted = NO;
} else {
_isCompleted = YES;
}
} else {
_isCompleted = YES;
NSLog(@"Get bucket failed, error: %@", task.error);
}
return nil;
}];
// 同期ブロッキングを実装して、タスクが完了するのを待ちます。
[getBucketTask waitUntilFinished];
} while (!_isCompleted);関連ドキュメント
オブジェクトをリストするために呼び出すことができる API 操作の詳細については、「GetBucket (ListObjects)」をご参照ください。
OSSClient インスタンスを初期化する方法の詳細については、「初期化」をご参照ください。