[アップデート] Amazon OpenSearch Serverless の時系列コレクションでデータ保持期間の設定が可能なデータライフサイクルポリシー機能が追加されました

2023.10.25

いわさです。

Amazon OpenSearch Serverless はインフラストラクチャのプロビジョニングや調整などの管理が不要であり、Amazon OpenSearch Servrice のフルマネージドなサーバーレスオプションです。

従来の OpenSearch Service では時系列データのインデックス管理にインデックスステート管理(ISM)を使って、UltraWarm ストレージやコールドストレージにインデックスを移行させる方法がありました。

一方で、Amazon OpenSearch Serverless では実データを S3 に格納しつつノードボリュームにキャッシュを行う仕組みとなっており、インデックス内のデータライフサイクルはサービス側で自動で管理されています。(参考:2023 年 1 月の AWS Black Belt オンラインセミナー資料及び動画公開のご案内 | Amazon Web Services ブログ)

さらに、ドキュメントによると時系列コレクションの場合はホットキャッシュとウォームキャッシュを組み合わせて管理されています。(参考:Amazon OpenSearch Serverless でのキャパシティ制限の管理 - Amazon OpenSearch Service)

これまで、古いデータを定期的に削除する機能は用意されておらず独自でスクリプトなどを用意して運用する必要がありましたが、本日のアップデートで Amazon OpenSearch Serverless の時系列コレクションにデータライフサイクルポリシーを設定することが出来るようになりました。

本日は実際に OpenSearch Serverless コレクションを作成し、設定方法などを確認してみましたので紹介したいと思います。

時系列コレクション作成後にデータライフサイクルポリシーの構成が可能

今回のアップデートは時系列コレクションでのみ利用可能で、検索およびベクトル検索コレクションでは使用することが出来ません。
ここでは次のように時系列コレクションを作成しました。

また、ここでは OpenSearch Dashboard のサンプルデータ機能を使って時系列の Smaple web logs を使ってみました。

作成後は次のような時系列データを確認することが出来ます。

マネジメントコンソールからも作成されたインデックスを確認することが出来ますね。

デフォルト以外のライフサイクルポリシーを追加する

作成のフローの中では特にライフサイクルポリシーを設定する画面は表示されないのですが、作成後にコレクションの詳細画面で「データライフサイクルポリシー」エリアを確認することが出来ます。
また、サイドメニューにも従来は存在しなかった「データライフサイクルポリシー」のメニューが追加されていることが確認出来ます。

コレクション作成直後は上記のようにデフォルトのライフサイクルポリシーが設定されています。
デフォルトポリシーではすべてのインデックスを対象に、無期限でデータ保持を行う設定となっています。

「データライフサイクルポリシーの作成」から新しくライフサイクルポリシーを追加してみましょう。

ポリシーごとに複数のライフサイクルルールを設定することが出来ます。
必要な情報は本日時点では対象インデックスに関する情報と保持したい時間のみです。

次のように先程作成されたインデックスを入力して選択しました。
インデックスパターンを使って複数のインデックスを対象とすることも可能です。

デフォルトではデータ保持で「無制限(削除しない)」が選択されています。

こちらのチェックを外すと、削除する時間を設定することが出来ます。
詳細はドキュメントには記載されていませんが、「S3 から削除」という表記がされているのでキャッシュではなく S3 のデータ本体が削除されるようです。

また、データ保持したい日数は単位に日と時間を選択することができ、最短で 24 時間から、最長で 3,650 日(10 年)まで設定が可能です。

ただし次のドキュメントの記述によれば、保持期間が過ぎたあと 48 時間、または保持期間の 10% のいずれか長い方が経過するまでにベストエフォートベースで削除されるとされています。

It then automatically deletes them on a best-effort basis, typically within 48 hours or 10% of the retention period, whichever is longer.

引用元:Using data lifecycle policies with Amazon OpenSearch Serverless - Amazon OpenSearch Service

ここでは対象インデックスを指定してデータ保持期間を 24 時間に設定しました。

保持期間の 10% である 2.4 時間よりも長い 48 時間で削除されるので、おそらく 48 時間後に直近 24 時間分のデータが保持されてそれ以外は削除されるのかなと予想していますが、時間が経過して削除されたタイミングで結果をこちらで共有したいと思います。

なお、データライフサイクルポリシーの内容はビジュアルエディタで設定も可能ですが、JSON エディタでも入力あるいはアップロードが可能です。

なお、公式ドキュメントに記述されているように複数ルールが該当する場合はインデックスパターンのロンゲストマッチで優先順位が決まる仕様となっているようです。

例えば次のルールの場合、index/sales/hogeインデックスは 15 日間保持されますが、index/sales/loghogeは無制限で保持される形となります。

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

さいごに

本日は Amazon OpenSearch Serverless の時系列コレクションでデータ保持期間の設定が可能なデータライフサイクルポリシー機能が追加されたので試してみました。

10 月 25 日に設定したライフサイクルポリシーですが、10 月 27 日に確認してみるとデータが削除されていることが確認出来ました。

Amazon OpenSearch Serverless は OCU とマネージドストレージで料金が構成されているので、もし時系列データの古いデータが不要なユースケースであればデータライフサイクルポリシーを設定してコスト削減することも出来そうですね。