AWSを利用する際、さまざまなデータをオブジェクトストレージサービスのAmazon S3に置いている場合も多いと思います。 FessはS3上のデータもクロールして、検索することが可能です。今回はその方法をご紹介します。

認証情報の生成

今回は、IAMユーザーを作成して、その認証情報を利用します。まず、AWSコンソールにログイン後、右上の「アカウント名」をクリックして、「セキュリティ認証情報」をクリックします。

左メニューの「ユーザー」をクリックして、「ユーザーを追加」をクリックします。

任意のユーザー名を入力して、認証情報タイプで「アクセスキー - プログラムによるアクセス」にチェックを入れ、「次のステップ」ボタンをクリックします。

「既存のポリシーを直接アタッチ」をクリック後、入力フォームに「AmazonS3ReadOnlyAccess」を入力し、ポリシー名にチェックを入れます。「次のステップ」ボタンをクリックします。

タグの追加画面が表示されますが、今回は設定しないので何も入力せず「次のステップ」ボタンをクリックします。

確認画面で「ユーザー名」「AWSアクセスの種類」「管理ポリシー」の内容を確認して、「ユーザーの作成」ボタンをクリックします。

ユーザー作成が成功したら、ここで表示される「アクセスキーID」と「シークレットアクセスキー」を控えておきます。 「シークレットアクセスキー」は「表示」のリンクをクリックすると表示されます。 なお、「.csvのダウンロード」ボタンをクリックすると、それらの情報をダウンロードすることもできます。 「アクセスキーID」と「シークレットアクセスキー」はFessの設定で利用するので、保存しておいてください。

今回は、「AmazonS3ReadOnlyAccess」をアタッチして、IAMユーザーを簡単に作っていますが、実際の運用で利用する際にはポリシーの作成やIAMロールを利用するかなどの検討が必要です。

プラグインのインストール

Amazon S3 のバケットをクロールするために、fess-ds-s3プラグインをインストールします。今回利用するのは、Fess 14.3.0です。

管理画面にログイン後、左メニュー「システム」>「プラグイン」をクリックし、画面右上の「インストール」をクリックします。表示された「リモート」タブのプルダウンから「fess-ds-s3-14.3.0」を選択して「インストール」をクリックします。

クロールの設定

次に、クロール設定を作成します。

管理画面の左メニューで「クローラ」>「データストア」>「新規作成」をクリックし、クロール設定を作成します。 設定が必要な項目は以下の4つです。

  • ・名前
  • ・ハンドラ
  • ・パラメータ
  • ・スクリプト
  • 「名前」には任意の文字列を入力し、「ハンドラ」には「AmazonS3DataStore」を選択してください。「パラメータ」には、以下の値を入力します。

  • region=ap-northeast-1
  • accesskeyid=(作成したアクセスキーID)
  • secret_key=(作成したシークレットアクセスキー)
  • buckets=(バケット名)
  • 各項目の説明は以下の通りです。

    キー
    region S3 バケットのリージョン
    accesskeyid AWS アクセスキーID
    secret_key AWS シークレットキー
    buckets AWS バケット名 (オプション指定。クロールするバケットを指定する場合に使用。複数ある場合はカンマ区切りで指定)

    「スクリプト」は以下を入力します。

  • url=object.url
  • title=object.key
  • content=object.contents
  • mimetype=object.mimetype
  • filetype=object.filetype
  • filename=object.filename
  • contentlength=object.size
  • lastmodified=object.last_modified
  • 取得可能なキーと値の説明は以下の通りです。

    キー
    object.url S3 S3 オブジェクトの URL
    object.managementurl S3 オブジェクトの管理 URL
    object.key S3 オブジェクトのキー
    object.etag S3 オブジェクトのタグ
    object.contents S3 オブジェクトのテキスト コンテンツ
    object.mimetype S3 オブジェクトの MIME タイプ
    object.filetype S3 オブジェクトのファイルタイプ
    object.filename S3 オブジェクトのファイル名
    object.size S3 オブジェクトのサイズ
    object.lastmodified S3 オブジェクトの最終更新日時
    object.ownerid S3 オブジェクトの所有者 ID
    object.ownerdisplayname S3 オブジェクトの 所有者の表示名
    object.bucketname S3 オブジェクトのバケット名
    object.creationdate バケットの作成日

    クロールの実行

    クロール設定ができたらクロールを実行してみましょう。管理画面の左メニューの「システム」>「スケジューラ」で「Default Crawler」のジョブを開きます。「今すぐ開始」をクリックしてクローラを開始し、ジョブの状態が「実行中」から「有効」になるまで待ちます。

    検索

    クロール完了後、検索画面にアクセスして検索してみます。 検索結果として、S3内のファイルが表示されれば成功です。

    * * *

    今回は Amazon S3 のバケットをクロールする方法をご紹介しました。 S3上にさまざまなデータを置いて管理している場合には、Fessを利用することで検索が可能になり、データを探しやすくなると思います。クロール設定も簡単にできるので、ぜひご利用ください。