Amazon Kendra を触ってみた

# はじめに

Amazon Kendra は、様々なデータソースを横断的に検索できるエンタープライズ検索サービスです。Kendra から各種データソースに簡単に接続できるコネクタが提供されていて、Amazon S3, Microsoft SharePoint, Salesforce, ServiceNow, Google ドライブ, Confluence など連携できます。

今回の記事は、Kendra に WebCrawler というコネクタを使って、簡単に日本語の検索が出来る点を確認していきます。初めて Kendra を触ってみる点での備忘録的な記事です。



# Index の作成

Kendra を利用し始める際に、Index の作成が必要です。Index を作成したタイミングから、時間課金で料金が発生します。検証のため Index を作成して放置してしまうと、想定外の料金が発生する可能性があります。検証が終わったら忘れずに削除しましょう。

Create index で作成をします。

![image-20230319131404779.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/814e73fa-44ba-cc75-ce61-3424bc680f37.png)



適当に名前と IAM Role を指定して、Next を押します。

![image-20230319133841115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/e1efb0ed-f987-5051-b88e-827f01a51087.png)



ドキュメントレベルの user access control はデフォルトのまま Next を押します。

![image-20230319133926150.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f0f235e2-c510-03f3-0dc7-9984f49311c1.png)



今回は、Enterprise Edition でやってみます。検証目的の場合は Developer Edition を選択するのもアリです。

![image-20230319133952270.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fecfa552-0a18-73f8-716e-513ef010f058.png)



Index の作成処理が開始されます。約 30 分ほど待機します。

![image-20230319134006064.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/111aad41-2c10-82f7-3766-afcd87579bf5.png)



約 30 分後、Index が作成されました。

![image-20230319203506058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ad3a1f14-e9e6-d096-9b14-781dbc094aa2.png)



# データソースの追加

Kendra にデータソースを追加することで、簡単に検索機能を提供できます。複数のデータソースを追加すると、横串検索が簡単に実現できます。

今回は WebCrawler connector を使って追加をしていきましょう。

![image-20230312164928325.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f1ba2b8a-8845-36e9-5cbe-5ca1a548a848.png)



適当にデータソース名を入れます。また、言語は Japanese を選択します。

![image-20230319204228134.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/316cdb44-090f-7092-cea2-740049c82367.png)



WebCrawler connector は、URL を指定することで、公開されている情報を検索対象にできます。今回は、AWS Document の中から、RDS を指定してみましょう。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Welcome.html

![image-20230319204301438.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4298dca4-9af6-b754-656d-bbfc00104e5d.png)



このあたりは何も入れないデフォルトの状態です。

![image-20230312165346787.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ba1485b2-e5d8-8ba5-dcf9-f4320f48781c.png)



Next を押します。

![image-20230312165423874.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/12c4889a-dc2c-20f9-1053-3790ef9d8141.png)



Crawl に関する動作を指定します。深さやドメインなどを指定します。

![image-20230312170621527.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/23ecd3a8-ef2a-cf9a-6710-9b65a4277b9d.png)



Crawl するスケジュールを指定できます。最短で一時間おきにデータの更新をしてくれるように定期実行できます。今回は Daily を指定してみます。

![image-20230312165519347.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/e8abfb6f-4b25-d23e-9c6e-0921ebe4d074.png)



Create を押します。

![image-20230312165540230.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f2264f7c-ab2a-d96f-2a13-a706f1e6b92f.png)



Sync Now を押します。数分から数時間はかかるかもということなので、待機します。

![image-20230319204423123.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/426df7e2-4f78-50d4-5ffb-27cdf1d2a95b.png)



一定時間後、Sync が完了したことがわかります。

- 521 個の Document が登録された
- 21 個は、エラーで登録できなかった。Favicon.ico や 大きい PDF ファイルの登録がエラーになっていた。

![image-20230319215132602.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/d0bb7057-574d-5bc5-cc69-2e29f818c97f.png)



# 検索のテストを行う

Kendra の画面に、簡単に検索の動作確認が出来る画面が用意されています。メニューから Search indexed content を選択します。

![image-20230319224049128.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a6a86eb2-1a2c-acca-b274-1977bba3f621.png)



デフォルトのままだと日本語の検索が出来ないので、右側のメニューから言語の設定をします。Japanese を選択します。

![image-20230319224203092.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/480d765a-43aa-1b84-a551-f3b41e1db58d.png)



例えば、この検索テキストエリアに「パフォーマンス」を入力すると、登録した RDS の AWS Document の内容を検索できます。URL だけ指定することで、簡単に検索が利用できることがわかりました。

![image-20230319224319782.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4f20598a-5000-9571-21b9-250c13f5be82.png)





# 検索画面を SSO ユーザーに提供する Experiences を構成

Kendra の画面を直接利用するよりも、もう少し他のユーザーに検索画面を提供したい気持ちがでてきます。そういったときに、Experiences 機能が提供されています。IAM Identity Center (旧 AWS SSO) で管理されているユーザーに対して、簡単に検索画面を提供できます。Okta や Azure AD を利用している場合は、ユーザー連携してログインを提供できます。

Create experience を押します。

![image-20230312173208389.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/562c1f7a-d89c-a681-7113-a97631f20fc3.png)



適当に名前を指定と、連携したいデータソースを指定します。

![image-20230319204532242.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5801916c-a9e5-30af-04e6-5a79533c8a08.png)



IAM Role を適当に指定します。

![image-20230312173315853.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/cfc98a26-3b7b-0be0-2a7a-f18ffce37276.png)



ログインを許可する IAM Identity Center 上のユーザーを指定します。ユーザーを指定します。

![image-20230312173341498.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/a8c902af-3ab7-48ca-f834-3bd33d4c11a7.png)



Create を押します。

![image-20230312173358627.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2f373130-99d5-78e1-8cfe-2713c4f6344b.png)



一定時間後、Experience の URL が確認できます。

![image-20230312173647978.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/421ae3a9-1934-3229-b0cc-3ef83e5177ee.png)



この URL を開くと、IAM Identity Center のログイン画面が開かれます。ユーザー名とパスワードを指定します。

![image-20230312173713023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/08319369-09cc-97f3-7025-179285b6561c.png)



表示されました。

![image-20230312173733454.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/34c1cf43-f892-3ca5-91be-720c3795b544.png)



日本語を検索するために、build mode で設定画面を開きます。

![image-20230312173925841.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/f6c8d9cd-e18a-d372-6ddb-895bf1887a94.png)



デフォルト言語を Japanese に変更します。

![image-20230312173950533.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/34f8e407-dd5b-0140-4c37-3cf5e4a2a759.png)



こんな感じで検索が出来ます。

![image-20230319220705397.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/1f6e6f2e-7a2e-d141-8e5b-d23944f6a128.png)





# 検証を通じてわかったこと

- Kendra がサポートしているデータソースの一覧
  - https://docs.aws.amazon.com/kendra/latest/dg/hiw-data-source.html