edit-icon download-icon

バケット操作

最終更新日: Sep 14, 2016

1. バケットの設定

バケットは、OSS のネームスペースです。また、バケットでは、課金、権限制御、ログ機能などの高度な機能の管理エンティティでもあります。データ関連の操作を実行する前に、バケットインスタンスを作成して設定する必要があります。これにより、このバケットインスタンスを使って後続のデータ操作でデータストレージの場所を簡単に指定できます。

バケットの呼び出しは非常に簡単です。

  1. OSSBucket *ossBucket = [serviceProvider getBucket:@"oss-example"];

次に、いくつかのオプションを設定します。

1.1 バケットのアクセス権限の指定

OSS 公式サイトでバケットを作成する場合、PUBLIC_READ_WRITE、PUBLIC_READ、PRIVATE の 3 つのアクセス権限を指定できます。そのため、SDK では、アクセスするバケットの権限も指定する必要があります。このステートメントで、コンソールの設定は変更されません。

  1. [sampleBucket setAcl:PRIVATE]; // States the access permission for this bucket

1.2 データセンタードメイン名または CNAME の設定

ここでは、バケットのデータセンターを個別に指定して、バケットに既にバインドされているドメイン名を定義できます。

  1. [sampleBucket setOssHostId:@"oss-cn-hangzhou.aliyuncs.com"]; // Specifies the domain name of the bucket's data center or the CNAME domain name already bound to the bucket

1.3 CDN ドメインの設定

バケットではその送信先となる CDN ドメインの CNAME を個別に定義できます。ただし、現在 CDN では “最も近いアップロード” がサポートされていないため、これを設定した場合に使用できるのはダウンロード時のみです。 例:

  1. [sampleBucket setCdnAccelerateHostId:@"cname.to.cdn.domain.com"]; // Sets the CNAME domain name for the CDN domain directed to

2. 初期化の概要

バケットの初期化時にすべての設定を構成する場合、コードは次のようになります。

  1. OSSBucket *ossBucket = [serviceProvider getBucket:@"oss-example"];
  2. [sampleBucket setAcl:PRIVATE]; // Specifies the access permission for this bucket
  3. [sampleBucket setOssHostId:@"oss-cn-hangzhou.aliyuncs.com"]; // Specifies the domain name of the bucket's data center or the CNAME domain name already bound to the bucket
  4. [sampleBucket setCdnAccelerateHostId:@"cname.to.cdn.domain.com"]; // Sets the CNAME domain name for the CDN domain directed to

多くの場合、すべてのデータ操作はバケットと関連付けられるため、バケットは通常グローバルです。したがって、グローバルな初期化の際に、これらのバケットを作成する必要があります。以降のデータ操作時には、対応するバケットをインポートし、データの場所を指定するだけで済みます。

3. オブジェクトの一覧表示

バケットを設定した後、次のインターフェイスを呼び出して、バケットにオブジェクトを一覧表示することができます。

  1. - (ListObjectResult *)listObjectsInBucket:(ListObjectOption *)opt error:(NSError **)error;

ListObjectOption は、Max-Keys、Marker、Prefix、および Delimiter パラメーターの設定に使用するオプションのパラメーターです。これらのパラメーターの重要性は、OSS API マニュアルでの説明と一致しています。ListObjectResult は返される結果で、この結果から関連情報を取得できます。例:

  1. ListObjectOption *opt = [[ListObjectOption alloc] init];
  2. [opt setDelimiter:@"/"];
  3. [opt setPrefix:@"prefixdir/"];
  4. [opt setMaxKeys:500];
  5. [opt setMarker:@"prefix187"];
  6. NSError *error = nil;
  7. ListObjectResult *result = [sampleBucket listObjectsInBucket:opt error:&error]; // Calls the interface to list bucket objects
  8. int objectNum = result.objectList.count;
  9. NSString *nextMarkder = result.nextMarker;
  10. BOOL isTruncated = result.isTruncated;
  11. NSArray *objectList = result.objectList; // Gets the objects list from the returned results
  12. for (ObjectInfo *ele in objectList) { // Traverses the returned objects list
  13. NSString *objectKey = ele.objectKey;
  14. NSString *lastModifiedTime = ele.lastModified;
  15. }
  16. NSMutableArray *commonPrefixs = result.commonPrefixList; // When Delimiter is specified, objects with the same prefix will be grouped together and recorded in the returned commonprefix
  17. for (NSString *Prefix in commonPrefixs) {
  18. // doSomething with prefixed
  19. }

注意: このメソッドは同期メソッドです。このメソッドを実行すると、ネットワークリクエストが送信されます。したがって、メインスレッドでこのメソッドを直接呼び出さないでください。