全部產品
Search
文件中心

Object Storage Service:lifecycle(生命週期)

更新時間:Jul 31, 2024

並不是所有上傳至OSS的資料都需要頻繁訪問,但基於資料合規或者存檔等原因,部分資料仍需要繼續以冷儲存類型進行儲存。或者基於業務使用情境,希望大量刪除Bucket內不再需要儲存的資料,您可以通過ossutil lifecycle命令配置基於最後一次修改時間(Last Modified Time)的生命週期規則。如果您希望OSS自動監測資料的訪問模式並識別冷資料,然後將識別出來的冷資料進行儲存類型的轉換,從而達到資料的冷熱階層式存放區,最終降低儲存成本,您可以配置基於最後一次訪問時間(Last Access Time)的生命週期規則。

注意事項

  • 關於生命週期規則的更多資訊,請參見生命週期概述

  • 僅支援通過生命週期規則刪除雲盒Bucket中的Object,不支援轉換Object儲存類型。

添加或修改生命週期規則

添加或修改生命週期規則步驟如下:

  1. 建立本地檔案,並在檔案中配置XML格式的生命週期規則。

  2. ossutil先從本地檔案中讀取生命週期配置,然後將讀取到生命週期配置添加到指定的Bucket。

  • 命令格式

    ossutil lifecycle --method put oss://bucketname local_xml_file

    參數說明如下:

    參數

    說明

    bucketname

    添加或修改生命週期規則的儲存空間名稱。

    local_xml_file

    配置生命週期規則的本地檔案名稱,例如localfile.xml

  • 使用樣本

    重要

    您可以為Bucket添加多條生命週期規則,規則名稱(ID)是生命週期配置的唯一標識。若添加的規則ID已存在,則返回409錯誤。

    1. 在本地建立名為localfile.xml檔案,並根據使用情境寫入不同的生命週期規則。

      常見的生命週期規則如下:

      • 樣本1

        指定生命週期規則應用於examplebucket內的所有Object(即Prefix為空白),在距其最後一次修改時間超過365天后全部刪除;此外還指定了Prefix為test/,指示與首碼test/匹配的Object距其最後修改時間超過30天后轉換為Archive儲存類型。

        有關生命週期支援轉換的儲存類型的更多資訊,請參見通過生命週期規則自動轉換Object的儲存類型

        <?xml version="1.0" encoding="UTF-8"?>
        <LifecycleConfiguration>
          <Rule>
            <ID>test-rule1</ID>
            <Prefix></Prefix>
            <Status>Enabled</Status>
            <Expiration>
              <Days>365</Days>
            </Expiration>
          </Rule>
          <Rule>
            <ID>test-rule2</ID>
            <Prefix>test/</Prefix>
            <Status>Enabled</Status>
            <Transition>
              <Days>30</Days>
              <StorageClass>Archive</StorageClass>
            </Transition>
          </Rule>
        </LifecycleConfiguration>
      • 樣本2

        指定生命週期規則應用於examplebucket內的所有Object(即Prefix為空白),在其最後一次修改時間早於2019年12月30日的Object到期。

        <?xml version="1.0" encoding="UTF-8"?>
        <LifecycleConfiguration>
          <Rule>
            <ID>test-rule0</ID>
            <Prefix></Prefix>
            <Status>Enabled</Status>
            <Expiration>
              <CreatedBeforeDate>2019-12-30T00:00:00.000Z</CreatedBeforeDate>
            </Expiration>
          </Rule>
        </LifecycleConfiguration>
      • 樣本3

        在版本控制狀態下,指定examplebucket內的所有Object距其最後一次修改時間超過10天后轉換為IA儲存類型,Object成為非目前的版本60天后轉換為Archive儲存類型,Object成為非目前的版本90天后刪除。

        <?xml version="1.0" encoding="UTF-8"?>
        <LifecycleConfiguration>
          <Rule>
            <ID>test-rule3</ID>
            <Prefix></Prefix>
            <Status>Enabled</Status>
            <Transition>
              <Days>10</Days>
              <StorageClass>IA</StorageClass>
            </Transition>
            <NoncurrentVersionTransition>
              <NoncurrentDays>60</NoncurrentDays>
              <StorageClass>Archive</StorageClass>
            </NoncurrentVersionTransition>
            <NoncurrentVersionExpiration>
              <NoncurrentDays>90</NoncurrentDays>
            </NoncurrentVersionExpiration>
          </Rule>
        </LifecycleConfiguration>
      • 樣本4

        在以下生命週期規則中指定首碼為data/的所有檔案在距其最後一次訪問時間200天后轉為低頻訪問類型。且再次訪問首碼為logs的檔案時,這些檔案仍保留為低頻訪問類型。

        <?xml version="1.0" encoding="UTF-8"?>
        <LifecycleConfiguration>
          <Rule>
            <ID>test-rule4</ID>
            <Prefix>data/</Prefix>
            <Status>Enabled</Status>
            <Transition>
              <Days>200</Days>
              <StorageClass>IA</StorageClass>
              <IsAccessTime>true</IsAccessTime>
              <ReturnToStdWhenVisit>false</ReturnToStdWhenVisit>
            </Transition>    
          </Rule>  
        </LifecycleConfiguration>

  1. 為examplebucket添加生命週期規則。

    ossutil lifecycle --method put oss://examplebucket localfile.xml

    以下輸出結果表明已成功添加生命週期規則。

    0.299514(s) elapsed

擷取生命週期規則配置

  • 命令格式

    ossutil lifecycle --method get oss://bucketname [local_xml_file]

    參數說明如下:

    參數

    說明

    bucketname

    擷取生命週期規則配置的目標Bucket名稱。

    local_xml_file

    用於存放生命週期規則配置的本地檔案名稱,例如localfile.xml。如果未指定此參數,則生命週期規則配置將直接輸出到螢幕。

  • 使用樣本

    擷取examplebucket配置的生命週期規則。

    ossutil lifecycle --method get oss://examplebucket localfile.xml

    以下輸出結果表明已成功擷取生命週期規則配置,並將其寫入本地localfile.xml檔案。

    0.212407(s) elapsed

刪除生命週期規則配置

  • 命令格式

    ossutil lifecycle --method delete oss://bucketname
  • 使用樣本

    刪除examplebucket的生命週期規則配置。

    ossutil lifecycle --method delete oss://examplebucket

    以下輸出結果表明已刪除examplebucket的生命週期規則配置。

    0.530750(s) elapsed

通用選項

當您需要通過命令列工具ossutil切換至另一個地區的Bucket時,可以通過-e選項指定該Bucket所屬的Endpoint。當您需要通過命令列工具ossutil切換至另一個阿里雲帳號下的Bucket時,可以通過-i選項指定該帳號的AccessKey ID,並通過-k選項指定該帳號的AccessKey Secret。

例如您需要為另一個阿里雲帳號下,華東1(杭州)名為examplebucket的Bucket配置生命週期規則,命令如下:

ossutil lifecycle --method put oss://examplebucket localfile.xml -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

關於此命令的其他通用選項的更多資訊,請參見通用選項