基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則
您可以通過(guò)基于最后一次訪問(wèn)時(shí)間(LastAccessTime)策略的生命周期規(guī)則來(lái)自動(dòng)監(jiān)測(cè)數(shù)據(jù)的訪問(wèn)模式并識(shí)別冷數(shù)據(jù),然后將識(shí)別出來(lái)的冷數(shù)據(jù)進(jìn)行存儲(chǔ)類型的轉(zhuǎn)換,從而達(dá)到數(shù)據(jù)的冷熱分層存儲(chǔ),最終降低存儲(chǔ)成本。
使用場(chǎng)景
多媒體場(chǎng)景
某網(wǎng)站的視頻、圖片存儲(chǔ)在OSS上,歷史數(shù)據(jù)會(huì)逐漸從熱轉(zhuǎn)冷。因此,您可能需要將網(wǎng)站內(nèi)長(zhǎng)時(shí)間不被訪問(wèn)的數(shù)據(jù)保存為低頻訪問(wèn)類型。此外,部分?jǐn)?shù)據(jù)距離上傳時(shí)間已久,但仍然是熱門訪問(wèn)數(shù)據(jù),這部分?jǐn)?shù)據(jù)需要繼續(xù)保存為標(biāo)準(zhǔn)存儲(chǔ)類型。在該場(chǎng)景下應(yīng)選用基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則,用于自動(dòng)識(shí)別冷熱數(shù)據(jù)并進(jìn)行分層存儲(chǔ),從而降低存儲(chǔ)成本。
相冊(cè)或網(wǎng)盤場(chǎng)景
對(duì)于長(zhǎng)時(shí)間沒(méi)有訪問(wèn)的冷數(shù)據(jù),希望設(shè)置自定義轉(zhuǎn)儲(chǔ)天數(shù),自動(dòng)將冷數(shù)據(jù)轉(zhuǎn)為低頻訪問(wèn)類型,并確保數(shù)據(jù)的實(shí)時(shí)訪問(wèn)。
生命科學(xué)場(chǎng)景
基因測(cè)序生成的大量業(yè)務(wù)數(shù)據(jù),往往需要根據(jù)數(shù)據(jù)的最后訪問(wèn)時(shí)間而非最后修改時(shí)間來(lái)判斷數(shù)據(jù)的冷熱。按以往,客戶只能手動(dòng)通過(guò)日志分析或其他方式進(jìn)行數(shù)據(jù)冷熱的分層管理。但如果選用基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則,則可實(shí)現(xiàn)由服務(wù)端根據(jù)最后訪問(wèn)時(shí)間來(lái)自動(dòng)識(shí)別冷熱數(shù)據(jù)并實(shí)現(xiàn)數(shù)據(jù)分層存儲(chǔ)。不僅如此,您還可以在同一條生命周期規(guī)則中同時(shí)結(jié)合最后訪問(wèn)時(shí)間與最后修改時(shí)間的策略,從而更靈活地進(jìn)行數(shù)據(jù)管理。
使用限制
地域?qū)傩韵拗?/b>
無(wú)地域?qū)傩源鎯?chǔ)空間不支持配置基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則。
金融云地域不支持配置基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則。
不支持刪除數(shù)據(jù)
不支持基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則進(jìn)行數(shù)據(jù)刪除。
匹配條件
生命周期規(guī)則目前僅支持根據(jù)前綴和標(biāo)簽進(jìn)行匹配,不支持通配符匹配、后綴匹配以及正則匹配。
碎片過(guò)期限制
不支持對(duì)重疊前綴的Object設(shè)置兩條或兩條以上包含碎片過(guò)期策略的生命周期規(guī)則。示例如下:
示例一
您對(duì)整個(gè)Bucket設(shè)置了一條包含碎片過(guò)期策略的生命周期規(guī)則,則不支持對(duì)Bucket中任意前綴的Object再設(shè)置一條包含碎片過(guò)期策略的生命周期規(guī)則。
示例二
您對(duì)某個(gè)Bucket中前綴為dir1設(shè)置了一條包含碎片過(guò)期策略的生命周期規(guī)則,則不支持對(duì)該Bucket中包含重疊前綴(例如dir1/dir2)的Object再設(shè)置一條包含碎片過(guò)期策略的生命周期規(guī)則。
注意事項(xiàng)
單個(gè)Bucket最多支持配置1000條生命周期規(guī)則,單條生命周期規(guī)則中可同時(shí)包含最后一次修改時(shí)間以及最后一次訪問(wèn)時(shí)間的策略。
生命周期規(guī)則創(chuàng)建后的24小時(shí)內(nèi),OSS會(huì)加載規(guī)則。規(guī)則加載完成后,OSS會(huì)在每天的北京時(shí)間8:00開(kāi)始執(zhí)行規(guī)則。
在生命周期頁(yè)面打開(kāi)啟用訪問(wèn)跟蹤開(kāi)關(guān)后,OSS默認(rèn)以訪問(wèn)跟蹤開(kāi)啟時(shí)間作為Bucket中所有Object的最后一次訪問(wèn)時(shí)間,如果24小時(shí)內(nèi),同一個(gè)Object有多次GetObject請(qǐng)求,則OSS會(huì)將首次GetObject的請(qǐng)求時(shí)間記錄為Object最后一次訪問(wèn)時(shí)間。其他操作(例如PutObject、CopyObject等)會(huì)根據(jù)操作時(shí)間更新Object的最后一次訪問(wèn)時(shí)間。
關(guān)于哪些操作會(huì)更新Object的最后一次訪問(wèn)時(shí)間的更多信息,請(qǐng)參見(jiàn)哪些操作會(huì)更新Object的LastAccessTime?。
操作步驟
使用OSS控制臺(tái)
單擊Bucket 列表,然后單擊目標(biāo)Bucket名稱。
在左側(cè)導(dǎo)航欄, 選擇 。
在生命周期頁(yè)面,打開(kāi)啟用訪問(wèn)跟蹤開(kāi)關(guān),然后單擊創(chuàng)建規(guī)則。
在創(chuàng)建生命周期規(guī)則面板,按如下說(shuō)明配置生命周期規(guī)則。
存儲(chǔ)空間未開(kāi)啟版本控制
區(qū)域
配置項(xiàng)
說(shuō)明
基礎(chǔ)設(shè)置
狀態(tài)
設(shè)置生命周期規(guī)則的狀態(tài),可選擇啟動(dòng)或禁用。
啟動(dòng)生命周期規(guī)則后,將按照配置的生命周期規(guī)則轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)類型。
禁用生命周期規(guī)則后,將中斷生命周期任務(wù)。
策略
選擇生命周期規(guī)則作用的Object。您可以選擇按前綴匹配或配置到整個(gè)Bucket。
是否允許前綴重疊
OSS默認(rèn)會(huì)檢查各個(gè)生命周期規(guī)則的前綴是否重疊。例如,您設(shè)置了以下兩條包含重疊前綴的生命周期規(guī)則:
規(guī)則1
指定該Bucket內(nèi)所有前綴為dir1/的Object在距離最后一次訪問(wèn)時(shí)間180天后轉(zhuǎn)為低頻訪問(wèn)類型。
規(guī)則2
指定該Bucket內(nèi)所有前綴為dir1/dir2/的Object在距離最后一次訪問(wèn)時(shí)間30天后轉(zhuǎn)歸檔存儲(chǔ)類型。
在未選中該選項(xiàng)的情況下,因后臺(tái)檢測(cè)到dir1/dir2/目錄下的Object同時(shí)匹配兩條轉(zhuǎn)換規(guī)則,因此會(huì)拒絕設(shè)置以上兩條生命周期規(guī)則。
在選中該選項(xiàng)的情況下,dir1/dir2/下的Object會(huì)在30天后轉(zhuǎn)歸檔存儲(chǔ)類型。dir1/下的其他Object會(huì)在180天后轉(zhuǎn)為低頻訪問(wèn)類型。
前綴
輸入規(guī)則要匹配的Object名稱的前綴。
前綴設(shè)置為img,表示匹配名稱以img開(kāi)頭的所有Object,例如imgtest.png、img/example.jpg等。
前綴設(shè)置為img/,表示匹配名稱以img/開(kāi)頭的所有Object,例如img/example.jpg、img/test.jpg等。
標(biāo)簽
生命周期規(guī)則僅針對(duì)擁有指定標(biāo)簽Object生效。例如選擇了按前綴匹配,設(shè)置前綴為img,并設(shè)置標(biāo)簽的key為a,value為1。則該規(guī)則將匹配所有名稱以img開(kāi)頭,標(biāo)簽為a=1的Object。關(guān)于對(duì)象標(biāo)簽的更多信息,請(qǐng)參見(jiàn)對(duì)象標(biāo)簽。
NOT
NOT選項(xiàng)用于設(shè)置生命周期規(guī)則對(duì)指定前綴和標(biāo)簽的Object不生效。
重要開(kāi)啟NOT選項(xiàng)時(shí),前綴和標(biāo)簽必須至少存在一項(xiàng),即同時(shí)設(shè)置前綴和標(biāo)簽或者只設(shè)置前綴或標(biāo)簽。
NOT語(yǔ)義定義標(biāo)簽中的key不支持與標(biāo)簽配置項(xiàng)中定義的key相同。
開(kāi)啟NOT選項(xiàng)后,不支持設(shè)置碎片過(guò)期策略。
文件大小
指定生命周期規(guī)則生效的文件大小。
指定最小文件:生命周期規(guī)則對(duì)大于該值的文件大小生效。取值大于0 B,小于5 TB。
指定最大文件:生命周期規(guī)則對(duì)小于該值的文件大小生效。取值大于0 B,小于等于5 TB。
重要如果在同一條生命周期中,同時(shí)配置了指定最小文件和指定最大文件:
確保指定最大文件的值大于指定最小文件的值。
不支持配置碎片執(zhí)行策略。
不支持配置清除刪除標(biāo)記策略。
文件執(zhí)行策略設(shè)置
文件時(shí)間策略
選擇Object過(guò)期策略,可選擇指定天數(shù)、指定日期和不啟用。選擇不啟用時(shí),文件過(guò)期策略不生效。
生命周期管理規(guī)則
配置轉(zhuǎn)換Object存儲(chǔ)類型的規(guī)則,數(shù)據(jù)可以轉(zhuǎn)換為如下類型:
低頻存儲(chǔ)類型(數(shù)據(jù)被訪問(wèn)后,依舊保留在低頻檔)
低頻存儲(chǔ)類型(數(shù)據(jù)一旦被訪問(wèn),回到標(biāo)準(zhǔn)檔)
歸檔存儲(chǔ)
冷歸檔存儲(chǔ)
深度冷歸檔存儲(chǔ)
例如:當(dāng)您選擇了最后一次訪問(wèn)時(shí)間策略,然后將過(guò)期天數(shù)設(shè)置為30,并指定數(shù)據(jù)在超出指定過(guò)期天數(shù)后將自動(dòng)轉(zhuǎn)換為低頻存儲(chǔ)類型(數(shù)據(jù)被訪問(wèn)后,依舊保留在低頻檔),則最后訪問(wèn)日期為2021年09月01日的Object會(huì)在2021年10月01日被轉(zhuǎn)換為指定的存儲(chǔ)類型。
碎片執(zhí)行策略設(shè)置
碎片過(guò)期策略
設(shè)置對(duì)過(guò)期碎片執(zhí)行的操作。如果選中了標(biāo)簽,則無(wú)法配置該選項(xiàng)。您可以選擇碎片過(guò)期策略的指定天數(shù)或指定日期,也可以選擇不啟用碎片過(guò)期策略。當(dāng)選擇不啟用時(shí),碎片過(guò)期策略不生效。
重要生命周期規(guī)則至少包含文件過(guò)期策略或碎片過(guò)期策略。
碎片規(guī)則
根據(jù)碎片過(guò)期策略選擇的過(guò)期天數(shù)或過(guò)期日期設(shè)定碎片何時(shí)過(guò)期,碎片過(guò)期后會(huì)被自動(dòng)刪除,且刪除后不可恢復(fù)。
存儲(chǔ)空間已開(kāi)啟版本控制
開(kāi)啟版本控制后,基礎(chǔ)設(shè)置與碎片執(zhí)行策略設(shè)置區(qū)域涉及的配置項(xiàng),與未開(kāi)啟版本控制的配置方法相同。以下表格僅介紹與未開(kāi)啟版本控制相比,開(kāi)啟版本控制后配置項(xiàng)存在的差異。
區(qū)域
配置項(xiàng)
說(shuō)明
當(dāng)前版本文件執(zhí)行策略設(shè)置
清理對(duì)象刪除標(biāo)記
開(kāi)啟版本控制后,清除策略中增加了清理對(duì)象刪除標(biāo)記選項(xiàng),其他選項(xiàng)與未開(kāi)啟版本控制時(shí)相同。
選擇此選項(xiàng)后,如果當(dāng)前Object僅有一個(gè)版本且為刪除標(biāo)記時(shí),則OSS將刪除過(guò)期Object的刪除標(biāo)記。如果當(dāng)前Object有多個(gè)版本,且Object的最新版本為刪除標(biāo)記時(shí),則OSS將保留該刪除標(biāo)記。關(guān)于刪除標(biāo)記的更多信息,請(qǐng)參見(jiàn)刪除標(biāo)記。
歷史版本文件執(zhí)行策略設(shè)置
文件時(shí)間策略
設(shè)置歷史版本文件的過(guò)期策略,可選擇指定天數(shù)和不啟用。當(dāng)選擇不啟用時(shí),文件過(guò)期策略不生效。
生命周期管理規(guī)則
設(shè)定一個(gè)過(guò)期天數(shù)N,歷史版本的Object會(huì)在其被轉(zhuǎn)換為歷史版本的N天后,并在過(guò)期的第二天執(zhí)行轉(zhuǎn)換存儲(chǔ)類型操作。例如設(shè)置為30,則在2021年09月01日被轉(zhuǎn)為歷史版本的Object會(huì)在2021年10月01日被轉(zhuǎn)換為指定存儲(chǔ)類型。
重要您可以通過(guò)Object下一個(gè)版本的最后一次訪問(wèn)時(shí)間確定Object被轉(zhuǎn)為歷史版本的時(shí)間。
單擊確定。
生命周期規(guī)則保存成功后,您可以在策略列表中查看已設(shè)置的生命周期規(guī)則。
使用阿里云SDK
僅Java SDK、Go SDK支持基于最后一次訪問(wèn)時(shí)間創(chuàng)建生命周期規(guī)則。創(chuàng)建基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則前,您需要為指定Bucket開(kāi)啟訪問(wèn)跟蹤功能。關(guān)于基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則的代碼示例,請(qǐng)參見(jiàn)SDK簡(jiǎn)介。
Java
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) throws Exception {
// Endpoint以華東1(杭州)為例,其它Region請(qǐng)按實(shí)際情況填寫。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 填寫B(tài)ucket名稱,例如examplebucket。
String bucketName = "examplebucket";
// 創(chuàng)建OSSClient實(shí)例。
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
ossClient.putBucketAccessMonitor(bucketName, AccessMonitor.AccessMonitorStatus.Enabled.toString());
// 指定生命周期規(guī)則1。規(guī)則中指定前綴為logs,且小于等于64 KB的所有文件在距離最后一次訪問(wèn)時(shí)間30天后轉(zhuǎn)為低頻訪問(wèn)類型。且再次訪問(wèn)前綴為logs的文件時(shí),這些文件仍保留為低頻訪問(wèn)類型。
LifecycleRule lifecycleRule = new LifecycleRule("rule1", "logs", LifecycleRule.RuleStatus.Enabled);
List<LifecycleRule> lifecycleRuleList = new ArrayList<LifecycleRule>();
SetBucketLifecycleRequest setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
storageTransition.setStorageClass(StorageClass.IA);
storageTransition.setExpirationDays(30);
storageTransition.setIsAccessTime(true);
storageTransition.setReturnToStdWhenVisit(false);
storageTransition.setAllowSmallFile(true);
List<LifecycleRule.StorageTransition> storageTransitionList = new ArrayList<LifecycleRule.StorageTransition>();
storageTransitionList.add(storageTransition);
lifecycleRule.setStorageTransition(storageTransitionList);
lifecycleRuleList.add(lifecycleRule);
// 指定生命周期規(guī)則2。規(guī)則中指定前綴為dir,且大于64 KB的所有歷史版本文件在距離最后一次訪問(wèn)時(shí)間10天后轉(zhuǎn)為低頻訪問(wèn)類型。且再次訪問(wèn)前綴為dir的文件時(shí),這些文件將轉(zhuǎn)為標(biāo)準(zhǔn)存儲(chǔ)。
LifecycleRule lifecycleRule2 = new LifecycleRule("rule2", "dir", LifecycleRule.RuleStatus.Enabled);
LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition = new LifecycleRule.NoncurrentVersionStorageTransition();
noncurrentVersionStorageTransition.setStorageClass(StorageClass.IA);
noncurrentVersionStorageTransition.setNoncurrentDays(10);
noncurrentVersionStorageTransition.setIsAccessTime(true);
noncurrentVersionStorageTransition.setReturnToStdWhenVisit(true);
noncurrentVersionStorageTransition.setAllowSmallFile(false);
List<LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitionList = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
noncurrentVersionStorageTransitionList.add(noncurrentVersionStorageTransition);
lifecycleRule2.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitionList);
lifecycleRuleList.add(lifecycleRule2);
setBucketLifecycleRequest.setLifecycleRules(lifecycleRuleList);
// 設(shè)置生命周期規(guī)則。
ossClient.setBucketLifecycle(setBucketLifecycleRequest);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
Python
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import LifecycleRule, BucketLifecycle, StorageTransition, NoncurrentVersionStorageTransition
# 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# 填寫B(tài)ucket名稱,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 指定生命周期規(guī)則1。規(guī)則中指定前綴為logs,且大于64 KB的所有文件在距離最后一次訪問(wèn)時(shí)間30天后轉(zhuǎn)為低頻訪問(wèn)類型。且再次訪問(wèn)前綴為logs的文件時(shí),這些文件仍保留為低頻訪問(wèn)類型。
rule1 = LifecycleRule('rule1', 'logs', status=LifecycleRule.ENABLED)
rule1.storage_transitions = [StorageTransition(days=30, storage_class=oss2.BUCKET_STORAGE_CLASS_IA, is_access_time=True, return_to_std_when_visit=False, allow_small_file=True)]
# 指定生命周期規(guī)則2。規(guī)則中指定前綴為dir,且大于64 KB的所有歷史版本文件在距離最后一次訪問(wèn)時(shí)間10天后轉(zhuǎn)為低頻訪問(wèn)類型。且再次訪問(wèn)前綴為dir的文件時(shí),這些文件將轉(zhuǎn)為標(biāo)準(zhǔn)存儲(chǔ)。
rule2 = LifecycleRule('rule2', 'dir', status=LifecycleRule.ENABLED)
rule2.noncurrent_version_sotrage_transitions = [NoncurrentVersionStorageTransition(10, oss2.BUCKET_STORAGE_CLASS_IA, is_access_time=True, return_to_std_when_visit=True, allow_small_file=False)]
lifecycle = BucketLifecycle([rule1, rule2])
# 設(shè)置生命周期規(guī)則。
result = bucket.put_bucket_lifecycle(lifecycle)
print('設(shè)置生命周期成功,返回狀態(tài)為:' + str(result.status))
Go
package main
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func main() {
// yourBucketName填寫B(tài)ucket名稱。
bucketName := "yourBucketName"
// 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 創(chuàng)建OSSClient實(shí)例。
// yourEndpoint填寫B(tài)ucket對(duì)應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請(qǐng)按實(shí)際情況填寫。
client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
isTrue := true
isFalse := false
// 指定生命周期規(guī)則1。規(guī)則中指定前綴為logs,且小于等于64 KB的所有文件在距離最后一次訪問(wèn)時(shí)間30天后轉(zhuǎn)為低頻訪問(wèn)類型。且再次訪問(wèn)前綴為logs的文件時(shí),這些文件仍保留為低頻訪問(wèn)類型。
rule1 := oss.LifecycleRule{
ID: "rule1",
Prefix: "logs",
Status: "Enabled",
Transitions: []oss.LifecycleTransition{
{
Days: 30,
StorageClass: oss.StorageIA,
IsAccessTime: &isTrue,
ReturnToStdWhenVisit: &isFalse,
AllowSmallFile: &isTrue,
},
},
}
// 指定生命周期規(guī)則2。規(guī)則中指定前綴為dir,且大于64 KB的所有歷史版本文件在距離最后一次訪問(wèn)時(shí)間10天后轉(zhuǎn)為低頻訪問(wèn)類型。且再次訪問(wèn)前綴為dir的文件時(shí),這些文件將轉(zhuǎn)為標(biāo)準(zhǔn)存儲(chǔ)。
rule2 := oss.LifecycleRule{
ID: "rule2",
Prefix: "dir",
Status: "Enabled",
NonVersionTransitions: []oss.LifecycleVersionTransition{
{
NoncurrentDays: 10,
StorageClass: oss.StorageIA,
IsAccessTime: &isTrue,
ReturnToStdWhenVisit: &isTrue,
AllowSmallFile: &isFalse,
},
},
}
// 設(shè)置生命周期規(guī)則。
var rules = []oss.LifecycleRule{rule1, rule2}
err = client.SetBucketLifecycle(bucketName, rules)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("%s\n", "set bucket life cycle success")
}
使用命令行工具ossutil
關(guān)于使用ossutil設(shè)置生命周期規(guī)則的具體操作, 請(qǐng)參見(jiàn)添加或修改生命周期規(guī)則。
使用REST API
如果您的程序自定義要求較高,您可以直接發(fā)起REST API請(qǐng)求。直接發(fā)起REST API請(qǐng)求需要手動(dòng)編寫代碼計(jì)算簽名。更多信息,請(qǐng)參見(jiàn)PutBucketLifecycle。
常見(jiàn)問(wèn)題
例如,針對(duì)目標(biāo)存儲(chǔ)空間examplebucket創(chuàng)建了兩條生命周期規(guī)則,規(guī)則一指定該Bucket內(nèi)所有前綴為doc的Object在距離最后一次修改時(shí)間30天后刪除,規(guī)則二指定該Bucket內(nèi)所有前綴為doc的Object在距離最后一次訪問(wèn)時(shí)間30天后轉(zhuǎn)低頻訪問(wèn)類型。
由于OSS執(zhí)行生命周期規(guī)則時(shí)遵循以用戶較低開(kāi)銷為原則,因此僅規(guī)則一生效。原因是規(guī)則一中指定30天后直接刪除與前綴匹配的Object,此后將不再產(chǎn)生費(fèi)用。而規(guī)則二轉(zhuǎn)為低頻訪問(wèn)類型仍會(huì)收取相關(guān)存儲(chǔ)費(fèi)用或者數(shù)據(jù)取回費(fèi)用等。
例如,您已經(jīng)針對(duì)前綴為er
的Object配置了距離最后一次訪問(wèn)時(shí)間30天后轉(zhuǎn)低頻、又過(guò)了30天后當(dāng)Object被訪問(wèn)時(shí)選擇將其轉(zhuǎn)為標(biāo)準(zhǔn)存儲(chǔ)類型的生命周期規(guī)則。但是在距離最后一次訪問(wèn)時(shí)間的35天后,您將生命周期指定的前綴er
變更為re
,此時(shí)原有Object僅轉(zhuǎn)存為低頻訪問(wèn)類型,轉(zhuǎn)存為標(biāo)準(zhǔn)存儲(chǔ)類型的行為不生效。變更規(guī)則命中Object的最后一次訪問(wèn)時(shí)間也是從Bucket開(kāi)啟訪問(wèn)跟蹤時(shí)開(kāi)始統(tǒng)計(jì)。
在已開(kāi)啟版本控制Bucket內(nèi)的每一個(gè)Object都有唯一的版本ID,且不同版本ID的Object相互獨(dú)立。因此可能會(huì)出現(xiàn)歷史版本Object為低頻訪問(wèn)類型,但是最新版本Object為標(biāo)準(zhǔn)存儲(chǔ)類型的情況。
支持,前提是當(dāng)前Bucket不存在基于最后一次訪問(wèn)時(shí)間的生命周期規(guī)則。關(guān)閉訪問(wèn)跟蹤后,系統(tǒng)將停止追蹤Object的最后一次訪問(wèn)時(shí)間信息。待下一次開(kāi)啟訪問(wèn)跟蹤后,將重新刷新所有Object的最后一次訪問(wèn)時(shí)間。
相關(guān)文檔
最后一次訪問(wèn)時(shí)間(LastAccessTime)是Object的一個(gè)重要屬性,在計(jì)費(fèi)、生命周期規(guī)則等場(chǎng)景中均會(huì)涉及。在Bucket開(kāi)啟訪問(wèn)跟蹤后,部分針對(duì)Object的操作可能會(huì)更新Object的LastAccessTime,詳情請(qǐng)參見(jiàn)哪些操作會(huì)更新Object的LastAccessTime?