edit-icon download-icon

バケット

最終更新日: May 05, 2018

OSS ではユーザーファイルのネームスペースとしてバケットを使用して、課金、権限制御、ログ記録などの高度な機能の管理オブジェクトとしても使用します。バケット名は OSS 全体でグローバルに一意である必要があり、変更することはできません。OSS に格納されているすべてのオブジェクトはバケットに含める必要があります。イメージ共有 Web サイトなどの 1 つのアプリケーションは、1 つ以上のバケットに対応できます。最大 10 個のバケットを作成できますが、各バケット内のオブジェクト数には制限がありません。各バケットには最大 2 PB のデータを格納できます。

命名規則

バケットの命名規則は次のとおりです。

  • バケット名はグローバルに一意でなければならず、他のユーザーのバケット名と一致してはいけません。
  • 小文字のアルファベット、数字、ハイフン (-) のみを使用できます。
  • 先頭の文字は小文字のアルファベットまたは数字である必要があります。
  • 長さは 3 ~ 63 バイトでなければなりません。

バケットの作成

注:
バケットに名前を付けるときは、命名規則に従わなければなりません。

以下のコードを使用してバケットを作成できます。

  1. String bucketName = "my-bucket-name";
  2. // Initializes an OSSClient
  3. OSSClient client = ...;
  4. // Creates a Bucket
  5. client.createBucket(bucketName);

ユーザーのすべてのバケットのリスト

以下のコードで、ユーザーのすべてのバケットがリストされます。

  1. // Retrieves the user's bucket list
  2. List<Bucket> buckets = client.listBuckets();
  3. // Traverses buckets
  4. for (Bucket bucket : buckets) {
  5. System.out.println(bucket.getName());
  6. }

CNAME アクセス

独自のドメイン名の CNAME を 1 つのバケットのドメイン名に対応付けた後、ドメイン名を通じて OSS にアクセスできます。

  1. // For example, your domain name is "http://cname.com" and you direct the CNAME to your bucket domain name "mybucket.oss-cn-hangzhou.aliyuncs.com"
  2. OSSClient client = new OSSClient("http://cname.com/", /* accessKeyId */, /* accessKeySecret */);
  3. PutObjectResult result = client.putObject("mybucket", /* key */, /* input */, /* metadata */);

OSSClient インスタンスを作成するときに、当初バケットへのアクセスに使用する予定だったエンドポイントを post-CNAME ドメイン名に変更するだけです。同時に、その後の操作でこの OSSClient インスタンスを使用するときにバケット名に入力できるのは、指定されたバケット名のみです。

VPC ユーザーが、aliyuncs.com で終わらないドメイン名を通じて OSS にアクセスする場合は、ClientConfiguration で setCnameExcludeList を使用してエンドポイントを設定すると、OSS へのアクセスに CNAME メソッドを使用するのを回避できます。

バケットの有無の確認

バケットの有無を確認するには、次のコードを使用できます。

  1. String bucketName = "your-bucket-name";
  2. // Gets information on existing buckets
  3. boolean exists = client.doesBucketExist(bucketName);
  4. // Outputs results
  5. if (exists) {
  6. System.out.println("Bucket exists");
  7. } else {
  8. System.out.println("Bucket not exists");
  9. }

バケット ACL の設定

バケット ACL を設定するには、次のコードを使用できます。

  1. String bucketName = "your-bucket-name";
  2. //Uses a bucket with private permission as an example
  3. client.setBucketAcl(bucketName,CannedAccessControlList.Private);

バケット ACL の取得

バケット ACL を取得するには、次のコードを使用できます。

  1. String bucketName = "your-bucket-name";
  2. AccessControlList accessControlList = client.getBucketAcl(bucketName);
  3. //You can print the results or confirm them on the console
  4. System.out.println(accessControlList.toString());

バケットアドレスの取得

バケットアドレスを取得するには、次のコードを使用できます。

  1. String bucketName = "your-bucket-name";
  2. // Retrieves the bucket address
  3. String location = client.getBucketLocation(bucketName);
  4. System.out.println(location);

バケットの削除

次のコードでバケットは削除されます。

  1. String bucketName = "your-bucket-name";
  2. // Deletes the bucket
  3. client.deleteBucket(bucketName)

Note:
バケットが空でない (バケットにオブジェクトが含まれる) 場合、バケットは削除できません。バケットを削除する前に、バケット内のすべてのオブジェクトを削除する必要があります。