Amazon OpenSearch Serverless でデータライフサイクルポリシーを使用する - Amazon OpenSearch Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon OpenSearch Serverless でデータライフサイクルポリシーを使用する

Amazon OpenSearch Serverless 「時系列」コレクションのデータライフサイクルポリシーは、そのコレクション内のデータの有効期間を決定します。OpenSearch Serverless は、設定した期間にわたってデータを保持します。

AWS アカウント内の「各時系列」コレクションのインデックスごとに、個別のデータライフサイクルポリシーを設定できます。OpenSearch Serverless は、少なくともポリシーで設定した保持期間の間、ドキュメントをインデックスに保持します。その後、ベストエフォート方式で、通常は 48 時間以内または保存期間の 10% 以内 (どちらか長い方) に自動的に削除します。

データライフサイクルポリシーをサポートしているのは「時系列」コレクションだけです。「検索コレクション」や「ベクトル検索」コレクションではサポートされていません。

データライフサイクルポリシー

データライフサイクルポリシーでは、一連の「ルール」を指定します。データライフサイクルポリシーでは、これらのルールに一致するインデックスまたはコレクションに関連するデータの保持期間を管理できます。これらのルールは、インデックスまたはインデックスグループ内のデータの保存期間を定義します。各ルールは、リソースタイプ (index)、保持期間、および保持期間が適用されるリソース (インデックス) のリストで構成されています。

保持期間は、以下のいずれかの形式で定義します。

  • "MinIndexRetention": "24h" — OpenSearch Serverless は、指定された期間、インデックスデータを時間単位または日単位で保持します。この期間は、24h3650d で設定できます。

  • "NoMinIndexRetention": true — OpenSearch Serverless はインデックスデータを無期限に保持します。

次のサンプルポリシーでは、最初のルールがコレクション marketing 内のすべてのインデックスに対して 15 日間の保持期間を指定します。2 番目のルールは、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 Serverless のライフサイクルポリシーでは、次の AWS Identity and Access Management (IAM) アクセス許可を使用します。IAM 条件を指定して、特定のコレクションとインデックスに関連付けられたデータライフサイクルポリシーにユーザーを制限できます。

  • aoss:CreateLifecyclePolicy – データライフサイクルポリシーを作成します。

  • aoss:ListLifecyclePolicies – 現在のアカウント内のすべてのデータライフサイクルポリシーを一覧表示します。

  • aoss:BatchGetLifecyclePolicy – アカウントまたはポリシー名に関連付けられたデータライフサイクルポリシーを表示します。

  • aoss:BatchGetEffectiveLifecyclePolicy – 特定のリソース (index がサポートされている唯一のリソース) のデータライフサイクルポリシーを表示します。

  • aoss:UpdateLifecyclePolicy – 特定のデータライフサイクルポリシーを変更し、その保持設定またはリソースを変更します。

  • aoss:DeleteLifecyclePolicy – データライフサイクルポリシーを削除します。

次の ID ベースのアクセスポリシーにより、ユーザーはすべてのデータライフサイクルポリシーを表示し、リソースパターン 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": "*" } ] }

ポリシーの優先順位

ポリシー内またはポリシー間に、複数のデータライフサイクルポリシールールが同時に存在する場合があります。この場合、「両方」のルールに共通するインデックスのより一般的なリソース名またはパターンを含むルールよりもインデックスに対するリソース名またはパターンがより具体的であるルールが優先されます。

例えば、次のポリシーでは、1 つのインデックス index/sales/logstash に 2 つのルールが適用されます。この場合、index/sales/log*index/sales/logstash に対する最長の一致なので 2 番目のルールが優先されます。そのため、OpenSearch Serverless はインデックスの保存期間を設定しません。

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

ポリシー構文

1 つ以上のルールを指定します。これらのルールは OpenSearch Serverless インデックスのデータライフサイクル設定を定義します。

各ルールには以下の要素が含まれます。MinIndexRetention または NoMinIndexRetention を指定できますが、両方を指定することはできません。

要素 説明
リソースタイプ ルールが適用されるリソースのタイプ。データライフサイクルポリシーでサポートされる唯一のオプションは index です。
リソース リソース名やパターンのリスト。パターンはプレフィックスとワイルドカード (*) で構成され、関連付けられたアクセス許可を複数のリソースに適用できます。例えば、index/<collection-name|pattern>/<index-name|pattern> と指定します。
MinIndexRetention ドキュメントをインデックスに保持する最小期間: 日 (d) または時間 (h)。下限は 24h で、上限は 3650d です。
NoMinIndexRetention true の場合、OpenSearch Serverless はドキュメントを無期限に保持します。

次に例をいくつか示します。

{ "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 Serverless 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

リクエストは、設定されているすべてのデータライフサイクルポリシーに関する情報を返します。1 つの特定のポリシーで定義されているパターンルールを表示するには、レスポンスの lifecyclePolicySummaries 要素の内容でポリシー情報を探します。このポリシーの name と type を書き留め、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 Serverless コンソールでデータライフサイクルポリシーを更新するには、[データライフサイクルポリシー] を展開して変更するポリシーを選択した後、[編集] を選択します。変更を行ってから、[Save (保存)] を選択します。

OpenSearch Serverless API を使用してデータライフサイクルポリシーを更新するには、UpdateLifecyclePolicy コマンドを使用します。リクエストには、ポリシーのバージョンを含める必要があります。ポリシーのバージョンは、ListLifecyclePolicies または BatchGetLifecyclePolicy コマンドを使用して取得できます。最新のポリシーバージョンを含めると、他のユーザーによる変更を意図せず上書きしてしまうことがなくなります。

次のリクエストは、データライフサイクルポリシーを新しいポリシーの JSON ドキュメントで更新します。

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

ポリシーを更新してから新しい保持期間が適用されるまでに数分かかる場合があります。

データライフサイクルポリシーを削除する

データライフサイクルポリシーを削除すると、一致するインデックスに適用されなくなります。OpenSearch Serverless コンソールでポリシーを削除するには、ポリシーを選択し、[Delete] (削除) を選択します。

DeleteLifecyclePolicy コマンドを使用することもできます。

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