AWS S3生命周期规则未生效



我有一个大约有2300万个对象的桶,每个对象都有一个前缀,例如5f930e87b0f83/,其中5或6个对象共享相同的前缀。有些物品已经有好几年的历史了。桶没有版本控制

我在桶上设置了一个生命周期规则,在对象创建30天后删除它们,并设置了一个标签过滤器来识别要应用此规则的对象。这些标签已使用批处理操作进行回顾性应用。

规则配置如下所示,注意我只是对标记键进行过滤,并不关心标记值是什么,所以请将此留空。

aws s3api get-bucket-lifecycle-configuration --bucket some-bucket
{
"Rules": [
{
"Expiration": {
"Days": 30
},
"ID": "Delete Objects after 30 days",
"Filter": {
"Tag": {
"Key": "delete_after_30_days",
"Value": ""
}
},
"Status": "Enabled"
}
]
}

标签相对于对象显示,例如

% aws s3api get-object-tagging --bucket some-bucket --key 5f930e87b0f83/video.mp4
{
"TagSet": [
{
"Key": "delete_after_30_days",
"Value": "true"
}
]
}

标签是几周前添加的,规则是在这之后不久设置的,一旦所有的标签都被添加。我知道会有一个延迟生命周期规则生效但我读过,这是通常只有几天,但是没有标记的对象已被删除或被标记为删除。

我有点不知所措,不知道下一步要检查什么,我不知道任何其他需要的配置,例如围绕权限,生命周期规则工作。

任何帮助都会很感激。由于

继John Rotenstein的评论(非常感谢)之后,似乎需要标签值才能工作。由于在AWS控制台上将其标记为可选,因此假定空白值将捕获具有匹配标记键的任何对象。在更新标签值之后,规则已经识别了正确的对象。

因此,总而言之,标记键和标记值似乎都是必需的,至少如果对象标记有值,并且生命周期规则中的空白标记值不能作为包罗万象。

最新更新