

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

# 在 Amazon OpenSearch Serverless 中使用数据生命周期策略
<a name="serverless-lifecycle"></a>

Amazon OpenSearch Serverless 中的数据生命周期策略定义了 S OpenSearch erverless 在时间序列集合中保留数据的时间。例如，您可以将策略设置为在 OpenSearch Serverless 删除日志数据之前将其保留 30 天。

您可以为每个时间序列集合中的每个索引配置单独的策略 AWS 账户。 OpenSearch Serverless 将文档至少保留您在策略中指定的期限。然后，OpenSearch 无服务器会自动尽最大程度删除文档，通常在 48 小时内或保留期的 10% 时间范围内（以较长者为准）。

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

**Topics**
+ [数据生命周期政策](#serverless-lifecycle-policies)
+ [所需的权限](#serverless-lifecycle-permissions)
+ [策略优先顺序](#serverless-lifecycle-precedence)
+ [策略语法](#serverless-lifecycle-syntax)
+ [创建数据生命周期策略](#serverless-lifecycle-create)
+ [更新数据生命周期策略](#serverless-lifecycle-update)
+ [删除数据生命周期策略](#serverless-lifecycle-delete)

## 数据生命周期政策
<a name="serverless-lifecycle-policies"></a>

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

您可以使用以下格式之一定义保留期：
+ `"MinIndexRetention": "24h"`— OpenSearch Serverless 以小时或天为单位保留指定时间段的索引数据。您可以将此时间段设置为从 `24h` 到 `3650d`。
+ `"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 Serverless 无限期保留账户内所有集合的所有索引中的数据。

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

## 所需的权限
<a name="serverless-lifecycle-permissions"></a>

 OpenSearch 无服务器的生命周期策略使用以下 AWS 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": "*"
        }
    ]
}
```

------

## 策略优先顺序
<a name="serverless-lifecycle-precedence"></a>

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

例如，在以下策略中，两个规则都适用于索引 `index/sales/logstash`。在这种情况下，第二条规则优先，因为 `index/sales/log*` 与 `index/sales/logstash` 匹配的时间最长。因此， OpenSearch Serverless 不为索引设置任何保留期。

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

## 策略语法
<a name="serverless-lifecycle-syntax"></a>

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

每个规则包含以下元素。您可以在每条规则中提供 `MinIndexRetention` 或 `NoMinIndexRetention`，但不能两者兼而有之。


| Element | 说明 | 
| --- | --- | 
| 资源类型 | 该规则适用于的资源类型。数据生命周期策略唯一受支持的选项是 index。 | 
| 资源 | 资源名称 and/or 模式列表。模式由前缀和通配符（\$1）组成，允许将关联权限应用于多个资源。例如 index/<collection-name\$1pattern>/<index-name\$1pattern>。 | 
| 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
    }
  ]
}
```

## 创建数据生命周期策略
<a name="serverless-lifecycle-create"></a>

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

### 控制台
<a name="serverless-lifecycle-create-console"></a>

**创建数据生命周期策略**

1. 在[https://console.aws.amazon.com/aos/家](https://console.aws.amazon.com/aos/home)中登录亚马逊 OpenSearch 服务控制台。

1. 在左侧的导航窗格中，选择**数据生命周期策略**。

1. 选择**创建数据生命周期策略**。

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

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

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

1. 对于**数据保留**，您可以选择无限期保留数据，也可以取消选择 “**无限制”（从不删除）**并指定一个时间段，在此时间段之后， OpenSearch Serverless 会自动从 Amazon S3 中删除数据。

1. 选择**保存**，然后选择**创建**。

### AWS CLI
<a name="serverless-lifecycle-create-cli"></a>

要使用创建数据生命周期策略 AWS CLI，请使用带有以下选项的[create-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/create-lifecycle-policy.html)命令：
+ `--name`：策略的名称。
+ `--type`：策略的类型。目前，唯一可用的值为 `retention`。
+ `--policy`：数据生命周期策略。此参数同时接受内联策略和 .json 文件。必须以 JSON 转义字符串的形式编码内联策略。要在文件中提供策略，请使用 `--policy file://my-policy.json` 格式。

**Example**  

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

## 更新数据生命周期策略
<a name="serverless-lifecycle-update"></a>

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

在您更新策略和 OpenSearch Serverless 开始强制执行新的保留期之间可能会有几分钟的延迟。

### 控制台
<a name="serverless-lifecycle-update-console"></a>

**更新数据生命周期策略**

1. 在[https://console.aws.amazon.com/aos/家](https://console.aws.amazon.com/aos/home)中登录亚马逊 OpenSearch 服务控制台。

1. 在左侧的导航窗格中，选择**数据生命周期策略**。

1. 选择要更新的数据生命周期策略，然后选择**编辑**。

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

1. 选择**保存**。

### AWS CLI
<a name="serverless-lifecycle-update-cli"></a>

要使用更新数据生命周期策略 AWS CLI，请使用[update-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/update-lifecycle-policy.html)命令。

必须在请求中包含 `--policy-version` 参数。您可以使用 [list-lifecycle-policies](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/list-lifecycle-policies.html) 或 [batch-get-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/batch-get-lifecycle-policy.html) 命令检索策略版本。我们建议包含最新版本的策略，以防止意外覆盖他人所做的更改。

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

**Example**  

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

## 删除数据生命周期策略
<a name="serverless-lifecycle-delete"></a>

当您删除数据生命周期策略时， OpenSearch Serverless 将不再在任何匹配的索引上强制执行该策略。

### 控制台
<a name="serverless-lifecycle-delete-console"></a>

**删除数据生命周期策略**

1. 在[https://console.aws.amazon.com/aos/家](https://console.aws.amazon.com/aos/home)中登录亚马逊 OpenSearch 服务控制台。

1. 在左侧的导航窗格中，选择**数据生命周期策略**。

1. 选择要删除的配置策略，然后选择**删除**并确认删除。

### AWS CLI
<a name="serverless-lifecycle-delete-cli"></a>

要使用删除数据生命周期策略 AWS CLI，请使用[delete-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/opensearchserverless/delete-lifecycle-policy.html)命令。

**Example**  

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