AWS开源云模拟器,专为Agent验代码

AWS 发布官方开源 AWS Emulator,让 AI 编程 Agent 在本地模拟超过 200 项云服务,自动验证代码与资源编排。它不是生产环境替代品,却补上了 Agent 云开发最关键的反馈闭环。
AWS开源云模拟器,专为Agent验代码
AWS 在 11 月 11 日正式发布并开源 AWS Emulator,一款可在本地模拟 AWS API 的官方工具。开发者和 AI 编程 Agent 不需要 AWS 账号,也不必真正部署云资源,就能在个人电脑或 CI 环境中创建、查询、更新和删除模拟资源,验证应用代码是否按预期工作。(allthingsdistributed.com)
AWS Emulator 是一个运行在本地的 AWS API 模拟环境,核心作用是让程序在部署到真实云端之前,先对云服务调用和资源状态变化进行集成测试。
这件事表面上是在补 AWS 本地开发工具链,实际瞄准的却是 AI 编程 Agent 的一个硬伤:Agent 已经可以快速生成 Lambda、S3、DynamoDB、SQS 和 CloudFormation 代码,但它通常没有一个便宜、快速且行为足够接近真实 AWS 的环境来检查自己的工作。
换句话说,Agent 以前能写云代码,却不一定有条件运行和验证云代码。AWS Emulator 想把“基础设施”直接塞进 Agent 的编码循环里。

不是 Mock,而是一个有状态的本地 AWS
AWS Emulator 最重要的区别,是它并非简单返回预设结果的 Mock 函数。
Mock 是用预先编排的响应替代外部依赖,而 Emulator 会模拟资源创建、状态保存、参数校验和后续 API 调用之间的关系。
例如,一段代码先创建 SQS 队列,再发送消息,随后接收消息并等待可见性超时。普通 Mock 可能只会在每一步返回“成功”;AWS Emulator 则需要记录队列和消息状态,并模拟消息在可见性超时期间对其他消费者不可见的行为。
这对 AI Agent 尤其重要。Agent 最容易生成“语法正确、调用链看起来合理,但实际服务行为不成立”的代码。没有状态环境时,它只能判断 SDK 是否报错,无法判断多个资源、多个请求之间的关系是否正确。
AWS 官方称,Emulator 在当前阶段对控制面操作的匹配程度最高,也就是创建、描述、更新和删除资源的 API。对于已经实现的操作,它会尽可能返回与真实 AWS 相同的参数错误和错误类型,并保存模拟资源的状态,让后续调用能够读取前一次操作的结果。(docs.aws.amazon.com)
超过200项服务,代码本身也由Agent生成
AWS Emulator 的技术规模比一个 S3 或 DynamoDB 本地替身大得多。
根据 Amazon CTO Werner Vogels 发布的文章,这个项目由超过 400 份 AWS API 模型驱动,覆盖超过 200 项 AWS 服务。AWS 用于描述服务操作、输入、输出和错误结构的 Smithy 模型,构成了 Agent 理解服务接口的基础。(allthingsdistributed.com)
更值得关注的是,AWS 表示 AWS Emulator 的代码全部由 AI Agent 编写和测试。
项目最初从 SQS 开始。AWS 高级首席工程师 Matt Goldberg 给 Kiro 一条描述开发思路的提示后,Agent 大约用 15 分钟生成了第一个“可以工作”的 SQS 模拟器版本。随后,AWS 将这一方法扩展至数百个 API 模型,并让多组 Agent 持续对照真实 AWS 修复行为差异。(allthingsdistributed.com)
这不是“让模型随便写完再开源”。AWS 为项目设置了三层约束:
- 公开 API 模型负责描述服务应该接受哪些输入、返回哪些输出;
- 真实 AWS 环境负责提供行为基准,避免 Agent 自己定义“正确答案”;
- Fidelity Tests负责把真实 AWS 的行为记录为可重复执行的测试。
Fidelity 是模拟器行为与真实 AWS 行为的一致程度。
AWS 同步开源了 AWS Emulator Evaluation Suite。每个 Fidelity Test 都是一段独立的 Python 测试程序,通过 AWS SDK 执行完整工作流,并检查资源最终状态、错误代码和错误消息。官方说明,每项测试至少在两个隔离的 AWS 账号中验证过;未被测试覆盖的行为,则不会被宣称为已经验证。(github.com)
这套机制比单纯宣传“支持多少项服务”更有价值。云模拟器真正的问题从来不是有没有某个 API 名称,而是边界行为、异步状态、错误消息和跨服务事件能否对得上。
Agent终于有了云代码的反馈闭环
AI 编程 Agent 的能力上限,很大程度取决于它能否获得快速、可靠且可机器读取的反馈。
一个典型 Agent 编码循环包括四步:理解任务、修改代码、运行代码、读取结果。如果项目只是一个本地 Web 应用,Agent 可以启动服务、执行测试并读取日志;但如果代码依赖 S3 事件、SQS 可见性超时、DynamoDB 条件写入或 CloudFormation 资源编排,反馈循环就会突然断掉。
连接真实 AWS 虽然准确,却会带来账号、权限、网络、资源清理、执行速度和意外费用等问题。对一次需要反复试错几十轮的 Agent 任务来说,每一轮都部署真实资源既慢,也容易制造大量残留环境。
AWS Emulator 的价值,就是让 Agent 把以下动作留在本地完成:
- 生成应用代码与基础设施配置;
- 启动本地 AWS API 端点;
- 创建模拟资源并执行集成测试;
- 读取错误代码、资源状态和测试结果;
- 自动修改代码后再次运行。
AWS 还提供了名为 aws-emulator 的 Agent Skill。安装后,兼容的 AI 编程 Agent 可以自动安装、启动和连接 Emulator,并检查当前项目是否适合在模拟环境中运行;这一方式要求 AWS CLI 版本不低于 2.35.0。(github.com)
这意味着 AWS Emulator 不只是一个给开发者手动操作的命令行工具,而是一个明确为 Agent 工具调用设计的本地执行基础设施。
使用方式不复杂,但平台支持仍有差异
AWS Emulator 默认在本机 127.0.0.1:9297 提供 HTTPS 端点,应用通过环境变量把 AWS CLI 或 AWS SDK 的请求从真实 AWS 切换至本地地址。应用本身通常不需要重写业务调用逻辑。
在 Linux 上,开发者可以安装 RPM 或 Debian 软件包直接运行;Windows 和 macOS 当前主要通过 Docker 容器使用。Rust 项目还获得了一种更特别的 Embedded Mode,可以把 Emulator 直接编译到测试二进制文件中,每个测试创建相互隔离的实例,不再依赖端口、证书和外部进程。(github.com)
不过 Embedded Mode 的代价不小。AWS 官方仓库提示,从源码完整构建需要至少 100GB 可用磁盘空间,因为项目按照服务拆分了大量 Rust crate;首次冷构建还需要编译全部服务模块。普通用户显然更适合使用预编译包或 Docker,而不是直接把整个项目编进测试。(github.com)
| 工具 | 核心定位 | 覆盖范围 | 状态模拟 | Agent适配 | 主要限制 | |---|---|---:|---|---|---| | AWS Emulator | 官方 AWS API 本地模拟器 | 400+ API 模型、200+ 服务 | 支持有状态资源与行为测试 | 提供专用 Agent Skill | 首发版本仍存在大量 Fidelity 缺口 | | LocalStack | 第三方本地 AWS 云栈 | 多项常用 AWS 服务 | 支持较完整的本地资源工作流 | 可由 Agent 调用,但并非原生围绕 Agent Skill 设计 | 不同服务和版本的功能、许可模式存在差异 | | AWS SAM CLI | Serverless 应用构建、调试和部署工具 | 重点覆盖 Lambda、API Gateway 等 Serverless 场景 | 更侧重运行时和事件调用 | 适合验证 Lambda 代码 | 不是覆盖数百项 AWS 服务的通用模拟器 | | Moto | Python AWS 测试 Mock 库 | 覆盖大量 boto3 服务 | 以测试替身为主 | 易嵌入 Python 测试 | 对跨服务、异步状态和真实错误行为的模拟有限 |
AWS Emulator 不会立即取代这些工具。LocalStack 拥有长期积累的生态和本地开发经验,SAM CLI 在 Lambda 调试上仍然更聚焦,Moto 对 Python 单元测试也更轻量。
AWS Emulator 真正的优势是官方拥有完整的 Smithy API 模型、真实 AWS 行为基准和内部服务知识,可以把“与 AWS 到底有多像”从宣传语变成持续公开的测试分数。
最大限制:它不能验证权限,也不是安全沙箱
AWS Emulator 最容易被误解的地方,是开发者可能把“官方模拟器”等同于“本地 AWS 完整替代品”。
AWS Emulator 是功能测试环境,不是安全测试环境。
AWS 明确警告,不应使用它验证 IAM 策略、权限边界、S3 Bucket Policy、KMS Key Policy、跨账号访问或跨区域访问。部分请求在真实 AWS 中会因为权限不足被拒绝,却可能在 Emulator 中成功;反过来也可能发生。(docs.aws.amazon.com)
更关键的是,AWS Emulator 也不是用于执行不可信代码的隔离沙箱。
当模拟器运行 Lambda 等函数代码时,这些代码可能直接以当前用户权限访问和修改本机文件。也就是说,如果 AI Agent 生成了一段恶意或失控的代码,Emulator 不会像 Firecracker microVM、Lambda MicroVMs 或 AgentCore Code Interpreter 那样提供强隔离。
这两个产品层次必须分清:
- Emulator 解决“云服务行为能否在本地验证”的问题;
- Sandbox 解决“生成代码能否在隔离环境安全执行”的问题。
真正面向企业的 Agent 编程流水线,很可能需要把二者组合起来:Agent 在容器或 microVM 沙箱内运行代码,沙箱内部再启动 AWS Emulator,既避免代码伤害宿主机,又获得本地云服务反馈。
AWS的态度变了,但真实云测试仍不能省
AWS 此前在官方测试指南中一直提醒开发者谨慎使用模拟器,因为第三方模拟器可能落后于 AWS 新功能,也无法准确还原 IAM、配额和复杂服务交互。
现在 AWS 自己发布 Emulator,并不代表这些问题消失了,而是 AWS 决定亲自维护一层“足够接近真实服务”的本地反馈环境。
AWS Emulator 公开仓库甚至专门维护了 things-that-do-not-work 目录,记录当前尚未匹配真实 AWS 的行为。项目在 11 月 11 日已经发布 v1.0.322,发布记录中仍包含大量 S3、IAM、DynamoDB、CloudFormation、Lambda 和 Bedrock 相关差异修复。(github.com)
因此,它更合理的位置是测试金字塔的中间层:
- 单元测试继续使用 Mock,追求毫秒级速度;
- 本地集成测试使用 AWS Emulator,验证 API 调用和资源状态;
- 预发布测试仍然部署到真实 AWS,验证 IAM、网络、配额、区域差异和托管服务行为;
- 生产环境通过监控、灰度和回滚机制处理模拟器无法覆盖的问题。
把 Emulator 当作真实 AWS 的替代品,会产生虚假的安全感;把它当作 Agent 每次改代码之后都能运行的自动检查器,才是正确用法。
工程师的工作正在从写代码转向定义“正确”
AWS Emulator 最值得关注的并不是又多了一个本地工具,而是它展示了一套 Agent 软件工程方法。
Werner Vogels 在发布文章中提到,团队曾用 Kiro 重建一个早期分布式系统的复制引擎。原始版本由工程师花了约 4 个月完成,Agent 最初连续运行了 4 个晚上仍然没有可靠结果;当团队补上规格和测试环境后,重建只用了约 2 小时。(allthingsdistributed.com)
这个数字不能简单理解为“AI 把开发速度提高了数百倍”。真正发生的是,工程师把隐含在经验里的系统约束,转化成了 Agent 能执行和验证的规格。
Agentic Software Engineering 是一种由 Agent 执行代码生产、由工程师设计规格、测试和合并门禁的软件开发方式。
在这种模式下,工程师的核心产出不再只是代码行数,而是:
- 对行为边界足够准确的规格;
- 可以复现真实问题的测试环境;
- 能阻止错误进入主分支的 Merge Gate;
- 针对安全、兼容性和回归问题的自动审查 Agent;
- 明确哪些结果算通过、哪些差异必须拒绝的评价体系。
AWS Emulator 本身就是这种模式的示范项目:Agent 写代码,真实 AWS 提供事实基准,Fidelity Tests 定义可验证行为,安全 Agent 和自动检查负责控制合并质量。
判断:这是Agent云开发的关键拼图,但不是终点
AWS Emulator 对普通开发者的短期价值,是减少测试账号、临时资源和本地集成测试的成本;对 AI 编程 Agent 的长期价值,则是让云基础设施第一次成为可反复调用的本地反馈工具。
它不会让 Agent 自动生成的 AWS 架构突然变得可靠,也不会验证权限配置、生产性能和安全边界。但它可以明显减少一类低级错误:API 参数写错、资源状态假设错误、事件链无法触发、基础设施模板创建失败,以及代码只在 Agent 的文字推理中“理论可行”。
更重要的是,AWS 正在把竞争焦点从“谁的模型更会写代码”,推向“谁能给 Agent 提供更完整的验证环境”。模型能力会逐渐趋同,真正拉开工程效率差距的,很可能是测试环境、工具协议、沙箱、可观测性和自动评估体系。
AWS Emulator 目前仍是一个缺口很多、需要真实云端兜底的首发版本。但方向是对的:未来的 AI 编程 Agent 不应该只是生成代码,它必须能在足够接近真实世界的环境中运行、失败、读取结果并自我修正。
AWS 这次开源的,表面上是一个云模拟器;更准确地说,是 Agent 写云代码时缺失已久的本地实验场。
参考来源
- AWS Emulator GitHub 仓库:官方源代码、安装说明、已知问题、版本记录和 CC0 许可信息。
- AWS Emulator Evaluation Suite:官方行为一致性测试集,说明 Fidelity Test 的生成、验证和评分方式。
- AWS SAM CLI:AWS Serverless 应用本地构建、测试和调试工具,可用于对比两者定位。
- Moto:常用 Python AWS Mock 测试库,可用于理解 Mock 与有状态 Emulator 的区别。



