edit-icon download-icon

Bucketの管理

最終更新日: Mar 04, 2019

バケットの作成

OSSClient.createBucketを使用してバケットを作成できます。 次のコードを参照してください。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // Create a bucket
  9. String bucketName = "<your-oss-bucket-name>";
  10. ossClient.createBucket(bucketName);
  11. // Disable the client
  12. ossClient.shutdown();

注:

  • バケット名はグローバルに一意でなければなりません。バケット名が他のユーザーのバケット名と一致しないことを確認してください。
  • バケットの命名規則の詳細については、OSS の概要を参照してください。.

上記のコードを使用してバケットを作成する場合、ACLプライベートで、ストレージクラスは標準です。バケットを作成する場合は、バケットの作成ストレージクラスの概要を指定します。サンプルコードは次のとおりです。

  1. CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
  2. // Set the bucket ACL to public-read. The default ACL policy is private-read-write
  3. createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
  4. // Set the bucket storage class as Low-frequency Access (IA). The default class is Standard
  5. createBucketRequest.setStorageClass(StorageClass.IA);
  6. ossClient.createBucket(createBucketRequest);

注意:

  • 特定のストレージクラスのバケットを作成するには、Java SDK 2.6.0 以降のバージョンを使用してください。

バケットの表示

OSSClient.listBucketsを使用すると、指定したユーザーのバケット一覧を表示できます。

注意

  • IA またはアーカイブストレージクラスのバケットが存在する場合は、Java SDK 2.6.0 以降のバージョンを使用してください。

サンプルコード

次のコードはシンプルモードで指定されたユーザーのバケットを一覧表示します。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // List buckets
  9. List<Bucket> buckets = ossClient.listBuckets();
  10. for (Bucket bucket : buckets) {
  11. System.out.println(" - " + bucket.getName());
  12. }
  13. // Disable the client
  14. ossClient.shutdown();

上記のコードは最大 100 個のバケットを返すことができます。バケットを一覧表示する際には、prefix、marker、および maxkeys などのパラメーターを指定することで、バケットのリストをフィルタリングすることが可能になり、柔軟なクエリ機能を実装することができます。

パラメーター ロール
prefix 名前が指定された接頭辞と一致するバケットのみ返されます。 このパラメータを指定しない場合、prefix 情報はフィルタとして使用されません。
marker 返された結果を、マーカー後のアルファベット順で最初のエントリから表示するように設定します。 このパラメータを指定しない場合、すべてのエントリが最初から表示されます。
max-keys 1 回のリクエストで返されるバケットの最大数を制限します。 このパラメーターを指定しない場合、デフォルト値の 100 が適用されます。 max-keys の値は 1,000 を超えることはできません。

リストの prefix を指定する

  1. ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
  2. listBucketsRequest.setPrefix("<yourBucketPrefix>");
  3. for (Bucket bucket : ossClient.listBuckets()) {
  4. System.out.println(" - " + bucket.getName());
  5. }

リストの max keys を指定する

  1. ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
  2. listBucketsRequest.setMaxKeys(500);
  3. for (Bucket bucket : ossClient.listBuckets()) {
  4. System.out.println(" - " + bucket.getName());
  5. }

バケットの削除

OSSClient.deleteBucketを使用してバケットを削除することができます。次のコードを参照してください。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // Delete the bucket
  9. ossClient.deleteBucket("<bucketName>");
  10. // Disable the client
  11. ossClient.shutdown();

備考:

  • 空でないバケット(オブジェクトまたはオブジェクトフラグメントを含む)は削除できません。
  • 空でないバケットを削除するには、まずバケットの中のすべてのオブジェクトを削除する必要があります。

バケットが存在するかをチェックします。

OSSClient.doesBucketExistインタフェースを使用してバケットがすでに存在するかどうかを確認できます。

次のコードは、指定されたバケットが存在するかどうかを確認します。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. boolean exists = ossClient.doesBucketExist("<bucketName>");
  9. // Disable the client
  10. ossClient.shutdown();

バケットのACL設定

バケット ACL は、private、Public-read & Private-write、Public-read-write の 3 種類に分類されます。OSSClient.setBucketAclを使用して、バケットの ACL ポリシーを構成できます。

ACL Java SDK values
Private CannedAccessControlList.Private
Public-read & Private-write CannedAccessControlList.PublicRead
Public-read-write CannedAccessControlList.PublicReadWrite

次のコードはバケットの ACL を設定します。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // Set the bucket ACL
  9. ossClient.setBucketAcl("<bucketName>", CannedAccessControlList.Private);
  10. // Disable the client
  11. ossClient.shutdown();

バケット ACL を取得する

OSSClient.getBucketAcl を使用するとバケットの ACL ポリシーを取得できます。
次のコードはバケットの ACL を取得します。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. AccessControlList acl = ossClient.getBucketAcl("<bucketName>");
  9. // Bucket ACL
  10. System.out.println(acl.toString());
  11. // Disable the client
  12. ossClient.shutdown();

バケットのロケーションを取得する

バケットのロケーションはリージョンを指しています。 詳細は、基本概念を参照してください。

OSSClient.getBucketLocationを使用してバケット ACL を取得できます。 次のコードは、バケットのロケーションを取得します。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. String location = ossClient.getBucketLocation("<bucketName>");
  9. System.out.println(location);
  10. // Disable the client
  11. ossClient.shutdown();

バケット情報を取得する

バケット情報には Location、CreationDate、Owner および ACL 情報が含まれます。

次のコードはバケットの情報を取得します。

  1. // Take the Hangzhou endpoint for example. Other regions can be filled in based on actual conditions
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // To view the accessKey, log on to https://ak-console.aliyun.com/#/
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // Create an OSSClient instance
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. BucketInfo info = ossClient.getBucketInfo("<bucketName>");
  9. // Location
  10. info.getBucket().getLocation();
  11. // Date created
  12. info.getBucket().getCreationDate();
  13. // owner
  14. info.getBucket().getOwner();
  15. // ACL
  16. info.getGrants();
  17. // Disable the client
  18. ossClient.shutdown();