edit-icon download-icon

バケットの管理

最終更新日: May 14, 2018

バケットは、課金、アクセス制御、ロギングおよびその他の高度な機能のためのOSSおよび管理エンティティのストレージスペースです。

注意:以下のシナリオの完全なコードは、GitHubにあります。

バケットを作成する

OssClient::createBucketを使って新しいバケットを作ることができます:

  1. <?php
  2. /**
  3. * Create a bucket
  4. * The ACL specifies the access permission on the bucket, which may be private, public-read, or public-read-write.
  5. * The private permission indicates that only the bucket owner or the authorized user has the permission to read and write the bucket.
  6. * The three permissions respectively correspond to "OSSClient::OSS_ACL_TYPE_PRIVATE",
  7. * OssClient::OSS_ACL_TYPE_PUBLIC_READ,
  8. * OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE
  9. *The three storage types respectively correspond to "OssClient::OSS_STORAGE_STANDARD",
  10. * OssClient::OSS_STORAGE_IA,
  11. * OssClient::OSS_STORAGE_ARCHIVE
  12. * @param OssClient $ossClient OSSClient instance
  13. * @param string $bucket Name of the bucket to be created
  14. * @return null
  15. */
  16. function createBucket($ossClient, $bucket)
  17. {
  18. try {
  19. $options = array(
  20. OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_STANDARD
  21. );
  22. $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options);
  23. } catch (OssException $e) {
  24. printf(__FUNCTION__ . ": FAILED\n");
  25. printf($e->getMessage() . "\n");
  26. return;
  27. }
  28. print(__FUNCTION__ . ": OK" . "\n");
  29. }

注意:

  • バケットの命名規則については、基本概念のOSS の概要を参照してください。

  • 各バケット名はグローバルに一意でなければならないので、あなたのバケット名が他のものと異なることを確認する必要があります。

  • バケット権限の詳細については、RAMを参照してください。

  • createBucket はまれなアクセスとアーカイブの両方のタイプをサポートしています。ストレージタイプの詳細については、ストレージタイプを参照してください。

  • createBucket 内のOptions はオプションです。デフォルトでは追加されません。

バケットが存在するかどうかを確認する

OssClient::doesBucketExistを使ってバケットが存在するかどうかを判断できます:

  1. /**
  2. * Determine whether the bucket exists
  3. *
  4. * @param OssClient $ossClient OssClient instance
  5. * @param string $bucket Bucket name
  6. */
  7. function doesBucketExist($ossClient, $bucket)
  8. {
  9. try {
  10. $res = $ossClient->doesBucketExist($bucket);
  11. } catch (OssException $e) {
  12. printf(__FUNCTION__ . ": FAILED\n");
  13. printf($e->getMessage() . "\n");
  14. return;
  15. }
  16. if ($res === true) {
  17. print(__FUNCTION__ . ": OK" . "\n");
  18. } else {
  19. print(__FUNCTION__ . ": FAILED" . "\n");
  20. }
  21. }

ユーザーのすべてのバケットを一覧表示する

OssClient::listBucketsを使って、ユーザのすべてのバケットをリストすることができます:

  1. <?php
  2. /**
  3. * List all buckets of a user
  4. *
  5. * @param OssClient $ossClient OssClient instance
  6. * @return null
  7. */
  8. function listBuckets($ossClient)
  9. {
  10. $bucketList = null;
  11. try{
  12. $bucketListInfo = $ossClient->listBuckets();
  13. } catch(OssException $e) {
  14. printf(__FUNCTION__ . ": FAILED\n");
  15. printf($e->getMessage() . "\n");
  16. return;
  17. }
  18. $bucketList = $bucketListInfo->getBucketList();
  19. foreach($bucketList as $bucket) {
  20. print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
  21. }
  22. }

バケットを削除する

OssClient::deleteBucketを使ってバケットを削除することができます:

  1. <?php
  2. /**
  3. * Delete a bucket
  4. *
  5. * @param OssClient $ossClient OSSClient instance
  6. * @param string $bucket Name of the bucket to be deleted
  7. * @return null
  8. */
  9. function deleteBucket($ossClient, $bucket)
  10. {
  11. try{
  12. $ossClient->deleteBucket($bucket);
  13. } catch(OssException $e) {
  14. printf(__FUNCTION__ . ": FAILED\n");
  15. printf($e->getMessage() . "\n");
  16. return;
  17. }
  18. print(__FUNCTION__ . ": OK" . "\n");
  19. }

注意:

  • 空でないバケット(マルチパートアップロードのオブジェクトまたはデータ部分を含む)は削除できません。
  • 空でないバケットを削除するには、まずその中のすべてのオブジェクトとパーツを削除する必要があります。

バケットのACLを設定する

バケットを作成するときにバケットACLを設定するだけでなく、サービス要件に応じてバケットACLを変更することもできます。バケットの作成者のみがこの操作を実行する権限を持ちます。バケットパーミッションの詳細な解釈については、RAMを参照してください。

現在、バケットには3つの権限があります。

許可 PHPのSDKの値
Private-read-write OssClient :: OSS_ACL_TYPE_PRIVATE
Public-read と private-write OssClient :: OSS_ACL_TYPE_PUBLIC_READ
Public-read-write OssClient :: OSS_ACL_TYPE_PUBLIC_READ_WRITE

OssClient :: putBucketAclを使ってバケットのアクセス許可を設定することができます:

  1. <?php
  2. /**
  3. * Configure the bucket ACL
  4. *
  5. * @param OssClient $ossClient OssClient instance
  6. * @param string $bucket Bucket name
  7. * @return null
  8. */
  9. function putBucketAcl($ossClient, $bucket)
  10. {
  11. $acl = OssClient::OSS_ACL_TYPE_PRIVATE;
  12. try {
  13. $ossClient->putBucketAcl($bucket, $acl);
  14. } catch (OssException $e) {
  15. printf(__FUNCTION__ . ": FAILED\n");
  16. printf($e->getMessage() . "\n");
  17. return;
  18. }
  19. print(__FUNCTION__ . ": OK" . "\n");
  20. }

バケットのACLを取得する

OssClient::getBucketAclを使ってバケットのアクセス許可を設定することができます:

  1. <?php
  2. /**
  3. * Obtain the bucket ACL configuration
  4. *
  5. * @param OssClient $ossClient OssClient instance
  6. * @param string $bucket Bucket name
  7. * @return null
  8. */
  9. function getBucketAcl($ossClient, $bucket)
  10. {
  11. try {
  12. $res = $ossClient->getBucketAcl($bucket);
  13. } catch (OssException $e) {
  14. printf(__FUNCTION__ . ": FAILED\n");
  15. printf($e->getMessage() . "\n");
  16. return;
  17. }
  18. print(__FUNCTION__ . ": OK" . "\n");
  19. print('acl: ' . $res);
  20. }

Get the Region of a bucket

Region indicates the geographic location of the OSS data center. The user can select the region of data storage based on the cost, request source, and other factors. In general, regions closer to the user are accessed faster. For more information, see the regions that OSS has opened or you can see Region.

You can useOssClient::getBucketLocationto get the Region of a bucket:

  1. /**
  2. * Get the Region of a bucket
  3. *
  4. * @param OssClient $ossClient OssClient examples
  5. * @param string $bucket name of a bucket
  6. * @return null
  7. */
  8. function getBucketLocation($ossClient, $bucket)
  9. {
  10. try {
  11. $Regions = $ossClient->getBucketLocation($bucket);
  12. } catch (OssException $e) {
  13. printf(__FUNCTION__ . ": FAILED\n");
  14. printf($e->getMessage() . "\n");
  15. return;
  16. }
  17. print(__FUNCTION__ . ": OK" . "\n");
  18. var_dump($Regions);
  19. }

Tips:

バケットのメタ情報を取得する

OssClient :: getBucketMetaを使ってバケットのメタ情報を取得することができます:

  1. /**
  2. * get Meta information of a bucket
  3. *
  4. * @param OssClient $ossClient OssClient examples
  5. * @param string $bucket name of a bucket
  6. * @return null
  7. */
  8. function getBucketMeta($ossClient, $bucket)
  9. {
  10. try {
  11. $Metas = $ossClient->getBucketMeta($bucket);
  12. } catch (OssException $e) {
  13. printf(__FUNCTION__ . ": FAILED\n");
  14. printf($e->getMessage() . "\n");
  15. return;
  16. }
  17. print(__FUNCTION__ . ": OK" . "\n");
  18. var_dump($Metas);
  19. }