OSS提供文件生命周期管理来为用户管理对象。用户可以为某个存储空间定义生命周期配置,来为该存储空间的文件定义各种规则。 目前,用户可以通过规则来删除相匹配的文件。每条规则都由如下几个部分组成:
- 文件名称前缀,只有匹配该前缀的文件才适用这个规则
- 操作,用户希望对匹配的文件所执行的操作。
- 日期或天数,用户期望在特定日期或者是在文件最后修改时间后多少天执行指定的操作。
设置生命周期
生命周期的配置规则由一段xml表示。<LifecycleConfiguration><Rule><ID>delete obsoleted files</ID><Prefix>obsoleted/</Prefix><Status>Enabled</Status><Expiration><Days>3</Days></Expiration></Rule><Rule><ID>delete temporary files</ID><Prefix>temporary/</Prefix><Status>Enabled</Status><Expiration><Date>2022-10-12T00:00:00.000Z</Date></Expiration></Rule></LifecycleConfiguration>
一个生命周期的Config里面可以包含多个Rule(最多1000个)。
各字段解释:
- ID字段是用来唯一表示本条规则。
- Prefix指定对存储空间下的符合特定前缀的文件使用规则,不能重叠。
- Status指定本条规则的状态,只有Enabled和Disabled,分别表示启用规则和禁用规则。
- Expiration节点里面的Days表示大于文件最后修改时间指定的天数就删除文件,Date则表示到指定的绝对时间之后就删除文件(绝对时间服从ISO8601的格式)。
可以通过下面的代码,设置上述生命周期规则。using Aliyun.OSS;// 初始化OssClientvar client = new OssClient(endpoint, accessKeyId, accessKeySecret);var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);// 创建第一条规则LifecycleRule lcr1 = new LifecycleRule(){ID = "delete obsoleted files",Prefix = "obsoleted/",Status = RuleStatus.Enabled,ExpriationDays = 3};//创建第二条规则//当ExpirationTime指定使用Date时,请注意此时的含义是:从这个时刻开始一直生效LifecycleRule lcr2 = new LifecycleRule(){ID = "delete temporary files",Prefix = "temporary/",Status = RuleStatus.Enabled,ExpirationTime = DateTime.Parse("2022-10-12T00:00:00.000Z")};setBucketLifecycleRequest.AddLifecycleRule(lcr1);setBucketLifecycleRequest.AddLifecycleRule(lcr2);client.SetBucketLifecycle(setBucketLifecycleRequest);
提示:
注意
- 上面的规则一中ExpriationDays使用了Days,表示3天之后一直生效
- 上面的规则二中ExpriationDays使用了Date,表示2022-10-12T00:00:00.000Z之后一直生效。除非明确清楚使用Date时的含义,否则请慎重使用。
获取生命周期
可以通过下面的代码获取上述生命周期规则。using Aliyun.OSS;var rules = client.GetBucketLifecycle(bucketName);foreach (var rule in rules){Console.WriteLine("ID: {0}", rule.ID);Console.WriteLine("Prefix: {0}", rule.Prefix);Console.WriteLine("Status: {0}", rule.Status);if (rule.ExpriationDays.HasValue)Console.WriteLine("ExpirationDays: {0}", rule.ExpriationDays);if (rule.ExpirationTime.HasValue)Console.WriteLine("ExpirationTime: {0}", FormatIso8601Date(rule.ExpirationTime.Value));}
提示:
清空生命周期
可以通过下面的代码清空存储空间中生命周期规则。using Aliyun.OSS;// 初始化OssClientvar client = new OssClient(endpoint, accessKeyId, accessKeySecret);var LifecycleRequest = new SetBucketLifecycleRequest(bucketName);client.SetBucketLifecycle(LifecycleRequest);