AWS发布示例方案:把Claude Code作为远程代理跑在Bedrock AgentCore上
AWS机器学习博客介绍开源示例sample-remote-coding-agent:每个编码任务在用户AWS账户内的独立AgentCore runtime会话中运行,模型调用只走Amazon Bedrock,最终以GitHub拉取请求交付,由人审核合并。该方案明确不适用于不受信任的代码和开放式任务。
AI解读:这篇方案解决的具体问题是:让Claude Code脱离本地终端,把编码任务交给远端隔离会话执行,人关闭电脑后回来审阅结果。适用范围由AWS自己划出:适合受信任仓库上的范围明确的功能、缺陷修复和测试,仓库需自带setup与test命令;不适合不受信任的代码,因为代理会执行仓库自身的命令,也不适合开放式任务,因为每个任务最多尝试三次。
安全边界需要分清:任务提示词在入队前经Bedrock Guardrails过滤,但该护栏只检查用户输入的文本,不检查代理运行中从仓库文件或命令输出读到的内容,因此这类提示注入不在拦截范围内。AWS解释未对每次模型调用都做筛查,是因为每次都要重算完整上下文、按文本量计费,且会把Claude Code自身的系统提示判定为注入尝试。
交付方式限定为拉取请求:代理推送agent/分支并开PR,PR描述记录验证命令、退出码和尝试次数;验证未通过时PR以草稿打开,代理从不自行合并。AWS建议对默认分支开启分支保护。这是流程约束,不是对代码质量的独立验证,仍需人工审查。
GitHub凭据为短期令牌:方案创建一个对Contents和Pull requests有读写权限的GitHub App,注册到AgentCore Identity,容器拿到的是 8 小时后过期的用户到服务器令牌并自动刷新,提交由该App的机器人账号署名。AWS还称运行时IAM角色被显式拒绝访问AgentCore Identity控制平面,任务无法更改各仓库共用的GitHub凭据提供方。
部署有明确的前置和环境成本:需在提供AgentCore runtime V2的五个区域之一部署,本地构建约 1.3 GB的ARM64镜像,部署耗时 15–25 分钟,注册仓库另需 8–12 分钟。部署为空闲状态也会计费(NAT网关、接口端点、WAF、Cognito、DNS防火墙、镜像和日志);默认设置每月 200 美元Bedrock预算,但只发邮件提醒、不封顶支出;该示例未公布成本估算。
AWS机器学习博客作者Andrew(Qingjie)Ren发布文章,介绍一个名为sample-remote-coding-agent的示例方案:把原本在本地运行的Claude Code改为在Amazon Bedrock AgentCore上运行的远程代理,每个任务在用户AWS账户内的独立会话中执行,结果以GitHub拉取请求返回,由用户审阅后合并。
文章称,这一方案沿用Claude Code使用Amazon Bedrock作为模型提供商时的数据控制,并补充隔离运行时、短期GitHub凭据、提示词护栏、私有网络和最小权限等控制项。以上均为AWS方面的描述,文章未给出该方案的实际效果评测或成本估算。
方案怎么跑一个任务
提交入口有两个:在Claude Code中通过sample-rca插件运行本地MCP服务器,用AWS凭据签名后调用经IAM授权的API Gateway HTTP API;或在CloudFront提供的网页控制台上,用Cognito登录后调用对应授权的API。
请求进入后,Lambda函数用Bedrock Guardrails筛查任务提示词,然后在DynamoDB记录任务并放入SQS队列;调度函数为任务启动一个AgentCore runtime会话。每个已注册仓库有各自的runtime,运行一个存放在ECR的容器镜像,镜像内含Claude Code CLI、驱动它的Claude Agent SDK、git和make。
会话在独立microVM中运行,CPU、内存和文件系统相互隔离,位于带私有端点的VPC内。代理经AgentCore Identity取得GitHub访问令牌并克隆仓库,检索AgentCore memory中此前任务对该仓库积累的经验;用Claude Opus规划改动,用Claude Sonnet编写改动,再在同一会话中执行仓库自身的安装与测试命令;随后由Claude Opus复核,可退回重新规划,总尝试次数上限为三次。
结束时,代理推送agent/分支并开拉取请求,描述中记录验证命令、退出码和尝试次数。验证通过则PR正常打开,未通过则以草稿打开。代理不执行合并。每个步骤的状态写入DynamoDB,Claude Code和网页控制台据此跟踪任务。
安全控制与其边界
每个会话中,Claude Code只以Amazon Bedrock为模型提供商,调用经私有Bedrock端点并以runtime的IAM执行角色签名,容器内不存放其他AWS凭据。
护栏方面,任务入队前的API通过ApplyGuardrail API使用Standard层级护栏,该层级过滤器可理解代码;低强度配置下拦截越狱与提示注入、恶意请求,以及AWS访问密钥等机密。被拦截的提示词返回PromptBlockedByGuardrail,护栏无法响应时任务被拒绝。
AWS明确指出护栏检查的是用户输入的文字,不是代理运行期间读取的内容,因此经仓库文件或命令输出进入的提示注入不会被它看到。文章同时说明为什么不对每次模型调用都筛查:每次都要重算完整上下文,按文本量计费,而且会把Claude Code自身的系统提示误判为注入尝试。
网络方面,runtime位于VPC私有子网,经VPC端点访问所调用的AWS服务,提示词、任务状态和日志不经互联网传输;唯一出网路径是到GitHub和包仓库的NAT网关,安全组只允许出站HTTPS。Route 53 Resolver DNS防火墙屏蔽模型厂商自有域名(如api.anthropic.com),但作为拒绝名单并不阻断其他HTTPS流量,文章建议生产环境考虑AWS Network Firewall域名允许清单。
权限方面,runtime的IAM角色只能调用Bedrock上的Anthropic模型、读写本仓库的任务记录与memory、拉取代理镜像,并被显式拒绝访问AgentCore Identity控制平面。
使用条件与成本
部署需要具备:提供AgentCore runtime V2的AWS区域之一(美国东部弗吉尼亚北部、俄亥俄、美国西部俄勒冈、亚太东京、欧洲爱尔兰),带凭据的AWS CLI,运行中的Docker(需在本地构建约 1.3 GB的ARM64镜像),Python 3.11及以上、uv和Node.js 22.12及以上,一个测试可通过的小型受信任GitHub仓库,其根目录Makefile含setup与test目标,或根package.json含scripts.setup和scripts.test;空仓库可用示例脚本初始化。
文章称部署耗时 15–25 分钟,注册仓库另需 8–12 分钟;部分资源固定部署在us-east-1,部署到其他区域时需同时bootstrap us-east-1。
空闲时也会产生费用,来自NAT网关、接口端点、AWS WAF、Cognito用户池、DNS防火墙、镜像和日志。部署默认设置每月 200 美元的Amazon Bedrock预算,只发邮件提醒、不限制支出;该示例未发布成本估算,文章建议用完后按清理步骤移除资源。
- 适合:受信任仓库上范围明确的功能、缺陷修复和测试,仓库自带安装与测试命令。
- 不适合:不受信任的代码;开放式任务(每个任务最多三次尝试后停止)。