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

生命周期管理

更新时间:2018-07-24 10:50:06

OSS支持设置生命周期(Lifecycle)规则,自动删除过期的文件和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。每条规则包含:

  • 规则ID。用于标识一条规则,同一存储空间内规则ID不能重复。
  • 策略。有以下两种设置方式。同一存储空间内仅支持一种设置方式。
    • 按前缀匹配。此种方式允许创建多条规则,前缀不能重复。
    • 配置到整个存储空间。此种方式只能创建一条规则。
  • 过期时间。有两种指定方式:
    • 指定距文件最后修改时间N天后过期。
    • 指定日期创建前的文件过期,之后的不过期。
  • 是否生效。

更多关于生命周期的内容请参见管理对象生命周期。生命周期管理的完整代码请参见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. use OSS\Model\LifecycleConfig;
  11. use OSS\Model\LifecycleRule;
  12. use OSS\Model\LifecycleAction;
  13. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  14. $accessKeyId = "<yourAccessKeyId>";
  15. $accessKeySecret = "<yourAccessKeySecret>";
  16. // Endpoint以杭州为例,其它Region请按实际情况填写。
  17. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  18. $bucket= "<yourBucketName>";
  19. // 设置规则ID和文件前缀。
  20. $ruleId0 = "rule0";
  21. $matchPrefix0 = "A0/";
  22. $ruleId1 = "rule1";
  23. $matchPrefix1 = "A1/";
  24. $lifecycleConfig = new LifecycleConfig();
  25. $actions = array();
  26. // 距最后修改时间3天后过期。
  27. $actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DAYS, 3);
  28. $lifecycleRule = new LifecycleRule($ruleId0, $matchPrefix0, "Enabled", $actions);
  29. $lifecycleConfig->addRule($lifecycleRule);
  30. $actions = array();
  31. // 指定日期之前创建的文件过期。
  32. $actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DATE, '2022-10-12T00:00:00.000Z');
  33. $lifecycleRule = new LifecycleRule($ruleId1, $matchPrefix1, "Enabled", $actions);
  34. $lifecycleConfig->addRule($lifecycleRule);
  35. try {
  36. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  37. $ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
  38. } catch (OssException $e) {
  39. printf(__FUNCTION__ . ": FAILED\n");
  40. printf($e->getMessage() . "\n");
  41. return;
  42. }
  43. 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. $bucket= "<yourBucketName>";
  16. $lifecycleConfig = null;
  17. try{
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $lifecycleConfig = $ossClient->getBucketLifecycle($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($lifecycleConfig->serializeToXml() . "\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. $bucket= "<yourBucketName>";
  16. try{
  17. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  18. $ossClient->deleteBucketLifecycle($bucket);
  19. } catch(OssException $e) {
  20. printf(__FUNCTION__ . ": FAILED\n");
  21. printf($e->getMessage() . "\n");
  22. return;
  23. }
  24. print(__FUNCTION__ . ": OK" . "\n");
本文导读目录