11月11日,Amazon Web Services 发布了 AWS Emulator。这是一个可以在开发者电脑或持续集成环境里运行的本地模拟器,现有的 AWS SDK 和命令行工具用同一套接口去调用它。同一天,AWS 开发者工具团队高级主任工程师 Matthew Goldberg 写道:模拟器的全部代码由成千上万个自主人工智能代理编写,团队没有手写或审阅其中任何代码。源码以 Creative Commons CC0 1.0 公共领域方式公布。
它在本机提供的是同一套接口,不是完整的云
根据 AWS 的新产品说明和开发者博客,模拟器启动后会在本机生成证书和密钥,默认在 127.0.0.1:9297 提供 HTTPS 服务。开发者把终端指向这个地址后,创建 DynamoDB 表、上传对象到 S3 这类操作可以不部署、不使用 AWS 账号,在本机完成。访问密钥标识以 EMULATOR 开头,模拟器会拒绝用其他密钥签名的请求。每个实例有独立的端口、密钥和内存状态,代理、测试套件和持续集成任务看不到彼此的资源。停止运行后,内存里的状态也就没了。
对它已经支持的操作,官方的目标是:有效请求返回与 AWS 相同的结果,无效请求返回相同的错误。尚未实现的操作返回 HTTP 501(Not Implemented)。服务实现来自 AWS 公开发布的 API 模型,也就是 SDK 所依据的同一套描述。Goldberg 写道,目前对应 438 个 API 模型;在 Amazon 首席技术官 Werner Vogels 博客转载的文章里,AWS 数据与人工智能负责人 Swaminathan Sivasubramanian 写的是 400 多个 API 模型、200 多项服务。模拟器不绑定某个 AWS 区域,也没有额外服务费,用户只在真正部署到 AWS 时才为云上资源付费。
Linux 可通过 RPM 或 Debian 包安装;macOS 和 Windows 需按文档用 Docker 运行,官方不提供现成镜像。除了用 Rust 实现的独立进程,模拟器还提供面向 AWS SDK for Rust 的进程内嵌入模式,便于并行测试时各自保持独立状态。
人设计护栏,代理写代码和修偏差
Goldberg 把产品的起点写成一个周末实验。他看到 Anthropic 的研究展示代理可以自主编写 C 编译器后,给 Kiro 下了一组简单指令:根据 AWS 命令行写测试,先让测试对着真实 AWS 通过,再写一份能通过同一批测试的内存实现。他写到,大约 15 分钟后得到了还说得过去的 Amazon SQS 初版,周末里又让 Kiro 搭出其余服务的雏形,周一团队就开始拿来测自己的软件。把它做成可交付的产品,则要另建一套护栏。
正式流程被分成三组代理。第一组根据公开 API 模型设计真实使用场景测试,先在真实 AWS 上验证,再用来衡量模拟器。Goldberg 称这类保真测试已有数万条,并随代理发现新场景而增加。第二组回放这些测试,找出模拟器与云上行为的偏差,并提交工单。第三组每次只修一个工单,改完必须通过编译、编码规范、安全审查和保真回归,才能合入主线。Goldberg 写道,他们见过每天有数千个工单被修复,数百个代理同时改同一份代码库。没有这道合并门禁,他们不会信任代理正在构建的东西。
代码先进入 AWS CodeCommit,经 AWS Developer Tools 上的发布流水线构建、再测,再打成可下载的二进制包,最后才同步到 GitHub。公开仓库里既有已修复的工单目录,也有仍未对齐的行为清单。Goldberg 提到,早期版本里代理曾决定自写一个 Python 解释器来支持 AWS Lambda,后来团队要求它们优先复用现有库。
Sivasubramanian 把工程师的工作写成:给代理留下独立工作的空间,同时把规格、测试和合并门禁设计成判断对错的标准。他用 Kiro 重做多年前为分布式锁服务 Alf 编写的复制引擎时,前四个晚上一直盯着代理,后来发现它没有办法核对自己的结果;一旦有了规格和测试环境,重建大约用了两小时。AWS Emulator 从一开始就有公开 API 模型和真实云作为对照。
官方自己划出的边界
保真度按服务分别计算,记成“通过数 / 测试总数”,例如 40/50,并随每个版本发布在 GitHub Releases 上。官方文档写明,目前模拟器在控制面 API 上与 AWS 更接近;数据面以及 CloudFormation、Terraform、AWS CDK 等基础设施即代码工具的支持因服务而异。通过的测试不会回退,但新增加的测试可能让分数看起来下降。开发者博客还提醒:不要用模拟器检验应用是否安全,因为它不会像 AWS 那样评估 IAM 策略和基于资源的策略,云上会拒绝的请求,在模拟器里有可能通过。每个模拟器实例只表现为单一账户,没有跨账户、跨区域行为。默认只监听本机,并要求请求用 Signature Version 4 签名。
目前 GitHub 上的最新版本为 v1.0.338,变更说明仍是一批批修复尚未对齐的行为。这印证了官方自己的定位:它是一份持续被代理修改的快照,与云上行为尚未逐条一致。
对开发者来说,这份产品把云上的接口搬进了编码循环,让代理可以在本机创建资源、看结果、再改代码。它同时把一个更尖锐的问题摊开:当代码可以不经人阅读就发布,判断对错的标准就必须写在测试、门禁和公开的失败清单里。

