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

:バケット操作

最終更新日:Dec 22, 2023

バケット操作

1. バケットの設定

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

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

OSSBucket sampleBucket = ossService.getOssBucket("oss-example");

次に、オプション設定を構成できます。

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

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

sampleBucket.setBucketACL(AccessControlList.PRIVATE); // States the access permission for this bucket

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

バケットのデータセンターを簡単に指定すること、バケットに既にバインドされているドメイン名を設定することもできます。

sampleBucket.setBucketHostId("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 では “直近のアップロード” しかサポートしないため、CNAME ドメイン名を設定した場合に使用できるのはダウンロード時のみです。例:

sampleBucket.setCdnAccelerateHostId("cname.to.cdn.domain.com"); // Sets the CNAME domain name for the CDN domain directed to

2. 初期化の概要

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

OSSBucket sampleBucket = ossService.getOssBucket("oss-example");
sampleBucket.setBucketACL(AccessControlList.PRIVATE); // Indicates the access permission for this bucket
sampleBucket.setBucketHostId("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
// sampleBucket.setCdnAccelerateHostId("cname.to.cdn.domain.com"); // Sets the CNAME domain name for the CDN domain directed to

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

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

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

public ListObjectResult listObjectsInBucket(ListObjectOption opt);

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

ListObjectOption opt = new ListObjectOption();
opt.setDelimiter("/");
opt.setPrefix("prefixdir/");
opt.setMaxKeys(500);
opt.setMarker("prefix187");

ListObjectResult result = sampleBucket.listObjectsInBucket(opt); // Calls the interface to list bucket objects

int objectNum = result.getObjectInfoList().size();
String nextMarkder = result.getNextMarker();
Boolean isTruncated = result.isTruncated();
List<ObjectInfo> objectList = result.getObjectInfoList(); // Retrieves the objects list from the returned results
List<String> commonPrefixes = result.getCommonPrefixList(); // When Delimiter is set, objects with matching prefixes will be grouped together and recorded in the returned commonprefix

for (ObjectInfo ele : objectList) { // Traverses the returned objects list
    String objectKey = ele.getObjectKey();
    String lastModifiedTime = ele.getLastModified());
}

for (String prefix : commonPrefixes) {
    // doSomething with prefixes
}

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