LLMは学習データの時点以降の情報を知らない。それはAIエージェントも同じ問題を抱えていた。Amazon Bedrock AgentCoreに追加されたWeb Search機能は、エージェントがリアルタイムのWeb情報を参照できるようにするものだ(2026年6月、AWS Summit NYにて発表)。この記事では、設定方法の手順だけでなく、「AIが自律的にWebを検索して答えを返す」エージェントが実際に動くところまでを一本のシナリオで見せる。AWSコンソールの操作は詰まりやすいポイントを先に出しておく。
図解:AgentCore Web Searchの全体構造
flowchart LR
subgraph エージェント側
CODE[エージェントコード\nBedrock モデル呼び出し]
end
subgraph AWS クラウド側
GW[AgentCore Gateway\nMCP サーバー]
WS[Web Search\nマネージドツール]
GW -->|MCP ターゲット| WS
end
WEB[(リアルタイム Web)]
CODE -->|MCP over HTTPS| GW
WS --> WEB
WEB -->|最新情報| WS
エージェントコードは AgentCore Gateway の MCP エンドポイントだけを知っていればよい。Web Search ツールの呼び出し・Web へのアクセス・結果の返却はすべてクラウド側が担う。
まず「動いた後」のイメージを持つ
今回作るのは情報収集エージェントだ。ユーザーが「最新のAWS料金改定について調べて」と送ると、エージェントは自律的にWebを検索し、今日の情報を含んだ回答を返す。
以下は実際に動く状態をイメージした会話の例だ:
ユーザー:「AWS Lambdaの最新の料金改定について調べてまとめてください」
エージェント(内部でWeb Searchを実行):
→ Web検索クエリ生成:「AWS Lambda pricing update 2026」
→ 検索結果取得(リアルタイム)
→ 結果を読み込んで回答生成
エージェント:「2026年6月時点の公式情報によると…(具体的な最新情報を含む回答)」
従来のBedrockエージェントはここで「学習データの範囲内の古い情報」しか返せなかった。AgentCore Web Searchを繋ぐと、エージェントがその場でWebを調べてから答えるようになる。この体験を一から作るのが今回の目標だ。
なぜAIエージェントにリアルタイムWeb検索が必要なのか
LLMのカットオフ問題
LLMには「知識のカットオフ」がある。学習データの収集期限以降の出来事については、モデルの知識に存在しない。Claude 3.xもGPT-4.xも同じ制約を持っており、モデルのバージョンによって締め切りは異なるが「今日の情報」を知らないのは共通だ。
問題はエージェントが「古い知識で自信満々に答える」ことにある。「最新の」と頭につけて聞いても、モデルが持つ最新情報はカットオフ時点のものだ。正確な回答が求められる業務用途ではこれは致命的になる。
RAGだけでは外部情報を補えない
RAG(Retrieval-Augmented Generation)は社内ドキュメントや自前のナレッジベースを参照させる手法として広く使われている。ただし参照先は「あらかじめ取り込んだ文書」に限られる。Webのリアルタイム情報を都度参照する用途には別の仕組みが必要だ。
AgentCore Web SearchはMCPゲートウェイ経由で提供される
AWSがSummit NY(2026年6月17日)で発表したのは、エージェントからのWeb検索をMCP(Model Context Protocol)ゲートウェイ経由のマネージドツールとして提供するアプローチだ(出典:AWS公式ブログ)。
「ただGoogle検索を代行するAPI」ではない。AgentCore Gatewayという中間層がMCPサーバーとして機能し、エージェントコードは「MCPでツールを呼び出す」という統一インターフェースでWeb検索を使える。検索エンジンの選定・レート制限の管理・結果のフォーマットなどの実装をAWSが担う。開発者はエージェントロジックに集中できる設計だ。
AgentCore BrowserとWeb Searchの違い——混同しがちなポイント
SERPを見ると、AgentCore関連の上位記事の多くが「AgentCore Browser」を扱っている。Web Searchとは別機能なので、先に整理しておく。
| 機能 | AgentCore Web Search | AgentCore Browser |
|---|---|---|
| 何をするか | Webの検索結果(テキスト)を取得 | ブラウザを操作して画面を操作・スクレイピング |
| 向いている用途 | 情報収集・要約・Q&A | フォーム入力・ログイン操作・スクリーンショット取得 |
| 必要なコスト感 | 比較的軽量 | ブラウザインスタンスを起動するため重め |
| 発表時期(参考) | 2026年6月 | 2025年8月(先行発表) |
「今日のニュースを調べてまとめてほしい」→ Web Search 「ログインが必要なサイトの情報を取ってきてほしい」→ AgentCore Browser
この記事ではWeb Searchを扱う。ブラウザ操作はAgentCore Browserの公式ドキュメントを参照のこと。
設定の全工程:IAM確認から動作確認まで
ここからが実際の作業だ。「詰まりやすい場所」を先に示しながら進める。手順の細部は公式ドキュメントが正確なため、AWSコンソールの操作については執筆時点の公式情報を参照してほしい。
前提:何が必要か
- AWSアカウント(IAM権限のある管理者ロールを使用できること)
- Amazon Bedrock が使えるリージョン(執筆時点では
us-east-1等、公式ドキュメントで確認) - Python 3.10以上(エージェントコードを動かす環境)
ステップ1:IAM権限の確認——ここで詰まる人が多い
AgentCore関連の操作には、通常のBedrockのIAM設定だけでは足りないことがある。以下の権限が含まれているかを確認する。
エージェント実行ロールに必要な権限(公式ドキュメントで最新版を確認すること):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock-agentcore:*",
"bedrock:GetFoundationModel"
],
"Resource": "*"
}
]
}
詰まりポイント①:bedrock-agentcore系の権限はbedrockの権限と別管理になっている。既存のBedrockロールを流用しようとすると「権限がない」エラーが出る。IAMコンソールでロールを新規作成するか、既存ロールに不足している権限を追加する。
詰まりポイント②:Gatewayのエンドポイントを呼び出すロールとBedrockモデルを呼び出すロールが分かれていることがある。公式ドキュメントの「信頼関係」設定のセクションをよく読む。
ステップ2:AgentCore GatewayにWeb Searchを追加する
AWSコンソールで Amazon Bedrock を開き、左ナビゲーションから AgentCore → Gateway に進む。
公式ドキュメントの手順に沿って新しいGatewayを作成(または既存のGatewayを編集)し、MCPターゲットとしてWeb Searchを追加する。
設定のポイントは:
- Gatewayには「エンドポイントURL」が割り当てられる。エージェントコードはこのURLを使う
- MCPターゲットの追加時に「Web Search」を選ぶ選択肢が表示される(AWS Summit NYで発表された新機能のため、表示されない場合はリージョンやアカウントの対応状況を公式ページで確認する)
- Gatewayを作成すると「MCPエンドポイントURL」が払い出される。これをメモしておく
詰まりポイント③:MCPターゲットとしてWeb Searchを追加しても「ツールが見つからない」エラーが出る場合、GatewayのデプロイステータスがACTIVEになっているかを確認する。作成直後は数分かかることがある。
ステップ3:エージェントコードを書く
GatewayのMCPエンドポイントをエージェントから呼び出す実装の概要を示す。以下はPythonでの構成イメージだ(実際のパラメータ・メソッド名は公式SDKとドキュメントで確認すること)。
import boto3
import json
# Bedrock クライアント
bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")
# AgentCore Gateway の MCP エンドポイント(コンソールでコピーしたURL)
GATEWAY_ENDPOINT = "https://xxxx.execute-api.us-east-1.amazonaws.com/agentcore/mcp"
def build_system_prompt():
return """あなたは情報収集エージェントです。
ユーザーからの質問に答えるために、必要に応じてWeb検索ツールを使ってください。
検索結果に基づいて、正確で最新の情報を回答してください。"""
def run_agent(user_query: str):
"""
AgentCore Gateway 経由の Web Search ツールを使う情報収集エージェント。
実際の実装は AWS SDK for Python (boto3) の AgentCore 対応バージョンと
公式サンプルコードを参照のこと。
"""
# ツール定義(MCPターゲットとして登録したWeb Searchを宣言)
tools = [
{
"toolSpec": {
"name": "web_search",
"description": "Webを検索してリアルタイムの情報を取得します",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "検索クエリ"
}
},
"required": ["query"]
}
}
}
}
]
messages = [{"role": "user", "content": user_query}]
# エージェントループ
while True:
response = bedrock.converse(
modelId="anthropic.claude-3-5-sonnet-20241022-v2:0",
system=[{"text": build_system_prompt()}],
messages=messages,
toolConfig={"tools": tools}
)
stop_reason = response["stopReason"]
if stop_reason == "end_turn":
# ツール使用なしで回答が完成
return response["output"]["message"]["content"][0]["text"]
elif stop_reason == "tool_use":
# モデルがWeb Searchツールの使用を決定
tool_use_block = next(
b for b in response["output"]["message"]["content"]
if b.get("type") == "toolUse"
)
tool_name = tool_use_block["name"]
tool_input = tool_use_block["input"]
tool_use_id = tool_use_block["toolUseId"]
# AgentCore Gateway 経由でWeb Searchを実行
search_result = call_web_search_via_gateway(
endpoint=GATEWAY_ENDPOINT,
query=tool_input["query"]
)
# ツール結果をメッセージに追加して継続
messages.append(response["output"]["message"])
messages.append({
"role": "user",
"content": [{
"toolResult": {
"toolUseId": tool_use_id,
"content": [{"text": json.dumps(search_result, ensure_ascii=False)}]
}
}]
})
else:
break
return "エージェントが応答を生成できませんでした"
def call_web_search_via_gateway(endpoint: str, query: str) -> dict:
"""
AgentCore Gateway の MCP エンドポイントへ検索リクエストを送る。
実際の認証方式・リクエスト形式は公式ドキュメントの MCP クライアント実装ガイドを参照。
"""
import urllib.request
import urllib.error
# SigV4 署名が必要(boto3 の auth ヘルパーを使うことを推奨)
payload = json.dumps({
"method": "tools/call",
"params": {
"name": "web_search",
"arguments": {"query": query}
}
}).encode("utf-8")
req = urllib.request.Request(
endpoint,
data=payload,
headers={"Content-Type": "application/json"},
method="POST"
)
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read().decode("utf-8"))
if __name__ == "__main__":
result = run_agent("AWS Lambdaの2026年の最新料金について調べてまとめてください")
print(result)
実装時の注意:AgentCore GatewayへのリクエストはAWS SigV4署名が必要になる。urllib での素朴な実装では認証が通らない。boto3 のrequests-aws4authやbotocoreの認証ヘルパーを使うか、AWS SDK の AgentCore 対応メソッドを確認すること。正確なSDKの使い方は執筆時点の公式ドキュメントとGitHubサンプルで確認してほしい。
ステップ4:動作確認——エージェントが本当にWebを調べているか
エージェントを動かしたら、「動いた感じ」だけで満足しないようにしたい。以下を確認する。
確認1:モデルが実際にツールを呼び出しているか
stop_reason == "tool_use" のブロックにログを仕込んで、tool_input["query"] の内容を出力する。モデルが生成した検索クエリが表示されれば、Web Searchが呼ばれている証拠だ。
確認2:返ってきた情報が今日のものか
カットオフ以降に起きた出来事(例:「2026年6月に発表されたAWSの機能」)を質問してみる。モデルが学習データにないはずの情報を正確に返せれば、リアルタイム検索が機能している。
確認3:エラーが出たときの見方
AccessDeniedException: User: arn:aws:iam::xxx is not authorized to perform: bedrock-agentcore:...
→ IAMロールに不足している権限がある。エラーメッセージのアクション名を確認してポリシーに追加する。
ResourceNotFoundException: Gateway 'xxx' not found
→ GatewayのIDまたはリージョンが間違っている。コンソールでGatewayの詳細ページを開き、ARNとリージョンを再確認する。
このエージェントで何ができるか——実務への転用シナリオ
設定が動いた後の話をする。「情報収集エージェント」という形で作ったものを、どの業務に当てはめられるか。
シナリオ1:競合・市場動向のリサーチ自動化
毎朝「競合A社と競合B社の最新ニュースをまとめて、自社への影響がありそうなものを3つ挙げて」とエージェントに送る。LLMのカットオフ問題がなくなるので、昨日の発表も拾える。リサーチに費やしていた朝30分が短縮される。
シナリオ2:AWSサービスの最新仕様確認
「このコードで使っている Bedrock の InvokeModel API に2026年以降に変更はあるか?」という問いに、エージェントがAWSドキュメントの最新版を参照して答えられる。料金改定・APIの非推奨予告・リージョン対応状況など、公式ドキュメントが随時更新されるタイプの情報に強い。
シナリオ3:技術調査レポートの自動生成
「MCPプロトコルの最新仕様について、セキュリティ面の変更点を中心にまとめたレポートを作って」という指示を受け、エージェントが複数のWeb情報を検索してまとめる。副業・フリーランスなら調査工程の時間を大幅に削減できる。
注意点——現時点で確認できないこと・把握しておくべきこと
利用可能なリージョンと料金
Web SearchツールをMCPターゲットとして使う際の費用(リクエスト単価・検索回数の制限)については、執筆時点では公式ドキュメントの pricing ページを確認することを推奨する。AWSのマネージドサービスは料金体系が細かく、想定外のコストが発生するケースがある。
Quick Autonomous Agentsとの関係
AWS Summit NYでは同時に「Quick Autonomous Agents」も発表された。Web Searchとの組み合わせやプレビュー対応状況については、公式ブログと発表ページで確認のこと(現時点では全アカウントに即時公開されていない可能性がある)。
MCPプロトコルのバージョン
MCPの仕様は活発に更新されており、2026年6月時点でも仕様変更が進んでいる(関連:2026年6月18日のMCP OAuth仕様更新)。AgentCoreが対応するMCPバージョンと手元のクライアントライブラリのバージョンが食い違うと、ツール呼び出しが失敗することがある。公式の互換性情報を確認する。
まとめ——次の一歩
AgentCore Web Searchが解くのは「AIエージェントの知識が古い」という根本的な制約だ。設定の骨格はシンプルで、AWSコンソールでGatewayにWeb SearchをMCPターゲットとして追加し、エージェントコードからそのエンドポイントを呼び出すだけだ。
詰まりやすいのは IAM 権限の設定と、GatewayのACTIVE確認、SigV4認証の実装の3点だ。この記事で先に示した詰まりポイントを頭に入れておくと、エラーに出会ったときの調査時間が短くなる。
動いた後は「どの業務の情報収集を自動化するか」を考えるフェーズに進める。競合情報・最新仕様確認・技術調査レポートなど、「今日の情報が必要な調べ物」がある業務なら直接使えるシナリオだ。
公式情報・出典:
- AWS Summit New York 2026 トップ発表まとめ(AWS公式ブログ)
- Amazon Bedrock AgentCore の最新ドキュメントは
docs.aws.amazon.com/bedrock-agentcore/を参照 - 手順・仕様は随時更新されるため、作業前に公式ドキュメントの最新版を確認すること