搭配 Amazon OpenSearch 無伺服器使用資料生命週期政策 - Amazon OpenSearch 服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 Amazon OpenSearch 無伺服器使用資料生命週期政策

Amazon OpenSearch 無伺服器時間序列收集的資料生命週期政策決定了該集合中資料的壽命。 OpenSearch 無伺服器會在您設定的期間內保留資料。

您可以為您的每個時間序列集合的每個索引設定個別的資料生命週期原則AWS 帳戶。 OpenSearch 無伺服器至少會在您在原則中設定的保留期間內,將文件保留在索引中。然後,它會盡最大努力自動刪除它們,通常在 48 小時或保留期的 10% 內(以較長者為準)。

只有時間序列集合支援資料生命週期原則。搜尋或向量搜集合不支援它們。

資料生命週期原

在資料生命週期原則中,您可以指定一系列規則。資料生命週期原則可讓您管理與符合這些規則的索引或集合相關聯的資料保留期間。這些規則會定義索引或索引群組中資料的保留期間。每個規則都包含資源類型 (index)、保留期間以及套用保留期間的資源 (索引) 清單。

您可以使用下列其中一種格式來定義保留期間:

  • "MinIndexRetention": "24h"— OpenSearch 無伺服器會保留指定期間內的索引資料 (以小時或天為單位)。您可以將此期間設定24h為從到3650d

  • "NoMinIndexRetention": true— OpenSearch 無伺服器會無限期保留索引資料。

在下列範例原則中,第一個規則會指定集合中所有索引的保留期為 15 天marketing。第二個規則會指定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 }

必要許可

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 無伺服器索引的資料生命週期設定。

每個規則都包含下列元素。您可以NoMinIndexRetention在每個規則中提供MinIndexRetention或,但不能同時提供兩者。

Element 描述
Resource Type (資源類型) 該規則適用的資源類型。資料生命週期原則唯一支援的選項是index
Resource 資源名稱和/或模式的清單。模式由前綴和萬用字元 (*) 組成,可讓相關聯的權限套用至多個資源。例如:index/<collection-name|pattern>/<index-name|pattern>
MinIndexRetention 在索引中保留文件的最短期間 (以天 (dh) 或小時 () 為單位。下界是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元素內容中尋找原則資訊。請注意此原則typename和,並在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 無伺服器主控台中更新資料生命週期原則,請展開資料生命週期原則,選取要修改的原則,然後選擇編輯。進行變更,然後選擇 Save (儲存)。

若要使用 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