使用 Amazon OpenSearch 无服务器数据生命周期策略 - 亚马逊 OpenSearch 服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon OpenSearch 无服务器数据生命周期策略

Amazon OpenSearch 无服务器时间序列集合的数据生命周期策略决定了该集合中数据的保留时间。OpenSearch 无服务器会在您配置的时间段内保留数据。

您可以为 AWS 账户 中每个时间序列集合的每个索引配置单独的数据生命周期策略。OpenSearch 无服务器在索引中保留文档的时间至少与您在策略中配置的保留期限相同。然后,它会自动尽最大程度将其删除,通常在 48 小时内或保留期的 10% 时间范围内(以较长者为准)。

只有时间序列集合支持数据生命周期策略。搜索集合或向量搜索集合不支持。

数据生命周期策略

在数据生命周期策略中,您可以指定一系列规则。数据生命周期策略允许您管理与符合这些规则的索引或集合相关的数据的保留期。这些规则定义了索引或索引组中数据的保留期。每条规则都由资源类型 (index)、保留期和保留期适用的资源(索引)列表组成。

您可以使用以下格式之一定义保留期:

  • "MinIndexRetention": "24h" — OpenSearch 无服务器以小时或天为单位保留指定时间段的索引数据。您可以将此时间段设置为从 24h3650d

  • "NoMinIndexRetention": true — OpenSearch 无服务器无限期保留索引数据。

在以下示例策略中,第一条规则指定集合 marketing 内所有索引的保留期为 15 天。第二条规则规定,finance 集合中以 log 开头的所有索引名称均未设置保留期,并且将无限期保留。

{ "lifeCyclePolicyDetail": { "type": "retention", "name": "my-policy", "policyVersion": "MTY4ODI0NTM2OTk1N18x", "policy": { "Rules": [ { "ResourceType":"index", "Resource":[ "index/marketing/*" ], "MinIndexRetention": "15d" }, { "ResourceType":"index", "Resource":[ "index/finance/log*" ], "NoMinIndexRetention": true } ] }, "createdDate": 1688245369957, "lastModifiedDate": 1688245369957 } }

在以下示例策略规则中,OpenSearch 无服务器无限期保留账户内所有集合的所有索引中的数据。

{ "Rules": [ { "ResourceType": "index", "Resource": [ "index/*/*" ] } ], "NoMinIndexRetention": true }

所需权限

OpenSearch 无服务器的生命周期策略使用以下 AWS Identity and Access Management (IAM) 权限。您可以指定 IAM 条件,以限制用户使用与具体集合和索引相关的生命周期策略。

  • aoss:CreateLifecyclePolicy —创建生命周期策略。

  • aoss:ListLifecyclePolicies — 列出当前账户中的所有数据生命周期策略。

  • aoss:BatchGetLifecyclePolicy — 查看与账户或策略名称相关的数据生命周期策略。

  • aoss:BatchGetEffectiveLifecyclePolicy — 查看给定资源(index 是唯一受支持的资源)的数据生命周期策略。

  • aoss:UpdateLifecyclePolicy — 修改给定的数据生命周期策略,并更改其保留设置或资源。

  • aoss:DeleteLifecyclePolicy — 删除数据生命周期策略。

以下基于身份的访问策略允许用户查看所有数据生命周期策略,并使用资源模式 collection/application-logs 更新策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aoss:UpdateLifecyclePolicy" ], "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": "application-logs" } } }, { "Effect": "Allow", "Action": [ "aoss:ListLifecyclePolicies", "aoss:BatchGetLifecyclePolicy" ], "Resource": "*" } ] }

策略优先顺序

在某些情况下,数据生命周期策略规则可能会在策略内部或策略之间重叠。发生这种情况时,具有更具体的资源名称或模式的索引规则,将覆盖具有更通用的资源名称或模式的任何索引(对于两个规则通用)规则。

例如,在以下策略中,两个规则都适用于索引 index/sales/logstash。在这种情况下,第二条规则优先,因为 index/sales/log*index/sales/logstash 匹配的时间最长。因此,OpenSearch 无服务器未设置索引保留期。

{ "Rules":[ { "ResourceType":"index", "Resource":[ "index/sales/*", ], "MinIndexRetention": "15d" }, { "ResourceType":"index", "Resource":[ "index/sales/log*", ], "NoMinIndexRetention": true } ] }

策略语法

提供一条或多条规则。这些规则定义了 OpenSearch 无服务器索引的数据生命周期设置。

每个规则包含以下元素。您可以在每条规则中提供 MinIndexRetentionNoMinIndexRetention,但不能两者兼而有之。

元素 描述
资源类型 该规则适用于的资源类型。数据生命周期策略唯一受支持的选项是 index
资源 资源名称和/或模式的列表。模式由前缀和通配符 (*) 组成,允许将关联权限应用于多个资源。例如,index/<collection-name|pattern>/<index-name|pattern>
MinIndexRetention 索引中文档的最短保留期限,以天 (d) 或小时 (h) 为单位。时间下限是 24h,上限是 3650d
NoMinIndexRetention 如果是 true,OpenSearch 无服务器会无限期保留文档。

下面是一些示例:

{ "Rules": [ { "ResourceType": "index", "Resource": [ "index/autoparts-inventory/*" ], "MinIndexRetention": "20d" }, { "ResourceType": "index", "Resource": [ "index/auto*/gear" ], "MinIndexRetention": "24h" }, { "ResourceType": "index", "Resource": [ "index/autoparts-inventory/tires" ], "NoMinIndexRetention": true } ] }

创建数据生命周期策略 (AWS CLI)

要使用 OpenSearch 无服务器 API 操作创建数据生命周期策略,请使用 CreateLifeCyclePolicy 命令。该命令同时接受内联策略和 .json 文件。必须以 JSON 转义字符串的形式编码内联策略。

以下请求将创建数据生命周期策略:

aws opensearchserverless create-lifecycle-policy \ --name my-policy \ --type retention \ --policy "{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index/autoparts-inventory/*\"],\"MinIndexRetention\": \"81d\"},{\"ResourceType\":\"index\",\"Resource\":[\"index/sales/orders*\"],\"NoMinIndexRetention\":true}]}"

要在 JSON 文件中提供策略,请使用 --policy file://my-policy.json 格式

查看数据生命周期策略

在创建集合之前,您可能想预览账户中的现有数据生命周期策略,以查看哪个网络策略的资源模式与您的集合名称相匹配。以下 ListLifecyclePolicies 请求将列出您账户中的所有数据生命周期策略:

aws opensearchserverless list-lifecycle-policies --type retention

请求将返回有关所有已配置的数据生命周期策略的信息。要查看某一具体策略中定义的模式规则,请在响应的 lifecyclePolicySummaries 元素内容中查找策略信息。请注意此策略的 nametype,并使用 BatchGetLifecyclePolicy 请求中的这些属性来接收具有以下策略详细信息的响应:

{ "lifecyclePolicySummaries": [ { "type": "retention", "name": "my-policy", "policyVersion": "MTY2MzY5MTY1MDA3Ml8x", "createdDate": 1663691650072, "lastModifiedDate": 1663691650072 } ] }

要将结果限制为包含某些具体集合或索引的策略,您可以包含资源筛选器:

aws opensearchserverless list-lifecycle-policies --type retention --resources "index/autoparts-inventory/*"

要查看有关某个具体策略的详细信息,请使用 BatchGetLifecyclePolicy 命令。

更新数据生命周期策略

在修改数据生命周期策略时,所有关联集合都将受到影响。要在 OpenSearch 无服务器控制台中更新数据生命周期策略,请展开数据生命周期策略,选择要修改的策略,然后选择编辑。进行更改,然后选择 保存

要使用 OpenSearch 无服务器 API 更新数据生命周期策略,请使用 UpdateLifecyclePolicy 命令。您必须在请求中包括策略版本。您可以使用 ListLifecyclePoliciesBatchGetLifecyclePolicy 命令检索策略版本。包括最新策略版本可以确保您不会无意中覆盖其他人所做的更改。

以下请求将使用新策略 JSON 文档更新数据生命周期策略:

aws opensearchserverless update-lifecycle-policy \ --name my-policy \ --type retention \ --policy-version MTY2MzY5MTY1MDA3Ml8x \ --policy file://my-new-policy.json

在更新策略与强制执行新保留期限之间,可能会有几分钟的延迟。

删除数据生命周期策略

删除数据生命周期策略后,该策略将不再适用于任何匹配的索引。要在 OpenSearch 无服务器控制台中删除策略,请选择该策略,然后选择 删除

您也可以使用 DeleteLifecyclePolicy 命令:

aws opensearchserverless delete-lifecycle-policy --name my-policy --type retention