AWS 演示 AgentCore Runtime 会话内网页实时预览:端口白名单与逐请求鉴权

Published · AI Daily — AI-assisted deep research, methodology & disclosure

AWS 在 2026 年 10 月 30 日发表教程,演示编码代理在 Amazon Bedrock AgentCore Runtime 会话中修改网页时,开发者如何同步预览。示例让 Vite 开发服务器与代理运行在同一会话,本地页面左侧是聊天,右侧是实时网站;文件修改后页面立即变化。这是开发与审阅流程,不表示会话网址可直接用作面向公众的生产托管地址。

AWS 在 2026 年 10 月 30 日发表教程,演示编码代理在 Amazon Bedrock AgentCore Runtime 会话中修改网页时,开发者如何同步预览。示例让 Vite 开发服务器与代理运行在同一会话,本地页面左侧是聊天,右侧是实时网站;文件修改后页面立即变化。这是开发与审阅流程,不表示会话网址可直接用作面向公众的生产托管地址。标题中的 preview 是预览操作,文章没有宣布一项服务进入预览发布阶段。

Session endpoint 只服务于一个 Runtime 会话。创建 Runtime 时,开发者列出一至五个允许访问的端口项,每项可以是单个端口或范围。示例把 8090 留给 Vite,8081 留给代理状态接口。代理调用接口运行在 8080,却不属于这个端口白名单;提示词经独立的 InvokeAgentRuntime API 到达。该 API 的响应头会返回 Session endpoint 网址。客户端始终连接外部 HTTPS 443 端口,网址主机名前缀决定转发到哪个内部端口。HTTP/1.1、HTTP/2、SSE、gRPC 和 WebSocket 均可透传。

端点上的每一次请求都必须鉴权:配置 IAM 时使用 SigV4,配置入站 JWT 授权器时使用 bearer token。网页浏览器无法自行给每个资源请求和 WebSocket 握手都添加这些凭据。因此示例使用 SDK 的客户端在 localhost:8088 启动本地转发端点,由它补上开发者凭据,并把浏览器请求转往远端 8090。预览页面本身则在 localhost:8087。两个本地端口职责不同,端点也不是无需授权的公网入口。

教程要求账户位于支持该功能的 AWS Region,并有创建 IAM 角色、S3 资源和 Runtime 的权限;还列出 Python 3.10 以上、指定版本的 AgentCore 与 boto3、Node.js 22 以上及 Bedrock 中 Claude Haiku 5.5 的访问条件。示例采用直接代码部署:脚本打包 Node 代理及网站,上传 zip 到 S3,再创建 Runtime。Vite 在会话内监听 0.0.0.0,使 Session endpoint 能连接它。Notebook 先调用 InvokeAgentRuntime 启动会话,再从响应取得网址并打开本地转发和预览页。

用户要求代理修改页面时,提示词走 InvokeAgentRuntime,而不是网页端口的转发通道。示例中的文件工具把读写限制在网站目录。代理保存文件后,Vite 通过 WebSocket 经 Session endpoint 与本地转发端点推送热更新,页面无需手动刷新。同一端点还能通过允许的 8081 端口访问状态接口。未允许的端口返回 403,缺少凭据返回 403 或 401,允许端口但无进程监听返回 502,已结束的会话返回 404;这些是 Runtime 的拒绝状态,须与网站应用本身的错误区分。

Session endpoint 与既有的 Runtime endpoint 也不是同一个东西。后者面向已经存在的代理调用,而前者把会话内部允许的服务端口安全地暴露给开发者工具。AWS 示例中,在创建 Runtime 时写入 allowedPorts,允许 8090 和 8081,却不把 8080 混进这个白名单。调用代理本身仍走 InvokeAgentRuntime。一个端点网址的主机名前缀可挑选不同内部端口,外部客户端都从 HTTPS 443 进入;这使同一会话内的网站和状态页可分别访问,而不是为每个服务另造一个公网地址。

示例的预览页面、转发器与远端网站也要分清。localhost:8087 只是开发者本机的交互界面;localhost:8088 是 SDK 启动的本地端点,负责为浏览器无法自行签名的资源请求附加凭据,再转发至远端。若开发者直接把远端网址复制给未经授权的人,对方仍会遇到认证拒绝。AWS 还给出端口被拒、允许端口无服务监听及会话结束的不同状态码,便于判断故障发生在访问控制、服务进程还是会话生命周期。

安全上,配置 CloudTrail 数据事件后才能记录代理转发事件;数据事件默认不记录,也不出现在 Event history。需创建 trail 或 event data store,并为 AWS::BedrockAgentCore::Runtime 设置 advanced event selector。日志不等于隔离。网站和编码代理共享会话内的计算环境,因此执行角色授权过大时,网页预览也会扩大风险面。文章建议限制角色权限,并说明计算资源替换会使现有连接断开;没有持久化文件系统时,代理修改过的页面可能无法保留。教程的清理步骤会停止本地预览并删除所创建的 Runtime、上传代码和 IAM 角色,这也是避免样例资源持续计费的一部分。

AWS 称 Runtime 在转发前移除自身认证头;配置 CloudTrail 数据事件后,可记录 InvokeAgentRuntimeProxy 事件。数据事件默认不记录,Event history 也不包含此类事件;需创建 trail 或 event data store,并为 AWS::BedrockAgentCore::Runtime 设置 advanced event selector。但网站与代理位于同一会话,二者之间并无权限隔离,应限制执行角色的授权。会话计算资源被替换时连接会断开,没有持久化存储时文件修改也可能丢失。会话网址只在该会话有效,且每次请求都要鉴权;若要把网站提供给最终用户,应另行部署。教程还要求清理预览、Runtime、上传代码与 IAM 角色,避免继续计费。

Sources

FAQ

示例中 8080、8081、8090 与本地 8087、8088 各承担什么角色?

会话内 8080 是独立 API 调用的代理端口,不在 Session endpoint 白名单;8090 是 Vite 网站,8081 是状态接口。本地 8088 是鉴权转发,8087 是预览页。外部访问仍经 HTTPS 443。

代理修改网页时,提示词和热更新分别走哪条路径?

提示词经独立 InvokeAgentRuntime API 到达代理,代理修改网站文件。Vite 通过 WebSocket、已鉴权的 Session endpoint 及本地 8088 转发,把热更新推到 8087 的页面。代理调用与网页预览是两条路径。

Session endpoint 能否直接作为公开生产网站,它有哪些拒绝与持久性边界?

不能直接当作公开站点:端点只随单个会话有效,所有请求都需鉴权,端口须在白名单中。未授权端口返回 403、空端口 502、结束会话 404。计算资源被替换会断连;没有持久化存储时改动可能丢失,面向用户的应用须另行部署。