使用 Amazon OpenSearch 无服务器数据生命周期策略 - Amazon OpenSearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon OpenSearch 无服务器的数据生命周期策略定义 OpenSearch 无服务器在时间序列集合中保留数据的时长。例如,您可以设置策略,将日志数据保留 30 天后由 OpenSearch 无服务器进行删除。

您可以为 Amazon Web Services 账户 中每个时间序列集合的每个索引配置单独的策略。OpenSearch 无服务器至少会保留您在策略中指定的时长。然后,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 无服务器的生命周期策略使用以下 Amazon Identity and Access Management (IAM) 权限。您可以指定 IAM 条件,以限制用户使用与具体集合和索引相关的生命周期策略。

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

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

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

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

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

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

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

JSON
{ "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 无服务器会无限期保留文档。

以下示例中,第一条规则适用于 autoparts-inventory 模式(index/autoparts-inventory/*)下的所有索引,要求数据必须保留至少 20 天,之后才能执行任何操作(如删除或归档)。

第二条规则针对与 auto*/gear 模式(index/auto*/gear)匹配的索引,将其保留期设置为至少 24 小时。

第三条规则专门适用于 tires 索引,没有最低保留期限,这意味着该索引中的数据可立即删除或归档,或根据其他标准进行处理。这些规则有助于管理具有不同保留时间或无保留限制的索引数据的保留。

{ "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 } ] }

创建数据生命周期策略

要创建数据生命周期策略,需要定义基于特定标准管理数据保留和删除的规则。

创建数据生命周期策略
  1. 登录到位于 https://console.aws.amazon.com/aos/home 的 Amazon OpenSearch Service 控制台。

  2. 在左侧的导航窗格中,选择数据生命周期策略

  3. 选择创建数据生命周期策略

  4. 输入策略的描述性名称。

  5. 对于数据生命周期,选择添加,然后选择策略的集合和索引。

    首先选择索引所属的集合。然后,从列表中选择索引或输入索引模式。要选择所有集合作为来源,请输入星号(*)。

  6. 对于数据留存,您可以选择无限期保留数据,也可以取消选择无限制(永不删除),并指定 OpenSearch 无服务器自动从 Amazon S3 中删除数据的时间段。

  7. 选择保存,然后选择创建

要使用 Amazon CLI 创建数据生命周期策略,请使用带有以下选项的 create-lifecycle-policy 命令:

  • --name:策略的名称。

  • --type:策略的类型。目前,唯一可用的值为 retention

  • --policy:数据生命周期策略。此参数同时接受内联策略和 .json 文件。必须以 JSON 转义字符串的形式编码内联策略。要在文件中提供策略,请使用 --policy file://my-policy.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}]}"

更新数据生命周期策略

要更新数据生命周期策略,您可以修改现有规则以反映数据留存或删除要求的变更。这使您能够根据数据管理需求的变化调整策略。

从更新策略到 OpenSearch 无服务器开始执行新的保留期限之间,可能会有几分钟的延迟。

更新数据生命周期策略
  1. 登录到位于 https://console.aws.amazon.com/aos/home 的 Amazon OpenSearch Service 控制台。

  2. 在左侧的导航窗格中,选择数据生命周期策略

  3. 选择要更新的数据生命周期策略,然后选择编辑

  4. 使用可视化编辑器或 JSON 编辑器修改策略。

  5. 选择保存

要使用 Amazon CLI 更新数据生命周期策略,请使用 update-lifecycle-policy 命令。

必须在请求中包含 --policy-version 参数。您可以使用 list-lifecycle-policiesbatch-get-lifecycle-policy 命令检索策略版本。我们建议包含最新版本的策略,以防止意外覆盖他人所做的更改。

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

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

删除数据生命周期策略

删除数据生命周期策略后,OpenSearch 无服务器将不再对任何匹配的索引强制执行该策略。

删除数据生命周期策略
  1. 登录到位于 https://console.aws.amazon.com/aos/home 的 Amazon OpenSearch Service 控制台。

  2. 在左侧的导航窗格中,选择数据生命周期策略

  3. 选择要删除的配置策略,然后选择删除并确认删除。

要使用 Amazon CLI 删除数据生命周期策略,请使用 delete-lifecycle-policy 命令。

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