前回はElastic社が提供している「Elastic Cloud」でのFessの利用方法について説明しました。今回は、AWSが提供している「AWS Elasticsearch Service」でのFessの利用方法を紹介します。

AWS環境の準備

今回は、事前にAWSアカウントを取得して、AWSのサービスが利用可能な状態であることを前提とします。

AWS環境でFessを利用する場合、Amazon ECS(Elastic Container Service)やAmazon EKS(Elastic Kubernetes Service)などにFessをデプロイすることになると思います。ここでは説明をシンプルにするために、Fessはローカル環境上で動作させ、Elasticsearch Serviceと接続するようにします。実際に運用する場合は、ご利用の環境に合わせて適切なAWSの権限設定で利用してください。

AWS Elasticsearch Serviceのデプロイ

AWSマネジメントコンソールにサインインしたら、Elasticsearch Serviceのサービスの画面を表示して「新しいドメインを作成」ボタンをクリックします。今回は検証目的で環境を構築するので、「デプロイタイプ」は「開発およびテスト」を選択します。また、Elasticsearchのバージョンは、現時点で最新である「7.9」を選択し、「次へ」をクリックします。

手順

デプロイタイプの選択

次は「ドメインの設定」です。今回は以下のように設定します。

項目 設定値
Elasticserach ドメイン名 fess-demo
カスタムエンドポイント 無効化
自動調整 無効化
インスタンスタイプ r5.large.elasticsearch(デフォルト)

これらの設定値は構築したい環境の要件によって変わるため、運用する際はAWSの公式ドキュメントを参照の上、調整してください。 今回の設定は、最低限の動作確認ができる設定値として利用しています。

設定ができたら、「次へ」ボタンをクリックします。

手順

「アクセスとセキュリティの設定」では以下のように設定します。

項目 設定値
ネットワーク構成 パブリックアクセス
細かいアクセスコントロール 有効化
マスターユーザーの作成 マスターユーザー名とパスワードを指定
アクセスポリシー IPv4アドレスを指定

今回はローカル環境からElasticsearch Serviceに接続するため、VPCでなく、パブリックなアクセスにして、マスターユーザー名とパスワードを設定しています。このユーザー名とパスワードが、Fessからアクセスするために必要な情報となります。

アクセスポリシーには、アクセス元のIPを設定しておきます。アクセス元のIPアドレスはローカル環境がインターネットから見えているグローバルIPアドレスになります。

アクセス権限に関する設定は、ご利用の環境に合わせて設定してください。

設定ができたら、「次へ」ボタンをクリックします。

手順

タグの追加は必要に応じて設定し、「次へ」ボタンをクリックします。

手順

最後に設定した内容が表示されるので、問題ないことを確認して、「確認」ボタンをクリックしてください。10分ほどでElasticsearchクラスタが利用可能になり、ステータスがアクティブになります。

手順

ここまでがElasticsearch Serviceのデプロイ手順になります。

Fessの設定と起動

Elastic Cloudの利用時と同様、DockerでFessを実行します。以下のように「docker run」を実行するとFessを起動できます。

docker run -d -p 8080:8080 \
  -e ES_HTTP_URL=<エンドポイントURL> \
  -e ES_TYPE=aws \
  -e ES_USERNAME=<ドメイン作成時に設定したユーザー名> \
  -e ES_PASSWORD=<ドメイン作成時に設定したパスワード> \
   ghcr.io/codelibs/fess:13.12

「ES_TYPE」は「aws」、「ES_HTTP_URL」は「Elasticsearch Serviceのエンドポイント」、「ES_USERNAME」と「ES_PASSWORD」は「ドメイン作成時に指定したもの」を指定してください。

Fessの起動後、「http://localhost:8080/」にアクセスし、管理画面でダッシュボードを確認するとElasticsearch Serviceのノードが表示されていると思います。

なお、Fessの動作確認後、利用しないElasticsearch Serviceの環境を削除することを忘れないようにしてください。

Elastic Cloud利用時との違い

「ES_TYPE」で「aws」か「cloud」を指定するだけで、Fessの起動方法や制約などはほぼ同様になります。

現時点では、AWS Elasticsearch ServiceでElasticsearchプラグインを変更することはできません。そのため、「ES_TYPE」を「aws」に設定した場合は、AWSで提供されているプラグインに合わせたインデックスマッピングを適用して、Fessを動作させています。そのため、「ES_TYPE」が「aws」のときにはAWS Elasticsearch Service専用の設定になり、cloudの場合はプラグインが調整可能なマネージドElasticsearch向けの設定が適用されます。

* * *

今回はAWS Elasticsearch Serviceに接続して、Fessを利用する方法をご紹介しました。

Elastic Cloudと同様、Fessでの辞書管理機能は利用できませんが、マネージドのElasticsearchを簡単に利用でき、Fess自体もマネージドな環境にデプロイして利用しやすいので、ぜひ試してみてください。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。

本連載の内容やFessに関するご質問は公式フォーラムまで。