为什么即使我在超过一天前应用了 Amazon S3 存储桶的生命周期规则,它仍然不起作用?

1 分钟阅读
0

我在我的 Amazon Simple Storage Service (Amazon S3) 存储桶上设置了生命周期配置规则。它将对象转换为另一个存储类别,或者使对象过期或将其删除。但是,这些对象并未根据此规则进行更改。我需要确认此规则在管理成本或确保合规性方面是否有效。

解决方法

Amazon S3 生命周期操作是异步执行的。异步操作可能会将对象删除操作延迟到生命周期配置规则中的过期日期或转换日期之后。但是,在您满足生命周期规则的条件后,即使操作尚未完成,AWS 仍会更改计费。

Amazon S3 生命周期规则每天仅运行一次。此外,Amazon S3 会将对象的转换日期或过期日期四舍五入到次日午夜 (UTC)。在检查某个生命周期规则是否完成之前,请确认是否已经过了足够的时间。如果已经过了足够的时间,但您的生命周期规则仍未完成,请检查您是否在生命周期规则中为对象正确设置了前缀筛选器。

前缀筛选器用于确定生命周期规则影响的对象。如果您将前缀筛选器指定为 images/,则生命周期规则将仅应用于前缀为 images/ 的对象。

**注意:**请务必在前缀筛选器的末尾指定 / 字符。如果您在前缀筛选器的开头指定 / 字符,则 Amazon S3 将无法正确评估生命周期规则。

您可以使用 HeadObject API、AWS 命令行界面 (AWS CLI) 或 Amazon S3 控制台来了解当前版本的对象在何时过期。

**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

使用 AWS CLI

运行以下 AWS CLI 命令 head-object 以了解对象何时过期:

aws s3api head-object --bucket bucketname --key file.txt

输出示例:

 {     
 "AcceptRanges": "bytes",    
 "Expiration": "expiry-date=\"Wed, 15 Mar 2023 00:00:00 GMT\", rule-id=\"MyExpirationRule\"",    
 "LastModified": "2023-02-22T17:20:34+00:00",    
 "ContentLength": 6,    
 "ETag": "\"edae42exa0d2b93b123346740107dacf\"",    
 "VersionId": "SoshCRUrlabc1v4ZzYEA123PvWcaeF6F",    
 "ContentType": "text/plain",    
 "ServerSideEncryption": "AES256",    
 "Metadata": {}    
}

Expiration 响应标头提供 expiry-daterule-id 字段。expiry-date 字段显示 Amazon S3 将对象排队等待删除和异步删除对象的日期。rule-id 字段显示应用于该对象的生命周期规则。

使用 Amazon S3 控制台

完成以下步骤:

  1. 打开 Amazon S3 控制台
  2. Buckets(存储桶)列表上,选择您的存储桶的名称。
  3. 选择要查看的对象的名称。
  4. 选择 Properties(属性)选项卡。
  5. Object Management Overview(对象管理概述)部分的 Management Configurations(管理配置)下,查看 Expiration rule(过期规则)和 Expiration date(过期日期)字段。

Expiration date(过期日期)字段显示 Amazon S3 将对象排队等待删除和异步删除对象的日期。Expiration rule(过期规则)字段显示应用于该对象的生命周期规则。

**注意:**只有当前版本的对象可针对 HEADGET 请求返回 Expiration 响应标头。以前的版本和删除标记不会返回此响应标头。此外,对于符合转换条件的对象,没有特定的响应标头来检查其转换日期。

相关信息

在存储桶上设置 S3 生命周期配置

如何监控生命周期规则执行的操作?

AWS 官方
AWS 官方已更新 3 个月前