2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS BedrockでVPCエンドポイント(PrivateLink)を使って生成AIをセキュアにHTTPアクセスする手順【画像解説】

Posted at

はじめに

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$以上の課金にはならないでしょう。

image.png

少し料金がかかってしまうのはVPCエンドポイントの方ですね。
処理データ1GBはお試しではなかなか使用しないと思うので、気にするのは時間料金の方ですが、1時間に0.014$かかります。
今回の手順で簡単に作成できることがわかるので、サクッと試して不要であれば消しておきましょう。

image.png

想定料金体系

今回の手順で作成するVPCエンドポイントを含めた、Bedrockの料金体系は以下の通りです。

項目 料金
Bedrock生成AIモデル利用料 使用したトークン数に応じた従量課金
VPCエンドポイント時間料金 1時間あたり0.014$
VPCエンドポイントデータ処理料金 処理データ量に応じた従量課金(お試しではほぼ発生しない)

作業時間

30分
びっくり過ぎるくらい簡単にできます

公式ページ

参考書籍

公式ページはどうしても分かりにくいため、サクッと確実に試すなら書籍購入がおすすめです。
その中でもこの本は手順が丁寧に書かれているので非常に分かりやすく、間違えずに進めることができる良書でした。

Amazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド]

完成イメージ

以下のようにVPC内のEC2からBedrockに対しVPCエンドポイント経由でセキュアにHTTPリクエストが送信でるようになります。

image.png

これを実現するためには、大きく分けて2つの手順があります。
Bedrock有効化と、VPCエンドポイント作成です。
それではそれぞれ紹介します。

Bedrock有効化

Bedrock有効化からサクッといきましょう!
AWSコンソールから簡単に作成できます。
手順は以下の通りです。

image.png

Bedrockのページの左側メニューからモデルカタログをクリック


image.png

Anthropic社のClaude Sonnet 4を使用するのでそのモデルを探しクリック


image.png

開かれたページで、リクエスト可能モデルアクセスをリクエストをクリック


image.png

Claude Sonnet 4が選択されていることを確認して次へをクリック


image.png

会社名、会社のウエブサイトのURL、どの業界で事業を行っていますか?、対象ユーザーは誰ですか?ユースケースの説明を入力してください。を入力して次へをクリック

最後に確認ページが表示されるため、問題ないことを確認して送信をクリック


image.png

数分経つとモデルカタログ画面でアクセスが付与されましたと表示されるため、それまでしばし待ちます。
アクセスが付与されましたが表示されればすぐに使用できます!簡単ですね。

Bedrockお試し利用

アクセス付与された生成モデルをお試しで利用できる機能がBedrockには用意されているためそれを使って確認していきます。

image.png

Bedrockのページの左側メニューからチャット/テキストのプレイグラウンドをクリック


image.png

開かれた画面でモデルを選択をクリック


image.png

モデルを選択画面で今回使用するClaude Sonnet 4を指定して、適用をクリック
これでサクッと試すことができます。


image.png

生成AIでよくあるチャット画面が表示されるため、右下の領域にプロンプトを入力して実行ボタンを押下します。
結果が上の領域に表示されます。簡単ですね。

以上です!

続いて、このBedrockに対しセキュアにHTTPアクセスできるようVPCエンドポイント作成していきます。

VPCエンドポイント作成

VPCエンドポイントも、AWSコンソールから簡単に作成できます。
手順は以下の通りです。

image.png

VPCのページの左側メニューからエンドポイントをクリック


image.png

エンドポイント画面が開いたら画面右上のエンドポイントを作成ボタンを押下

開かれたエンドポイント作成画面で必要事項を入力するだけで完成です!

名前タグ/タイプ設定

image.png

名前タグは、任意の名称で大丈夫です。自分の分かりやすい名前を入力します。
タイプは、今回はBedrockに接続するエンドポイントを作成するため、AWSのサービスを選択します。

サービス設定

image.png

サービスは、今回Bedrockでホストされている生成モデルに対してリクエストを行う操作を行いたいだけのため、com.amazonaws.ap-northeast-1.bedrock-runtimeを選択します。

以下の4つエンドポイントの違いについては以下に説明があります。

https://docs.aws.amazon.com/ja_jp/bedrock/latest/APIReference/welcome.html

ネットワーク設定

image.png
ネットワーク設定で、VPCエンドポイントを設定するVPCを選択します。
DNS名で、DNS名を有効化にチェックを入れておくと、今までのエンドポイント名のままプライベートな通信でアクセスが可能になります。

サブネット設定

image.png
VPCエンドポイントを設定するサブネットを設定します。

サブネットIDサブネットを選択箇所で選択します。
このまま何も選択しなくてもVPCエンドポイントは作成できてしまうため確実に選択します。
(選択せずに進むといざHTTPリクエストを送ろうとしたときに繋がらずエラーになります。作成後でも変更は可能です)

image.png
1つは確実に選択します。EC2と同じサブネットでなくても問題ありません。
冗長化が必要な場合は複数設定しましょう。

セキュリティグループ設定

image.png
次は、セキュリティグループです。

EC2からエンドポイントまではhttpsの通信になるため、インバウンドルールに443が設定されているセキュリティグループを設定します。
image.png

アウトバウンドルールは特に要件がないためデフォルトのまま全て許可にしておきます。
image.png

ポリシー設定

image.png
次はポリシーです。
実際の本番運用では、必要最低限のアクセスにすることが推奨ですが、今回はお試しのためフルアクセスのままにしておきます。

タグ設定

image.png
最後はタグ設定です。
名前タグに入力した内容がそのままNameに設定されるため必要であれば追加/削除します。

全て入力が完了したらエンドポイントを作成ボタンを押下します。
これで作成手順はすべて完了のため、AWSが作成してくれるまでしばし(数分程度)待ちます。

API GatewayでVPCエンドポイントと接続する場合は、API Gateway側に作成したVPCエンドポイントを明示的に指定する設定が必要でした。
一方、Bedrockではその操作が不要でここまでの手順でVPCエンドポイントを作成するだけでVPCエンドポイントとBedrockが連携されます。


エンドポイント確認

image.png

作成されたエンドポイントを確認します。
ステータスが使用可能になったら準備完了です。
プライベート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
image.png
${api-key}は、Bedrock画面の以下のボタン押下(APIキー -> 短期APIキーを生成)で簡単に発行できます。

image.png

まとめ

AWS BedrockのVPCエンドポイント(PrivateLink)を使えば、EC2などのAWSリソースから生成AI APIへ安全・効率的にアクセスできます。セキュリティグループやサブネットの設定を正しく行うことで、プライベートな通信環境を構築でき、業務利用や個人開発でも安心して生成AIを活用可能です。興味のあるエンジニアの皆さんも、この記事を参考にAWS BedrockのVPCエンドポイント構築にぜひチャレンジしてみてください。
今後もAWSや生成AIの最新情報・ノウハウを発信していきます!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?