こんにちは。営業推進課の島村です。
Amazon Bedrock が登場し、Amazon Kendra を活用して文章検索アプリケーションの利用ケースが増えているかと思います。
Amazon Kendra は豊富なデータソースコネクタが用意されていますが、当然ながらデータソースごとの接続の方法はデータソースごとによって異なります。
今回は Amazon Kendra が持っているたくさんのデータソースコネクタ、Google Drive との接続をハンズオンしてみます。
前提
- Google WorkSpaces で権限管理を持つアカウントが必要です。
- Amazon Kendra のインデックスはすでに作成済みの状態で進行します。
- サービスアカウントの接続方法で進行します。
手順
Google Cloud
IAM API の有効化(すでに有効化されている場合はスキップでOK)
以下のリンクにアクセスすると、Google Cloud のプロジェクトで API を有効化する画面へ遷移できます。
必要であれば活用してください。
Admin SDK API の有効化(すでに有効化されている場合はスキップでOK)
合わせて、Admin SDK APIも有効化します。
Google Drive API の有効化(すでに有効化されている場合はスキップでOK)
合わせて、Google Drive API も有効化します。
有効化できたらサービスアカウントの作成を行います。
サービスアカウントの作成
[完了] を押しましょう。
作成されたサービスアカウントを選択し、[キー] タブを選びます。
[JSON] で払い出します。
Google Workspaces ドメイン全体の委任
次に、作成したサービスアカウントの権限を絞っていきます。
サービスアカウントの選択し、[詳細]タブの[詳細設定]からGoogle WorkSpacesへログイン可能です。
ついでに、[詳細]の中にあるサービスアカウントのクライアントIDを控えておいてください。
ここからはGoogle WorkSpaces上での操作となります。
[メインメニュー] → [セキュリティ] → [データとアクセス管理] → [APIの制御]から [ドメイン全体の管理] を選択します。
[新しく追加]を選択し、ポップアップが表示されます。
クライアントIDはメモしたものを入力してください。
スコープに関しては以下を全て入力してください。
公式ドキュメントに記載のあるスコープだけでは不足していました。
https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/admin.directory.user.readonly https://www.googleapis.com/auth/admin.directory.group.readonly https://www.googleapis.com/auth/admin.directory.user.alias.readonly https://www.googleapis.com/auth/admin.directory.userschema.readonly https://www.googleapis.com/auth/admin.directory.group.member.readonly #Google Formも取り込みたい場合は以下のURLも追加ください。 https://www.googleapis.com/auth/forms.body.readonly
入力が完了したら[承認]を押してください。
Amazon Kendra
データソースコネクターの作成
インデックスを選択し、データソースコネクタを作成していきます。
Google Drive v2のコネクタを選択してください。
コネクタ名は適当で大丈夫です。
デフォルト言語は、ドキュメント内で使用される言語を選択してください
日本語を選んだとしても、英語ドキュメントの場合は設定が英語にオーバーライドされます
入力したら、[次へ]を選択します。
サービスアカウントを選択し、認証情報を格納する Secrets Manger を作成します。
データソースコネクタから直接作成してくれるので楽ですね。
前手順で取得したJSONに記載されている値を入力します。
項目 | 入力値 |
---|---|
Secret Name | 適当 |
Admin Account Email | Google Cloudの管理者アドレス |
Client Email | JSONからコピペ |
private key | JSONからコピペ |
Identity cralwerは有効にし、IAM Roleを新規作成します。
入力後、[次へ]を押します。
同期対象となるリソースを選択できます。
デフォルトでもいいですが、[My drive & Shared with me]に限定してみます。
同期スケジュールなども選択できます。
今回はテストなので、オンデマンド(手動実行)で設定します。
取り込むフィールドの値を選択できます。
デフォルトのまま[次へ]を押し,設定を確認して作成します。
下準備
早速連携を試してみます。
Google Driveにはあらかじめて、Well-Architected FrameworkのホワイトペーパーPDFを3つほど格納しておきました。
ユーザー1:1ドキュメント
ユーザー1:2ドキュメント
データソースコネクタを選択し、[sync now]を押します。
同期が始まります。ドキュメント数が少ないので10分程度で完了します。
エラーが起きる場合は、Google WorkSpacesの権限を確認するか、Secrets Managerの入力値が異なっていないか確認してください。
同期完了後、インデックスのドキュメント数が増えていました。
しっかり3つ同期できていますね。
最後に検索してドキュメントが返ってくるか確認して終わりにします。
[Search indexed content]で[setting]の中に言語設定を日本語にします。
コスト最適化の柱と入力すると、Well-Architected Frameworkのドキュメントが検索候補に出てきました!
最後に
Amazon KendraとGoogle Driveの連携いかがでしたでしょうか。
Amazon Kendraは割と手軽に様々なSaaSと連携することができ、Kendraの魅力でもあると考えます。
生成AI、特に大規模言語モデルを利用したアプリケーションとKendraの相性はいいので、今後もユースケースが増えそうで楽しみですね。
参考
島村 輝 (Shimamura Hikaru) 記事一覧はコチラ
最近ECS周りをキャッチアップ中。趣味は車・バイク全般。
一応、AWS12冠です。