AWS发布AgentCore运行时Session端点:编码代理改文件,浏览器里实时看网页更新
AWS在Machine Learning博客中介绍,Amazon Bedrock AgentCore运行时的Session端点可为每个代理会话生成经过认证的URL,把HTTP和WebSocket请求转发到指定端口。示例中,运行在会话里的编码代理修改Vite网站文件,浏览器无需刷新即可看到改动。
AWS在Machine Learning博客中发布一篇技术文章,介绍Amazon Bedrock AgentCore运行时的Session端点。按文章描述,该端点让调用者从自己的浏览器打开代理会话内运行的Web应用,并在代理保存文件后看到页面更新。文章附带的示例中,编码代理运行在会话的 8080 端口,Vite网站运行在 8090 端口,预览页面在左侧列出代理步骤、右侧显示实时站点。
文章由Sundar Raghavan署名。示例代码位于agentcore-samples仓库的 14-remote-access目录,文章称部署代理使用Node.js 22及以上、直接代码部署,不需要Docker或Amazon ECR。
Session端点如何使用端口和认证
文章说明,每个会话有自己的Session端点URL,该URL通过InvokeAgentRuntime响应的X-Amzn-Bedrock-AgentCore-Runtime-Session-Endpoint-Url头部返回,SDK中对应sessionEndpointUrl。调用方需在CreateAgentRuntime时设置allowedPorts,取值为 1 至 5 个条目,每个条目是 8000 至 12000 范围内的单个端口或端口区间,并排除平台保留端口。
访问控制方面,使用IAM的运行时会要求每个HTTP请求、HTTP/2流和WebSocket握手携带SigV4签名,调用方还需在运行时及其运行时端点上拥有bedrock-agentcore:InvokeAgentRuntimeProxy权限;使用入站JWT授权器的运行时则改用以bearer token认证。客户端统一连接 443 端口,通过主机名前缀选择会话内目标端口,例如 8090-- 前缀对应 8090 端口。
- 允许端口不会自动启动服务器,应用需监听 0.0.0.0 上的对应端口。
- 端点支持HTTP/1.1、HTTP/2(含服务器发送事件和gRPC)以及WebSocket连接。
- 浏览器无法自行添加SigV4签名或bearer token,示例改用bedrock-agentcore SDK提供的本地端点:浏览器访问localhost:8088,本地端点补上凭证后转发。
- Session端点不同于运行时端点:后者用DEFAULT等名称决定调用方访问代理的哪个版本,前者只用于查看会话内运行的内容。
示例中的代理改文件流程
文章描述的示例由四部分组成:会话内的编码代理、会话内的Vite开发服务器、用户机器上的PreviewApp,以及连接两者的Session端点和本地端点。代理使用list、read、write、edit四个工具修改站点文件,并调用Amazon Bedrock中的Claude Haiku 5.5决定改什么。用户在预览页发出请求后,PreviewApp通过InvokeAgentRuntime把提示发给 8080 端口的代理,代理读取并保存文件,Vite在检测到文件变化后通过热重载WebSocket推送,页面在右侧不刷新即更新。
文章给出的演示请求包括“把站点切换为深色咖啡店配色”和“把Order ahead按钮改成绿色”,并称代理读写的步骤会以服务器发送事件的形式流式显示在聊天栏。示例还通过同一Session端点访问 8081 端口的 /status路由,返回代理处理过的提示和改动文件列表;8080 端口不在allowedPorts中,因为InvokeAgentRuntime不经过Session端点即可到达代理。
- Vite配置为监听 0.0.0.0:8090,并允许任意Host头(allowedHosts为true),文章称Session端点已对每个请求认证,因此服务器无需自行做Host检查。
- 代理的文件工具把路径限制在站点目录内,拒绝目录之外的路径。
- 文章建议执行角色只授予代理需要的权限,因为网站与代理运行在同一会话中,访问控制不把两者隔开。
- 若运行时替换会话的计算资源,已有连接会关闭,未持久化的编辑可能丢失,文章建议需要保留文件时使用持久存储。
适用范围与拒绝情形
文章把Session端点定位为构建、测试和审查代理产物的工具:URL需要每次请求携带凭证,且仅在会话存续期间有效。文章明确说明,面向最终用户提供应用应使用AWS Amplify Hosting等托管服务。此外,Session端点仅适用于microVM运行时,URL通过公共HTTPS可达,入站连接不支持AWS PrivateLink。
文章列出运行时拒绝请求时的返回:请求端口不在allowedPorts内返回 403 AccessDenied;请求缺少有效凭证返回 403 AccessDenied或 401 AuthenticationRequired;端口已允许但无服务监听返回 502 PortNotReachable;URL对应的会话已不存在返回 404 SessionNotFound。拒绝响应体为空,错误码放在响应头中。
文章还称,运行时在转发前会移除自身的认证头,请求会以InvokeAgentRuntimeProxy事件记录到AWS CloudTrail;本地端点只监听 127.0.0.1,仅应答指向自身本地地址的请求,并拒绝其他来源页面发起的WebSocket连接。文章建议仅在预览期间运行本地端点,并在发布前审查代理的改动。
- 会话内编辑的网站随会话结束而消失,文章给出停止预览、删除运行时与上传代码的清理步骤。
- 文章建议,若他人可向编码代理发送提示,可考虑用Amazon Bedrock Guardrails过滤有害提示和响应。