OSS 的可追加寫對象(Appendable Object)因其可寫狀態,生命週期規則預設無法直接將其儲存類型轉換為冷歸檔或深度冷歸檔。對於不需要繼續追加寫的 Appendable Object,可通過SealAppendObject操作轉換為普通對象,即可通過生命週期規則自動沉降至冷歸檔(Cold Archive)或深度冷歸檔(Deep Cold Archive)的儲存類型,以降低長期儲存成本。
如需調用SealAppendObject介面,請提交工單申請。
以將儲存空間 examplebucket 中,首碼為 appendobjects/ 且最後修改時間超過30天的可追加對象轉換為冷Archive Storage為例,介紹具體操作步驟。
步驟一:列出待處理的可追加寫對象
篩選並列出所有合格Appendable Object,為後續的SealAppendObject操作提供目標。
當Bucket未開啟版本控制時,對Bucket中的可追加寫對象執行追加寫操作,其最後修改時間(Last-Modified)將更新為當前操作時間。而當Bucket處於開啟或暫停版本控制狀態時,可追加寫對象的最後修改時間始終與其初始上傳時間保持一致,後續的追加寫操作不會更新該時間戳記。因此,在Bucket處於開啟或暫停版本控制狀態下,本操作實際列出的是所有初始上傳時間超過30天的可追加寫對象。
ossutil
執行以下命令,篩選並列出所有合格Appendable Object。樣本中將列出最後修改時間超過30天、儲存類型不是冷歸檔/深度冷歸檔的Appendable Object。注意過濾條件順序。
ossutil ls oss://examplebucket/appendobjects/ -r -q --short-format --min-age=30d --metadata-exclude="x-oss-storage-class=*ColdArchive" --metadata-exclude="x-oss-sealed-time=*" --metadata-include="x-oss-object-type=Appendable"返回樣本:
oss://examplebucket/appendobjects/unsealed_object1.txt
oss://examplebucket/appendobjects/unsealed_object2.txt
oss://examplebucket/appendobjects/unsealed_object3.txtAPI
調用GetBucket (ListObjects) 或ListObjectsV2(GetBucketV2) 介面,遍曆指定首碼下的所有對象,並根據以下條件在返回結果中篩選目標對象:
檔案類型欄位
<Type>值為Appendable。儲存類型欄位
<StorageClass>欄位值不為ColdArchive或DeepColdArchive。最後修改時間欄位
<LastModified>在30天前。不包含
<SealedTime>欄位。
步驟二:執行 SealAppendObject 操作
執行 SealAppendObject 操作將Appendable Object轉換為普通對象,以便應用生命週期規則。
ossutil
擷取對象大小:執行
stat命令擷取對象的Content-Length,作為後續SealAppendableObject操作的position參數值。ossutil stat oss://examplebucket/appendobjects/unsealed_object1.txt執行 SealAppendObject 操作:使用
invoke-operation命令調用SealAppendObject介面,將上一步擷取的Content-Length(例如65536)作為position參數傳入。ossutil api invoke-operation --op-name seal --method POST --bucket examplebucket --key appendobjects/unsealed_object1.txt --parameters seal --parameters position=65536
API
擷取對象大小:通過GetBucket (ListObjects) 或ListObjectsV2(GetBucketV2) 介面的返回結果,擷取目標對象的
<Size>值。執行 SealAppendObject 操作:對待操作的檔案依次調用SealAppendObject介面,將上一步擷取的
<Size>欄位作為請求中position參數的值,將其轉為非追加寫狀態。
步驟三:配置生命週期規則
可配置生命週期規則,使其在滿足指定時間條件後自動轉換為冷歸檔或深度冷Archive Storage類型。
注意:此規則對於普通檔案(通過 PutObject、分區上傳等方式上傳的檔案)、處於非追加寫狀態的檔案均適用,請確保規則的首碼設定足夠精確,以避免意外轉換其他檔案。
控制台
登入OSS管理主控台。
單擊Bucket 列表,然後單擊examplebucket。
選擇。
單擊創建規則,按如下說明配置生命週期規則,其餘參數保留預設配置。
地區
配置項
配置方法
基礎設定
狀態
選擇啟動
策略
選擇按首碼匹配
首碼
填入
appendobjects/目前的版本檔案執行原則設定
檔案時間策略
選擇指定天數
生命週期管理規則
選擇最後一次修改時間30天后,資料自動轉換成冷Archive Storage
單擊確定。
ossutil
建立一個名為
lifecycle.xml的檔案,並填入以下內容。該規則會將appendobjects/首碼下,最後修改時間超過30天的對象轉換為ColdArchive儲存類型。<LifecycleConfiguration> <Rule> <ID>rule1</ID> <Prefix>appendobjects/</Prefix> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>ColdArchive</StorageClass> </Transition> </Rule> </LifecycleConfiguration>執行以下命令,為儲存空間
examplebucket應用生命週期規則。ossutil api put-bucket-lifecycle --bucket examplebucket --lifecycle-configuration file://lifecycle.xml
API
調用 PutBucketLifecycle介面,將XML內容作為請求體(Request Body)上傳,為目標儲存空間 examplebucket設定規則。
PUT /?lifecycle HTTP/1.1
Host: oss-examplebucket.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2025 15:23:20 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250506/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>appendobjects/</Prefix>
<Status>Enabled</Status>
<Transition>
<Days>30</Days>
<StorageClass>ColdArchive</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>結果驗證
生命週期規則配置完成後,通常在次日淩晨生效並開始執行。
規則生效後,可通過 OSS 控制台或 ossutil stat 命令查看目標Object的儲存類型,驗證其是否已成功轉換為冷歸檔。