全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件 ET大脑
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
对象存储 OSS

管理存储空间

更新时间:2018-07-20 15:01:57

存储空间(Bucket)是对象(Object)的容器,对象必须隶属于某个存储空间。

以下场景的完整代码请参见GitHub

创建存储空间

以下代码用于创建存储空间:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. // 存储空间名称。
  16. $bucket= "<yourBucketName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. // 设置存储空间的存储类型为低频访问类型,默认是标准类型。
  20. $options = array(
  21. OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA
  22. );
  23. // 设置存储空间的权限为公共读,默认是私有读写。
  24. $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ, $options);
  25. } catch (OssException $e) {
  26. printf(__FUNCTION__ . ": FAILED\n");
  27. printf($e->getMessage() . "\n");
  28. return;
  29. }
  30. print(__FUNCTION__ . ": OK" . "\n");

存储空间的命名规范,请参见基本概念中的命名规范。

判断存储空间是否存在

以下代码用于判断指定的存储空间是否存在:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. // 存储空间名称。
  16. $bucket= "<yourBucketName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $res = $ossClient->doesBucketExist($bucket);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. if ($res === true) {
  26. print(__FUNCTION__ . ": OK" . "\n");
  27. } else {
  28. print(__FUNCTION__ . ": FAILED" . "\n");
  29. }

列举存储空间

以下代码用于列举存储空间:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. try{
  16. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  17. $bucketListInfo = $ossClient->listBuckets();
  18. } catch(OssException $e) {
  19. printf(__FUNCTION__ . ": FAILED\n");
  20. printf($e->getMessage() . "\n");
  21. return;
  22. }
  23. $bucketList = $bucketListInfo->getBucketList();
  24. foreach($bucketList as $bucket) {
  25. print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
  26. }

设置存储空间的访问权限

存储空间的访问权限(ACL)有以下三类:

访问权限 描述 访问权限值
私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 OssClient::OSS_ACL_TYPE_PRIVATE
公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ
公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE

以下代码用于设置存储空间的访问权限:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. // 存储空间名称。
  16. $bucket= "<yourBucketName>";
  17. // 设置存储空间的权限为私有。
  18. $acl = OssClient::OSS_ACL_TYPE_PRIVATE;
  19. try {
  20. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  21. $ossClient->putBucketAcl($bucket, $acl);
  22. } catch (OssException $e) {
  23. printf(__FUNCTION__ . ": FAILED\n");
  24. printf($e->getMessage() . "\n");
  25. return;
  26. }
  27. print(__FUNCTION__ . ": OK" . "\n");

获取存储空间的访问权限

以下代码用于获取存储空间的访问权限:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. // 存储空间名称。
  16. $bucket= "<yourBucketName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $res = $ossClient->getBucketAcl($bucket);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. print('acl: ' . $res);

获取存储空间的地域

以下代码用于获取存储空间的地域(称为Region或Location):

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. // 存储空间名称。
  16. $bucket= "<yourBucketName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $Regions = $ossClient->getBucketLocation($bucket);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. var_dump($Regions);

关于地域的详细信息请参见基本概念中的地域。

获取存储空间元信息

以下代码用于获取存储空间元信息:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. // 存储空间名称。
  16. $bucket= "<yourBucketName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $Metas = $ossClient->getBucketMeta($bucket);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. var_dump($Metas);

删除存储空间

删除存储空间之前,必须先删除存储空间下的所有文件、LiveChannel和分片上传产生的碎片。

以下代码用于删除存储空间:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. // 存储空间名称。
  16. $bucket= "<yourBucketName>";
  17. try{
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $ossClient->deleteBucket($bucket);
  20. } catch(OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
本文导读目录