为 Agent 使用 Bedrock AgentCore 的 Web Search Tool 进行互联网搜索
本文介绍了 Amazon Bedrock AgentCore 的 Web Search 联网搜索能力,说明其依托 AgentCore Gateway 的调用原理、三类入站认证方式的选型对比,以及通过 AWS CLI 创建服务角色、部署 Gateway 与 Web Search 连接器目标的操作步骤。文中给出 Python(基于 Strands Agents 构建多轮对话)与 Java(直接调用 MCP API 单次调用)两种语言的完整代码示例,并说明该服务的计费构成与日志审计配置方法,帮助读者快速搭建可用的联网检索能力。
一、AgentCore Web Search 能力简介
Amazon Bedrock AgentCore 的 Web Search Tool 是一项全托管、兼容 MCP(Model Context Protocol)的联网搜索能力。它由 Amazon 自建并运营的网页索引提供支撑,将"搜索"这一环节封装为一个托管连接器,使用方无需自行申请第三方搜索 API、管理密钥配额,也无需处理结果解析。
AgentCore Web Search 是全托管服务,以内置连接器(connectorId 为 web-search)的形式挂载到 AgentCore Gateway 上,通过 MCP 协议对外暴露一个名为 WebSearch 的工具。Web Search Tool 只负责"搜索",返回网页片段;它本身不做整理、翻译、汇总。Web Search 取回的结果中,每条结果包含标题、URL、摘要片段与发布日期,便于在最终输出中标注引用。这些原始信息可由用户指定的大语言模型进行摘要。
使用 Bedrock AgentCore Web Search 服务,数据不出 AWS。检索在 AWS 内部完成,查询不发往第三方搜索引擎。其使用时按量计费,约每 1000 次查询 7 美元。截至 2026 年 7 月,Web Search Tool 目前仅在 us-east-1(美国东部弗吉尼亚北部)可用。因此本文后续演示代码调用均位于 us-east-1 区域。
Bedrock 除了 AgentCore Web Search 之外,还有一个功能叫做 AgentCore Gateway Search API。这项功能的意义是在 Gateway 上挂载了很多 MCP 之后(例如几十到数百个),调用这个 API 可以在这么多 MCP 之中以语意化方式搜索,选出最匹配的 MCP 加载到模型对话上下文中,而不是一次将数百个 MCP 工具都放入 Context。这个功能与搜索互联网公开内容无关,因此请勿混淆。
二、AgentCore Web Search 工作原理
1、调用链
AgentCore Web Search 是以 MCP 方式暴露给 Agent,其自身的运行又是依赖于 AgentCore Gateway 的。因此如果用户自己构建完成 Agent 的话,整个对话运行流程如下:
flowchart TB
User(["用户:命令行多轮输入问题"])
subgraph Local["本地机器 (macOS, Python 3.13, uv)"]
direction TB
CLI["命令行入口<br/>多轮对话循环 (Chat Loop)"]
Agent["Strands Agent<br/>Agent 循环 / 维护对话历史"]
Model["BedrockModel Provider<br/>(Strands → Converse)"]
MCPClient["MCP 客户端<br/>mcp-proxy-for-aws (SigV4 签名)<br/>发现并调用 WebSearch 工具"]
end
subgraph Cloud["AWS us-east-1"]
direction TB
GW["AgentCore Gateway<br/>MCP 端点 / AWS_IAM 入站认证"]
TGT["web-search 连接器目标<br/>(connectorId: web-search)"]
WS["Web Search 托管后端<br/>(Amazon 网页索引)"]
LLM["Bedrock 模型<br/>us.anthropic.claude-sonnet-5"]
Role["IAM 服务角色<br/>InvokeGateway + InvokeWebSearch"]
end
User -->|"① 输入问题"| CLI
CLI -->|"② 提交至 Agent"| Agent
Agent -->|"③ 推理请求"| Model
Model -->|"④ Converse"| LLM
LLM -->|"⑤ 决定调用 WebSearch 工具"| Model
Model --> Agent
Agent -->|"⑥ tools/call WebSearch"| MCPClient
MCPClient -->|"⑦ HTTPS + SigV4"| GW
GW --> TGT
TGT -->|"⑧ 检索"| WS
WS -->|"⑨ 结果:标题/URL/摘要/日期"| GW
GW -->|"⑩ 返回结果"| MCPClient
MCPClient --> Agent
Agent -->|"⑪ 工具结果回填模型"| Model
Model -->|"⑫ Converse 整理/翻译"| LLM
LLM -->|"⑬ 汇总的中文报告"| Model
Model --> Agent
Agent -->|"⑭ 输出结果,等待下一轮"| CLI
CLI --> User
GW -.->|"出站授权:assume 角色"| Role
Role -.->|"授权调用"| WS以上的架构示例中,负责和用户交互的是 Strands Agents SDK 构建的 Agent。Strands Agents SDK 有 Python 和 Node 两种 SDK,但没有 Java 的。如果您使用 Java 语言,您可以不使用 Strands Agents SDK,而是直接调用 AgentCore Gateway 的 API。这样虽然没有 Chat Loop 多轮对话,但是单次调用也可以获得搜索结果。
2、本项目演示环境架构设计
本文将按照以上架构搭建 Demo 程序:
- 后台 MCP 运行时 AgentCore Gateway
- 搜索 MCP:AgentCore Web Search
- 通用 LLM 模型:Claude Sonnet 5
- 以上所有环境运行区域:AWS us-east-1 区域
- AgentCore Gateway 环境初始化:AWS CLI 脚本完成创建 IAM Role 等配置拉起,要求 AWSCLI 版本不低于 2.35.19,否则不支持 Web Search Tool 创建
- Agent 应用端框架:
- Python 版本:Strands Agents SDK 构建的聊天 Agent,用户输入 Prompt,允许多轮对话。代码环境由 uv 负责包管理,Python 3.13
- Java 版本:不搭建 Agent,而是 Java 代码直接用 MCP 协议调用 AgentCore Gateway 的 API,用户输入 Prompt,没有多轮对话,直接返回结果
篇幅有限,这里不一一展开探讨 AgentCore Gateway 的能力。
3、产品局限
目前 AgentCore Web Search 还有如下局限:
- 不能指定要搜索的网站范围,不能白名单强制指定搜索某网站,但是支持黑名单屏蔽特定域名
- 不能指定语言,搜索语言根据输入的提示词自动匹配
三、部署 AgentCore Gateway
Web Search Tool 的唯一调用入口是 AgentCore Gateway。因此在本机运行代码之前,需要先在 AWS 侧一次性创建三样资源:一个 Gateway 服务角色、一个用于托管 MCP 服务的 Gateway、一个 web-search 目标。这里使用 AWSCLI 来配置 AgentCore Gateway,要求本机预先安装了 AWSCLI 工具,并且配置了正确的 Access Key/Secret Key,有权限完成 AgentCore Gateway 的创建。
1、获取代码和配置文件
从代码仓库 Clone 代码到本地:
git clone https://github.com/aobao32/bedrock-agentcore-websearch-demo.git
cd bedrock-agentcore-websearch-demo
2、创建 AgentCore Gateway 运行需要的服务角色
Gateway 服务角色:供 Gateway 出站调用 Web Search 后端时使用。信任 bedrock-agentcore.amazonaws.com,权限包含 bedrock-agentcore:InvokeGateway 与 bedrock-agentcore:InvokeWebSearch。
先设置公共变量,后续各小节复用。区域固定为 us-east-1(Web Search Tool 仅此区可用)。
REGION="us-east-1"
ROLE_NAME="AgentCoreWebSearchDemoGatewayRole"
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
执行如下命令创建 IAM Role,并写入信任策略,允许 bedrock-agentcore 服务代入该角色。
aws iam create-role \
--role-name "$ROLE_NAME" \
--assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"bedrock-agentcore.amazonaws.com"},"Action":"sts:AssumeRole"}]}' \
--description "AgentCore Web Search demo gateway service role"
为该角色写入权限策略,授予调用 Gateway 与 Web Search 的权限。其中 Web Search Tool 的资源 ARN 由 AWS 拥有,account 段固定为 aws。
aws iam put-role-policy \
--role-name "$ROLE_NAME" \
--policy-name "WebSearchInvokePolicy" \
--policy-document "{
\"Version\": \"2012-10-17\",
\"Statement\": [
{
\"Sid\": \"InvokeGateway\",
\"Effect\": \"Allow\",
\"Action\": \"bedrock-agentcore:InvokeGateway\",
\"Resource\": \"arn:aws:bedrock-agentcore:${REGION}:${ACCOUNT_ID}:gateway/*\"
},
{
\"Sid\": \"InvokeWebSearch\",
\"Effect\": \"Allow\",
\"Action\": \"bedrock-agentcore:InvokeWebSearch\",
\"Resource\": \"arn:aws:bedrock-agentcore:${REGION}:aws:tool/web-search.v1\"
}
]
}"
新建的 IAM Role 角色需要数秒钟才能完全生效,建议等待1分钟后再创建 Gateway,以降低 PassRole 失败的概率。
3、创建 AgentCore Gateway
(1) AgentCore Gateway 认证方式选择
AgentCore Gateway 支持三类入站认证,对照如下:
| 认证方式 | 说明 | 适合场景 |
|---|---|---|
| IAM 身份认证(AWS_IAM) | 由调用方的 AWS IAM 身份进行鉴权,请求需带 SigV4 签名,Gateway 校验其是否具备 bedrock-agentcore:InvokeGateway 权限 |
调用方本身是 AWS 身份(本机脚本、Lambda、EC2、ECS 等),依托 AWS 现有权限体系,无需额外部署 IdP |
| JWT 令牌认证(JSON Web Token) | 由外部身份提供商(IdP,如 Amazon Cognito、Okta、Auth0 等 OIDC 提供商)签发 JWT,调用方携带令牌,Gateway 校验其有效性;注意 JWT 的部分声明(如 Subject)会记录到 CloudTrail,官方建议不放置 PII,可改用 GUID | 面向终端用户或 Web/移动应用,需与既有 OIDC 身份体系集成 |
| Offloaded(Authenticate only / No Authorization) | Gateway 自身不做鉴权决策,把授权判断交给下游目标、附加的策略引擎或拦截器 Lambda | 已有独立授权层,或需要定制化授权逻辑 |
(2) 创建认证为 IAM 类型的 Gateway
执行如下命令创建 AgentCore Gateway,协议类型为 MCP,入站认证类型为 AWS_IAM。
ROLE_ARN=$(aws iam get-role --role-name "$ROLE_NAME" --query Role.Arn --output text)
aws bedrock-agentcore-control create-gateway \
--name "websearch-demo-gateway" \
--role-arn "$ROLE_ARN" \
--protocol-type MCP \
--authorizer-type AWS_IAM \
--description "Web Search demo gateway (AWS_IAM inbound auth)" \
--region "$REGION"
获取创建出来的网关 ID。命令如下。
GATEWAY_ID=$(aws bedrock-agentcore-control list-gateways \
--region "$REGION" \
--query "items[?name=='websearch-demo-gateway'].gatewayId | [0]" \
--output text)
echo "$GATEWAY_ID"
确认 GATEWAY_ID 打印出形如 websearch-demo-gateway-xxxxxxxxxx 的值后,再查询状态。Gateway 创建后需要一段时间才会就绪,等待 status 变为 READY,同时获取 MCP 端点 URL。该 URL 是后续代码连接 Gateway 的入口。
aws bedrock-agentcore-control get-gateway \
--gateway-identifier "$GATEWAY_ID" \
--region "$REGION" \
--query '{status:status, gatewayUrl:gatewayUrl}'
返回结果类似如下表示成功:
---------------------------------------------------------------------------------------------------------------
| GetGateway |
+---------------------------------------------------------------------------------------------------+---------+
| gatewayUrl | status |
+---------------------------------------------------------------------------------------------------+---------+
| https://websearch-demo-gateway-qg9ea7gi98.gateway.bedrock-agentcore.us-east-1.amazonaws.com/mcp | READY |
+---------------------------------------------------------------------------------------------------+---------+
4、创建 Gateway Connector - Web Search 目标
(1) 关于 AgentCore Gateway 支持的目标类型
AgentCore Target 分为三大类:
| 类别 | 说明 |
|---|---|
| MCP targets | 聚合模式。Gateway 作为 MCP Server,把各 MCP 目标的能力合并成一个统一的虚拟 MCP Server |
| HTTP targets | Gateway 把流量直接转发给 HTTP 目标,不做聚合或协议转换 |
| Inference targets | 把 LLM 流量按模型路由到不同模型提供商,对外提供跨多家提供商的统一端点 |
其中 MCP targets 类别下具体可选的目标类型最丰富,包括:
Connector 连接器,AWS 托管的现成连接器:
- Web Search Tool(connectorId: web-search)
- Amazon Bedrock 托管知识库(Managed Knowledge Bases)
外部 MCP:
- MCP server:已有的外部 MCP Server
- Lambda 函数: 用一个 Lambda ARN + 工具 Schema 作为目标,把自有函数暴露成 MCP 工具
其他服务:
- API Gateway stage: 把已有的 API Gateway 阶段接入
- OpenAPI: 用 OpenAPI 规范描述的 REST API
- Smithy: 用 Smithy 模型描述的服务
- HTTP runtime: HTTP 运行时目标
本文使用的是 Connector 的 Web Search Tool。
(2) 创建 Gateway Connector 以 Web Search Tool 作为目标
注意:本步骤要求 AWSCLI 版本不低于 2.35.19,否则不支持 Web Search Tool 创建,会提示 Gateway 输入 Connector 参数错误。
执行如下命令在上一步的 Gateway 上挂载 Web Search 目标。出站凭证使用 GATEWAY_IAM_ROLE,即复用第 2 小节创建的服务角色发起调用。
aws bedrock-agentcore-control create-gateway-target \
--gateway-identifier "$GATEWAY_ID" \
--name "web-search" \
--target-configuration '{"mcp":{"connector":{"source":{"connectorId":"web-search"},"configurations":[{"name":"WebSearch","parameterValues":{}}]}}}' \
--credential-provider-configurations '[{"credentialProviderType":"GATEWAY_IAM_ROLE"}]' \
--region "$REGION" \
--query targetId --output text
目标创建后同样需要等待就绪,可用如下命令查询其状态,直至 status 变为 READY。
aws bedrock-agentcore-control list-gateway-targets \
--gateway-identifier "$GATEWAY_ID" \
--region "$REGION" \
--query "items[?name=='web-search'].{targetId:targetId, status:status}"
返回结果如下:
[
{
"targetId": "IDI5VJDDXF",
"status": "READY"
}
]
当显示 READY 就表示已经可用。
至此,Gateway 与 Web Search 目标均已就绪,后续本机代码即可通过 SigV4 签名调用该 Gateway 的 MCP 端点。
四、构建 Agent 代码示例 - Python 版本
1、安装 uv 包管理工具
# MacOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# 如果是Windows使用如下命令
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
2、克隆代码样例到本地
进入刚才从 Github 下载的目录,先加载 uv 运行环境,然后启动服务
cd bedrock-agentcore-websearch-demo/python/
uv sync
3、生成后续代码要调用的 Gateway 的环境变量
Python 代码通过环境变量读取 Gateway 信息,共需以下两个变量:
AGENTCORE_GATEWAY_URL:Gateway 的 MCP 端点,必需。AWS_REGION:调用与 SigV4 签名所用区域,可选,缺省回退到us-east-1(本项目固定运行于该区域)。
此外本机需要具有 AWS CLI 的 AKSK 密钥,才能正常运行如下命令。
执行如下命令,按网关名字查回 MCP 端点,并把上述两个变量导出到当前 shell。
# 区域与网关名称
export AWS_REGION="us-east-1" # 与上文保持一致
GATEWAY_NAME="websearch-demo-gateway" # 与上文保持一致
# 按名字取回 Gateway ID
GATEWAY_ID=$(aws bedrock-agentcore-control list-gateways \
--region "$AWS_REGION" \
--query "items[?name=='${GATEWAY_NAME}'].gatewayId | [0]" \
--output text)
# 获取 MCP 端点 URL 并导出
export AGENTCORE_GATEWAY_URL=$(aws bedrock-agentcore-control get-gateway \
--gateway-identifier "$GATEWAY_ID" \
--region "$AWS_REGION" \
--query gatewayUrl --output text)
# 确认导出结果
echo "AWS_REGION=$AWS_REGION"
echo "AGENTCORE_GATEWAY_URL=$AGENTCORE_GATEWAY_URL"
环境变量仅在当前 shell 会话内有效,请在同一个终端里接着运行后续的 Python 程序。
4、运行代码启动 Agent 对话并开始搜索
然后运行代码:
uv run main.py
现在输入要搜索的信息,例如输入 查询 2026 年 6 月最严重的 5 个 CVE 漏洞,用中文介绍每个漏洞情况,每个漏洞信息介绍不超过150个汉字。输入后执行反馈如下:
返回结果如下。
发现工具:['web-search___WebSearch']
============================================================
AgentCore Web Search 聊天 Agent(Strands)
直接输入问题开始对话;输入 exit / quit 或按 Ctrl-D 退出。
============================================================
你 > 查询 2026 年 6 月最严重的 5 个 CVE 漏洞,用中文介绍每个漏洞情况,每个漏洞信息介绍不超过150个汉字
Agent >
Tool #1: web-search___WebSearch
Tool #2: web-search___WebSearch
# 2026年6月最严重的5个CVE漏洞
根据安全情报平台 Strobes 发布的《2026年6月最严重5大CVE》报告(综合CVSS评分、EPSS利用概率、CISA KEV在野利用状态等因素),以下为本月最需优先修复的5个漏洞:
## 1. CVE-2026-20253 — Splunk Enterprise 未授权文件写入转RCE
Splunk Enterprise 存在一个未授权的 PostgreSQL 侧车(sidecar)接口,攻击者可任意写入文件。安全公司 watchTowr 在数日内将其转化为预认证远程代码执行(RCE)。该漏洞已被列入 CISA KEV 目录,EPSS 利用概率高达 **88%**,是本月风险最高的漏洞。
## 2. CVE-2026-42271 — LiteLLM AI 网关命令注入
LiteLLM(AI大模型网关)的 MCP 测试接口未正确校验管理员权限,导致任何低权限 API 密钥持有者均可执行主机命令,进而攻陷整个AI网关系统。目前已有公开 PoC 利用代码,EPSS 利用概率约为 **75%**,风险突出。
## 3. CVE-2026-47291 — Windows HTTP.sys 内核态未授权RCE
Windows 内核驱动 HTTP.sys(支撑IIS、WinRM、WCF等服务)存在整数溢出缺陷,攻击者发送超过65535字节的畸形HTTP请求即可触发堆溢出,无需认证即获得SYSTEM权限执行代码。CVSS评分**9.8**,已有公开PoC,已在6月补丁星期二修复。
## 4. CVE-2026-50751 — Check Point VPN 未授权认证绕过
Check Point 远程访问VPN的老旧IKEv1协议路径存在认证绕过漏洞,未授权攻击者可直接绕过登录验证。该漏洞已被列入CISA KEV目录,Check Point证实至少一起攻击事件与Qilin勒索软件团伙有关,实际在野利用可追溯至5月初。
## 5. CVE-2026-33825 — Microsoft Defender“BlueHammer”本地提权
微软Defender自身的恶意软件清除引擎存在TOCTOU(检查时与使用时)竞争条件缺陷,本地低权限用户可利用该漏洞将写入操作重定向至系统目录,从而提升至SYSTEM权限。CISA于6月30日更新KEV记录,确认已有勒索软件团伙利用此漏洞。
---
## 参考来源
- [Top CVEs of June 2026: 5 Critical Flaws to Patch Now](https://strobes.co/blog/top-cves-june-2026-5-critical-flaws-to-patch-now/) — Strobes.co
- [June 2026 Patch Tuesday: 10 Critical Vulnerabilities Amid 219 CVEs](https://feedly.com/cve/security-advisories/microsoft/2026-06-09-june-2026-patch-tuesday-10-critical-vulnerabilities-amid-219-cves) — Feedly
- [CISA Known Exploited Vulnerabilities Catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) — CISA
**说明**:本次列表主要参考 Strobes 平台综合CVSS评分、EPSS利用概率及CISA KEV在野利用数据所做的排名。检索到的其他资料(如Oracle、Adobe、Android六月补丁)中也包含多个CVSS 9.8~10.0的严重漏洞,但未见其他权威来源对"2026年6月最严重5个漏洞"给出独立排名,故以上述报告为主要依据整理。
由此看到,代码工作正常。
五、Java 代码直接调用 API 代码示例
1、不构建 Agent 直接调用 API
由于 Strands Agent SDK 没有 Java 版本,所以要使用 Java 构建多轮对话的 Agent,可以考虑支持 Java 语言的 Agent 框架,例如:
- 阿里云 AgentScope Java:https://github.com/agentscope-ai/agentscope-java
本文这里不构建多轮对话 Agent,而是直接让 Java 代码调用 AgentCore Gateway 的 API,直接调用 Web Search Tool 这个 MCP,调用时候直接传入提示词,即可获得搜索结果。
2、下载代码、并编译构建
要求本机安装 JDK 版本大于等于 11(OpenJDK 或其他发行版均可),并安装 Maven。
cd bedrock-agentcore-websearch-demo/java
mvn clean package
编译成功后会在 target/ 下生成可直接运行的 agentcore-websearch-java.jar。
3、设置环境变量
运行前需要设置环境变量,传入 Gateway 的 MCP 端点地址,同时本机还需要具备正确的 AKSK 密钥和权限。
Java 代码通过环境变量读取 Gateway 信息,共需以下两个变量:
AGENTCORE_GATEWAY_URL:Gateway 的 MCP 端点,必需。AWS_REGION:调用与 SigV4 签名所用区域,可选,缺省回退到us-east-1(本项目固定运行于该区域)。
此外本机需要具有 AWS CLI 的 AKSK 密钥,才能正常运行如下命令。
执行如下命令,按网关名字查回 MCP 端点,并把上述两个变量导出到当前 shell。
# 区域与网关名称
export AWS_REGION="us-east-1" # 与上文保持一致
GATEWAY_NAME="websearch-demo-gateway" # 与上文保持一致
# 按名字取回 Gateway ID
GATEWAY_ID=$(aws bedrock-agentcore-control list-gateways \
--region "$AWS_REGION" \
--query "items[?name=='${GATEWAY_NAME}'].gatewayId | [0]" \
--output text)
# 获取 MCP 端点 URL 并导出
export AGENTCORE_GATEWAY_URL=$(aws bedrock-agentcore-control get-gateway \
--gateway-identifier "$GATEWAY_ID" \
--region "$AWS_REGION" \
--query gatewayUrl --output text)
# 确认导出结果
echo "AWS_REGION=$AWS_REGION"
echo "AGENTCORE_GATEWAY_URL=$AGENTCORE_GATEWAY_URL"
环境变量仅在当前 shell 会话内有效,请在同一个终端里接着运行后续的 Java 程序。
4、运行 Java 代码进行 API 调用完成搜索
运行代码时把提示词作为命令行参数传入,程序会将其作为搜索查询直接调用 WebSearch 工具(查询串上限 200 字符);可选传入环境变量 AGENTCORE_WEBSEARCH_MAX_RESULTS,如果不传入,默认返回 10 条搜索结果。
java -jar target/agentcore-websearch-java.jar "Amazon的OpenJDK发行版的版本是哪些"
返回结果如下:
已连接 Gateway:https://websearch-demo-gateway-qg9ea7gi98.gateway.bedrock-agentcore.us-east-1.amazonaws.com/mcp
区域:us-east-1,返回条数上限:10
发现 WebSearch 工具:web-search___WebSearch
正在搜索:Amazon的OpenJDK发行版的版本是哪些
共返回 10 条搜索结果:
============================================================
[1] Amazon Corretto January 2026 Quarterly Updates
URL: https://aws.amazon.com/about-aws/whats-new/2026/01/amazon-corretto-january-2026-quarterly-updates
发布日期: 04:00PM, Monday, January 19 2026, PST
摘要: Amazon Corretto January 2026 Quarterly Updates Posted on: Jan 20, 2026 On January 20, 2026 Amazon announced quarterly security and critical updates for Amazon Corretto Long-Term Supported (LTS) versions of OpenJDK. Corretto 25.0.2, 21.0.10, 17.0.18, 11.0.30, and 8u482 are now available for download. Amazon Corretto is a no-cost, multi-platform, production-ready distribution of OpenJDK.
[2] Amazon Linux 2023
URL: https://docs.aws.amazon.com/linux/al2023/ug/java.html
发布日期: 04:00PM, Friday, January 07 2000, PST
摘要: Corretto is a build of the Open Java Development Kit (OpenJDK) with long-term support from Amazon. Corretto is certified using the Java Technical Compatibility Kit (TCK) to ensure that it meets the Java SE standard and is available on Linux, Windows, and macOS.
......
与 Python 版本构架对话 Agent 方式所不同,Java 版本直接返回 Web Search Tool 的原始检索结果(标题、URL、发布日期与摘要片段),不经过大语言模型二次整理,因此没有多轮对话,单次调用即结束。如果需要对搜索结果做汇总和提取,用户需要自己调用 LLM 来处理。
六、AgentCore Web Search 使用成本
AgentCore Web Search 使用成本分成两部分:
- 托管在AgentCore Gateway上的网关调用成本:每 1000 次 $0.005 USD
- Web Search Tool 搜索调用成本:每 1000 次 $7 USD。此价格与 EXA Search 等第三方搜索服务商相当。
综上所述,如果调用 API 发起搜索 1000 次,总费用为 $7.005 USD。
需要注意的是,第三方搜索服务商如 EXA Search,会限制单次搜索返回条目数为 10 条,如果返回条数多于 10 条,那么会触发额外计费。而 AgentCore Web Search 返回条数不限制,返回条数多也没有额外计费。
七、获取 AgentCore Web Search 账单和搜索日志
1、查看账单
进入 AWS 控制台,计费服务,可看到账单信息与上一章节介绍的成本组成结构的信息一致。如下截图。
2、获取所有检索信息的日志用于审计
进入 AgentCore 服务,点击 Gateway,找到刚才创建的 Gateway,点击查看详情。然后在右边页面找到 日志投送和追踪,点击添加按钮。日志可选输出到 CloudWatch/S3/Kinesis。这里以 CloudWatch 为例方便查看(但是日志保存成本较高)。生产环境请选择 S3 作为保存日志的选项。如下截图。
在日志类型中,选择唯一的选项 APPLICATION_LOGS,在目标位置,选择 CloudWatch 的日志组。如下截图。
配置完毕后,发起若干查询。
AgentCore Gateway 将日志发送到 CloudWatch LogGroups,通常需要 1-3 分钟的延迟。等待几分钟后,进入 CloudWatch 日志,找到对应的日志组。如下截图。
查看日志中,可看到检索的关键字与应用层发过来的一致。如下截图。
以上一条是搜索命令,再下一条日志包含检索返回的全量结果(文本信息)。
这里需要注意,CloudWatch LogGroups 成本较高,应修改其日志保留周期为 3 天或 7 天以降低日志存储成本。CloudWatch 日志一般只用于临时调试,生产环境建议使用 S3 存储日志。
八、参考文档
Introducing Web Search on Amazon Bedrock AgentCore
最后修改于 2026-07-10