こんにちは、やまぐちです。
概要
Amazon Q Business コネクタを VPC に設置してデータソースとして設定するまでを実施してみます。
Amazon Q Business とデータソース間の通信をプライベート間で完結させたいネットワーク要件がある場合などがユースケースとして挙げられます。
VPC Lambda がイメージに近いと考えています。
S3 バケットをデータソースにして試してみる
今回は、VPC エンドポイント経由からの通信のみがオブジェクトを閲覧できるバケットポリシーを設定して検証します。
VPC 内にコネクタを作成することで VPC エンドポイント経由で S3 バケットにアクセスできるようになります。

S3 バケットの設定
それではまず、データソースとして利用する S3 バケットの設定を実施します。
今回は、以下データが記載された Excel ファイル(sample-pii-data.xlsx)をデータソースとします。
| employee_id | full_name | email_address | phone_number | department | status |
|---|---|---|---|---|---|
| E1001 | 鈴木 一郎 | i.suzuki@example.com | 090-1111-2222 | 営業部 | 在籍 |
| E1002 | 田中 花子 | h.tanaka@example.com | 090-3333-4444 | 人事部 | 在籍 |
| E1003 | 高橋 次郎 | j.takahashi@example.com | 090-5555-6666 | 開発部 | 在籍 |
| E1004 | 佐藤 裕美 | y.sato@example.com | 090-7777-8888 | 営業部 | 休職 |
| E1005 | 伊藤 健太 | k.ito@example.com | 090-9999-0000 | 開発部 | 退職 |
上記ファイルを S3 バケットにアップロードします。
次にバケットポリシーを設定していきます。
今回は、S3 のゲートウェイ型 VPC エンドポイント経由のみでしかS3:GetObjectを実行できないように設定します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::バケット名", "arn:aws:s3:::バケット名/*" ], "Condition": { "StringNotEquals": { "aws:SourceVpce": "vpce-xxxxxxxxxxxxxxxxx" } } } ] }
ここまで設定ができたら、S3 バケット側の設定は完了です。
データソースの設定
それでは、Amazon Q Business 側でデータソースの設定を実施していきます。
※ Application の作成など、手順を一部省略している部分がございます。
Application 作成など、1から Amazon Q Business を設定される方は以下ブログをご覧ください。
blog.serverworks.co.jp
VPC にコネクタを設置せずに設定してみる
まずは、VPC にコネクタを設置せずに実施してみます。
Application 内の Data source からデータソースを設定します。
対象の S3 バケットを選択し、「Configure VPC and security group - optional」をNo VPCで進めます。
データソースとして追加することはできました。
しかし、Sync (同期)を実施すると想定通り失敗しました。
CloudWatch Logs Insights でログを確認すると、権限エラーが出ているのがわかります。

エラー内容
Content/Metadata retrieval failed for document: User: arn:aws:sts::123456789012:assumed-role/QBusiness-DataSource-sf9ve/KendraCustomerSession is not authorized to perform: s3:GetObject on resource: "arn:aws:s3:::バケット名/sample-pii-data.xlsx" with an explicit deny in a resource-based policy (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: xxx; S3 Extended Request ID: xxx=; Proxy: null)
VPC エンドポイント経由からの通信ではなかったため、アクセスがブロックされた形になります。
KendraCustomerSession is not authorized to perform: s3:GetObject on resource
余談ですが、エラーの内容から裏側で Kendra が使われているのがわかりますね。
VPC にコネクタを設置して設定してみる
それでは、次は VPC にコネクタを設置して設定してみます。
データソースの設定画面内の、「Configure VPC and security group - optional」で VPC,サブネット,セキュリティグループを指定します。
セキュリティグループの設定値はこちらからご確認ください
インバウンドルールは、ルールなしで設定します。
アウトバウンドルールも、デフォルトで設定します。

Amazon Q Business が使用するデフォルトのセキュリティグループを次の値で設定することをお勧めします。
- 受信ルール– これを空のままにすると、すべての受信トラフィックがブロックされます。
- 送信ルール– すべての送信トラフィックを許可するルールを 1 つ追加して、Amazon Q Business がデータソースからの同期リクエストを開始できるようにします。
- IPバージョン– IPv4
- タイプ– すべてのトラフィック
- プロトコル– すべてのトラフィック
- ポート範囲– すべて
- 宛先– 0.0.0.0/0
ドキュメントに上記ルールで設定することが推奨と記載があります。 docs.aws.amazon.com
データソースとして設定ができたら、同期をします。
同期中に ENI が作成されていました。
この ENI から S3 バケットにアクセスしている形となります。
しばらくすると、同期が完了しました!
同期が完了すると ENI は自動的に削除されます。

チャットで質問する
同期まで完了したので、チャットで質問してみます。
データソースの内容をもとに回答がきました!

まとめ
Amazon Q Business コネクタを VPC に設置してデータソースとして設定してみました。
VPC 内にコネクタを設置することで、送信元の制御がしやすくなると考えます。
ただし、ENI が自動作成、同期後に削除されるので IP アドレスに空きがあることを確認しておく必要がありそうです。
また、RDS などの一部コネクタは新規での作成ができないので、本設定は S3 コネクタでの利用がユースケースになりそうです。(2025年8月時点)
docs.aws.amazon.com
それではまた、どこかで~