将筛选条件添加到生命周期规则
筛选条件是一个可选的生命周期规则元素,可用于指定规则适用于哪些对象。
以下元素可用于筛选对象:
- 键前缀
可以基于前缀来筛选对象。如果要将生命周期操作应用于多个前缀下的对象子集,您可以指定单独的规则。在每个规则中,指定基于前缀的筛选条件。有关更多信息,请参阅 [示例]
- 对象标签
可以基于一个或多个标签来筛选对象。每个标签必须与键和值完全匹配,如果您指定多个标签,每个标签键必须是唯一的。具有多个对象标签的筛选条件应用于已指定了所有标签的对象子集。如果某个对象指定了其它标签,则该筛选条件仍将适用。
注意
如果您只指定
Key
元素而未指定Value
元素,则该规则将仅应用于与标签键匹配而未指定值的对象。- 最小或最大对象大小
可以基于大小来筛选对象。可以指定最小大小 (
ObjectSizeGreaterThan
) 或最大大小 (ObjectSizeLessThan
),也可以在同一个筛选条件中指定一系列对象大小。对象大小值以字节为单位。最大筛选条件大小为 5TB。Amazon S3 对生命周期配置应用默认的最小对象大小。有关更多信息,请参阅 示例:支持转换小于 128 KB 的对象。
可以组合不同的筛选元素,在这种情况下,Amazon S3 使用逻辑 AND
。
筛选示例
以下示例说明如何使用不同的筛选元素:
-
使用键前缀指定筛选条件 – 此示例显示一个 S3 生命周期规则,此规则基于键名前缀(
logs/
)应用于一部分对象。例如,此生命周期规则应用于对象logs/mylog.txt
、logs/temp1.txt
和logs/test.txt
。此规则不应用于对象example.jpg
。<LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter>
transition/expiration actions
... </Rule> ... </LifecycleConfiguration>注意
如果您有一个或多个前缀以相同的字符开头,则可以通过在筛选条件中指定不带尾部斜杠 (
/
) 的部分前缀,来将所有这些前缀包含在规则中。例如,假设您有以下前缀:sales1999/ sales2000/ sales2001/
要在规则中包含所有三个前缀,请在生命周期规则中指定
sales
作为前缀。如果您要基于不同的键名称前缀将生命周期操作应用于一部分对象,可指定单独的规则。在每个规则中,指定基于前缀的筛选条件。例如,要描述具有键前缀
projectA/
和projectB/
的对象的生命周期操作,可指定两个规则,如下所示:<LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter>
transition/expiration actions
... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter>transition/expiration actions
... </Rule> </LifecycleConfiguration>有关对象键的更多信息,请参阅 为 Amazon S3 对象命名。
-
指定基于对象标签的筛选条件 – 在以下示例中,此生命周期规则指定基于标签(
)和值(key
)的筛选条件。随后,此规则仅应用于具有特定标签的一部分对象。value
<LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>
key
</Key> <Value>value
</Value> </Tag> </Filter>transition/expiration actions
... </Rule> </LifecycleConfiguration>您可以指定基于多个标签的筛选条件。您必须在
<And>
元素中包含标签,如以下示例所示。此规则指示 Amazon S3 对具有两个标签(带特定的标签键和值)的对象执行生命周期操作。<LifecycleConfiguration> <Rule> <Filter> <And> <Tag> <Key>
key1
</Key> <Value>value1
</Value> </Tag> <Tag> <Key>key2
</Key> <Value>value2
</Value> </Tag> ... </And> </Filter>transition/expiration actions
</Rule> </Lifecycle>此生命周期规则应用于具有指定的两个标签的对象。Amazon S3 执行逻辑
AND
。请注意以下几点:-
每个标签的键和值都 必须完全匹配。如果您只指定
<Key>
元素而不指定<Value>
元素,则该规则将仅应用于与标签键匹配而未 指定值的对象。 -
此规则应用于具有规则中指定的所有标签的一部分对象。如果某个对象指定了其他标签,则该规则仍将适用。
注意
当您在筛选条件中指定多个标签时,每个标签键必须是唯一的。
-
-
指定基于前缀和一个或多个标签的筛选条件 – 在生命周期规则中,您可以指定基于键前缀和一个或多个标签的筛选条件。同样,您必须在
<And>
元素中包含所有这些筛选条件元素,如下所示:<LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>
key-prefix
</Prefix> <Tag> <Key>key1
</Key> <Value>value1
</Value> </Tag> <Tag> <Key>key2
</Key> <Value>value2
</Value> </Tag> ... </And> </Filter> <Status>Enabled</Status>transition/expiration actions
</Rule> </LifecycleConfiguration>Amazon S3 使用逻辑
AND
组合这些筛选条件。也就是说,该规则应用于具有指定键前缀和指定标签的对象子集。一个筛选条件只能有一个前缀以及零个或多个标签。 -
指定空筛选条件 – 可以指定空筛选条件,在此情况下,规则应用于存储桶中的所有对象。
<LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration> -
指定对象大小筛选条件 – 要按对象大小来筛选规则,可以指定最小大小 (
ObjectSizeGreaterThan
) 或最大大小 (ObjectSizeLessThan
),也可以指定一系列对象大小。对象大小值以字节为单位。最大筛选条件大小为 5TB。某些存储类具有最小对象大小限制。有关更多信息,请参阅 比较 Amazon S3 存储类。
<LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration>注意
ObjectSizeGreaterThan
和ObjectSizeLessThan
筛选条件不包含所指定的值。例如,如果您将大小为 128 KB 到 1024 KB 的对象设置为从 S3 Standard 存储类移到 S3 Standard-IA 存储类,则大小精确为 1024 KB 和 128 KB 的对象将不会转换到 S3 Standard-IA。相反,该规则将仅适用于大小大于 128 KB 且小于 1024 KB 的对象。如果要指定对象大小范围,
ObjectSizeGreaterThan
整数必须小于ObjectSizeLessThan
值。当使用多个筛选条件时,必须将筛选条件包装在<And>
元素中。以下示例显示了如何指定范围在 500 字节到 64000 字节之间的对象。<LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>
key-prefix
</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Filter> <Status>Enabled</Status>transition/expiration actions
</Rule> </LifecycleConfiguration>