はじめに
Bedrockって意外に簡単に出来て従量課金なのでサクッと試せるのですね!
ということに気が付いたので、本記事では、AWS BedrockのVPCエンドポイント(PrivateLink)を活用して、セキュアに生成AIへHTTPでアクセスする方法を記載します。AWS公式ドキュメントだけではどうしても分かりづらいため、AWSコンソールの画像付きで紹介します。これから生成AIを業務や個人開発で活用したい方、Bedrockをとりあえず使ってみたい方はぜひ参考にしてください。
以前投稿したAPI GatewayをPrivateで作成してみる のAWS Bedrock版になります。APIGateway版は以前の記事を参照してみてください。
想定読者
- AWSでBedrockをサクッと使って生成AIを試してみたい人
- 生成AIのAPI利用を想定してHTTPリクエストでBedrockにアクセスしたい人
- 実際の本番利用を想定してプライベートな通信VPCエンドポイント(PrivateLink)経由でBedrockにアクセスしたい人
AWS使用料
Bedrockは生成AIモデルとトークンの量に依存します。
今回使用するモデルはClaude Sonnet 4のため以下の使用料になります。
サクッと簡単なQAするだけなら1$以上の課金にはならないでしょう。
少し料金がかかってしまうのはVPCエンドポイントの方ですね。
処理データ1GBはお試しではなかなか使用しないと思うので、気にするのは時間料金の方ですが、1時間に0.014$かかります。
今回の手順で簡単に作成できることがわかるので、サクッと試して不要であれば消しておきましょう。
想定料金体系
今回の手順で作成するVPCエンドポイントを含めた、Bedrockの料金体系は以下の通りです。
項目 | 料金 |
---|---|
Bedrock生成AIモデル利用料 | 使用したトークン数に応じた従量課金 |
VPCエンドポイント時間料金 | 1時間あたり0.014$ |
VPCエンドポイントデータ処理料金 | 処理データ量に応じた従量課金(お試しではほぼ発生しない) |
作業時間
30分
びっくり過ぎるくらい簡単にできます
公式ページ
参考書籍
公式ページはどうしても分かりにくいため、サクッと確実に試すなら書籍購入がおすすめです。
その中でもこの本は手順が丁寧に書かれているので非常に分かりやすく、間違えずに進めることができる良書でした。
Amazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド]
完成イメージ
以下のようにVPC内のEC2からBedrockに対しVPCエンドポイント経由でセキュアにHTTPリクエストが送信でるようになります。
これを実現するためには、大きく分けて2つの手順があります。
Bedrock有効化と、VPCエンドポイント作成です。
それではそれぞれ紹介します。
Bedrock有効化
Bedrock有効化からサクッといきましょう!
AWSコンソールから簡単に作成できます。
手順は以下の通りです。
Bedrockのページの左側メニューからモデルカタログをクリック
Anthropic社のClaude Sonnet 4を使用するのでそのモデルを探しクリック
開かれたページで、リクエスト可能、モデルアクセスをリクエストをクリック
Claude Sonnet 4が選択されていることを確認して次へをクリック
会社名、会社のウエブサイトのURL、どの業界で事業を行っていますか?、対象ユーザーは誰ですか?ユースケースの説明を入力してください。を入力して次へをクリック
最後に確認ページが表示されるため、問題ないことを確認して送信をクリック
数分経つとモデルカタログ画面でアクセスが付与されましたと表示されるため、それまでしばし待ちます。
アクセスが付与されましたが表示されればすぐに使用できます!簡単ですね。
Bedrockお試し利用
アクセス付与された生成モデルをお試しで利用できる機能がBedrockには用意されているためそれを使って確認していきます。
Bedrockのページの左側メニューからチャット/テキストのプレイグラウンドをクリック
開かれた画面でモデルを選択をクリック
モデルを選択画面で今回使用するClaude Sonnet 4を指定して、適用をクリック
これでサクッと試すことができます。
生成AIでよくあるチャット画面が表示されるため、右下の領域にプロンプトを入力して実行ボタンを押下します。
結果が上の領域に表示されます。簡単ですね。
以上です!
続いて、このBedrockに対しセキュアにHTTPアクセスできるようVPCエンドポイント作成していきます。
VPCエンドポイント作成
VPCエンドポイントも、AWSコンソールから簡単に作成できます。
手順は以下の通りです。
VPCのページの左側メニューからエンドポイントをクリック
エンドポイント画面が開いたら画面右上のエンドポイントを作成ボタンを押下
開かれたエンドポイント作成画面で必要事項を入力するだけで完成です!
名前タグ/タイプ設定
名前タグは、任意の名称で大丈夫です。自分の分かりやすい名前を入力します。
タイプは、今回はBedrockに接続するエンドポイントを作成するため、AWSのサービスを選択します。
サービス設定
サービスは、今回Bedrockでホストされている生成モデルに対してリクエストを行う操作を行いたいだけのため、com.amazonaws.ap-northeast-1.bedrock-runtimeを選択します。
以下の4つエンドポイントの違いについては以下に説明があります。
https://docs.aws.amazon.com/ja_jp/bedrock/latest/APIReference/welcome.html
ネットワーク設定
ネットワーク設定で、VPCエンドポイントを設定するVPCを選択します。
DNS名で、DNS名を有効化にチェックを入れておくと、今までのエンドポイント名のままプライベートな通信でアクセスが可能になります。
サブネット設定
サブネットIDのサブネットを選択箇所で選択します。
このまま何も選択しなくてもVPCエンドポイントは作成できてしまうため確実に選択します。
(選択せずに進むといざHTTPリクエストを送ろうとしたときに繋がらずエラーになります。作成後でも変更は可能です)
1つは確実に選択します。EC2と同じサブネットでなくても問題ありません。
冗長化が必要な場合は複数設定しましょう。
セキュリティグループ設定
EC2からエンドポイントまではhttpsの通信になるため、インバウンドルールに443が設定されているセキュリティグループを設定します。
アウトバウンドルールは特に要件がないためデフォルトのまま全て許可にしておきます。
ポリシー設定
次はポリシーです。
実際の本番運用では、必要最低限のアクセスにすることが推奨ですが、今回はお試しのためフルアクセスのままにしておきます。
タグ設定
最後はタグ設定です。
名前タグに入力した内容がそのままNameに設定されるため必要であれば追加/削除します。
全て入力が完了したらエンドポイントを作成ボタンを押下します。
これで作成手順はすべて完了のため、AWSが作成してくれるまでしばし(数分程度)待ちます。
API GatewayでVPCエンドポイントと接続する場合は、API Gateway側に作成したVPCエンドポイントを明示的に指定する設定が必要でした。
一方、Bedrockではその操作が不要でここまでの手順でVPCエンドポイントを作成するだけでVPCエンドポイントとBedrockが連携されます。
エンドポイント確認
作成されたエンドポイントを確認します。
ステータスが使用可能になったら準備完了です。
プライベートDNS名、またはDNS名を指定してアクセス確認を行います。
動作確認
EC2上からHTTPリクエストを送ってみましょう。
正しく、リクエスト/レスポンスできるはずです。
- プライベートDNS名を指定してリクエスト
POST https://bedrock-runtime.ap-northeast-1.amazonaws.com/model/apac.anthropic.claude-3-sonnet-20240229-v1:0/converse HTTP/1.1
Content-Type: application/json
Authorization: Bearer bedrock-api-key-XXX
Content-Length: 121
Host: bedrock-runtime.ap-northeast-1.amazonaws.com
{
"messages": [
{
"role": "user",
"content": [{"text": "hello?"}]
}
]
}
HTTP/1.1 200 OK
Date: Sat, 13 Sep 2025 01:11:45 GMT
Content-Type: application/json
Content-Length: 263
Connection: keep-alive
x-amzn-RequestId: 35552fe6-8114-45c2-a036-57f31de87063
{
"metrics": {
"latencyMs": 1137
},
"output": {
"message": {
"content": [
{
"text": "Hello! I'm Claude, an AI assistant created by Anthropic. How can I help you today?"
}
],
"role": "assistant"
}
},
"stopReason": "end_turn",
"usage": {
"inputTokens": 9,
"outputTokens": 25,
"totalTokens": 34
}
}
- DNS名を指定してリクエスト
POST https://vpce-09xxx.bedrock-runtime.ap-northeast-1.vpce.amazonaws.com/model/apac.anthropic.claude-3-sonnet-20240229-v1:0/converse HTTP/1.1
Content-Type: application/json
Authorization: Bearer bedrock-api-key-XXX
Content-Length: 123
Host: vpce-09xxx.bedrock-runtime.ap-northeast-1.vpce.amazonaws.com
{
"messages": [
{
"role": "user",
"content": [{"text": "hello?"}]
}
]
}
HTTP/1.1 200 OK
Date: Sat, 13 Sep 2025 01:15:46 GMT
Content-Type: application/json
Content-Length: 263
Connection: keep-alive
x-amzn-RequestId: 35552ede-7526-4c18-be53-e5761dc11a3b
{
"metrics": {
"latencyMs": 1247
},
"output": {
"message": {
"content": [
{
"text": "Hello! I'm Claude, an AI assistant created by Anthropic. How can I help you today?"
}
],
"role": "assistant"
}
},
"stopReason": "end_turn",
"usage": {
"inputTokens": 9,
"outputTokens": 25,
"totalTokens": 34
}
}
このHTTPリクエストは以下のページのサンプルを使用しています。
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/getting-started-api-keys.html
${api-key}は、Bedrock画面の以下のボタン押下(APIキー -> 短期APIキーを生成)で簡単に発行できます。
まとめ
AWS BedrockのVPCエンドポイント(PrivateLink)を使えば、EC2などのAWSリソースから生成AI APIへ安全・効率的にアクセスできます。セキュリティグループやサブネットの設定を正しく行うことで、プライベートな通信環境を構築でき、業務利用や個人開発でも安心して生成AIを活用可能です。興味のあるエンジニアの皆さんも、この記事を参考にAWS BedrockのVPCエンドポイント構築にぜひチャレンジしてみてください。
今後もAWSや生成AIの最新情報・ノウハウを発信していきます!