OCI Search Service with OpenSearchが使えるようになったので触ってみた
イントロ
Oracle Cloud Infrastructure(OCI)上で使えるマネージドOpenSearchのサービスであるOCI Search Service with OpenSearchが2022/5/11付でGAになったということで早速触ってみました。
構築~クエリしてみるところまでの詳しいガイドを書こうと思っていたんですが、思っていたよりもめちゃ簡単だったのと、すでにステップ・バイ・ステップの親切なチュートリアル(後述)が用意されていて特に書くことがなくなったのでいくつか補足的なポイントだけまとめておきます。
むかしむかしLuceneとかElasticsearchとか自前で構築したときにはそれはそれは苦労した覚えがありますが(そのときのスキルが低かっただけかもしれませんが)、特に事前に学習したりもせずにサクッと使えて良い時代になったなあ感があります。
Search Service with OpenSearchのクラスターを作ってクエリしてみる
以下にステップ・バイ・ステップのチュートリアルが用意されているのでそのままやってみましょう。OpenSearchクラスターの構築、サンプルデータの投入、APIおよびDashboard上でのクエリと一通り含まれています。手順自体も全然多くないので、前提のPolicyの設定やVCNの作成とかで引っかからなければ1時間くらいでスムーズに完了できると思います。VCN、サブネット、踏み台にするVMインスタンスは既存のものがあればそれを使ってしまっても問題ないです。
以下、もしかしたら引っかかるかもポイントだけ補足します。
APIでアクセスするときと、DashboardにアクセスするときのIPが別々になっています。クラスター作成後にOCIのコンソール上に以下のようにそれぞれ表示されているので、混同しないように気をつけましょう。 また、APIアクセスのポートは9200、Dashboardアクセスのポートは5601です(現状設定変更するところはなく固定です)。
チュートリアル上で必要になるローカルマシンでのポートフォワード(SSHトンネル)のコマンドはLinux/Mac用のものしか載ってないですが、Windowsの場合は以下を使いましょう。
ssh {ユーザー}@{踏み台ホストのIP} -i {踏み台ホストアクセス用のローカルの秘密鍵へのパス} -L 5601:{DashboardアクセスのIP}:5601 -L 9200:{APIアクセスのIP}:9200
サービスについての気になった点、留意点
利用にあたって以下は意識しておく必要がありそうです。
セキュリティ関連…APIアクセス、Dashboardアクセスともにアプリケーションレベルでの認証が特に無い(ユーザーID/パスワードを求められたりしない)ので、ネットワーク接続可否で利用を制御する必要があります。クラスターにはインターネットからの直接のアクセスができない(パブリックIPを持たずプライベートIPのみ)ようになっており、基本としてはチュートリアルのようにそのプライベートIPに接続できる同一VCN内のVMインスタンスなどを踏み台にしてアクセスする必要があります。より実践的には、OpenSearchを利用するアプリケーションが同一VCN内にない場合のAPIアクセスについてはAPI Gateway(あるいはLoad BalancerやNetwork Load Balancer)、DashboardアクセスについてはBastionサービスなどを使うのが良いと思われます。
OpenSearchのバージョン…クラスター作成時にSoftware Versionを指定する項目があるんですが、現状ではRead Onlyになっておりv1.2.4固定でした。そのうち複数バージョンから選択できるようになるかも?