全部產品
Search
文件中心

Object Storage Service:生命週期管理

更新時間:Aug 30, 2018

OSS支援設定生命週期(Lifecycle)規則,自動刪除過期的檔案和碎片,或將到期的檔案轉儲為低頻或Archive Storage類型,從而節省儲存費用。每條規則包含:

  • 規則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");