View a markdown version of this page

将 Lambda MicroVMs 作为 Claude Managed Agents 的沙盒使用 - AWS Lambda

将 Lambda MicroVMs 作为 Claude Managed Agents 的沙盒使用

AWS Lambda MicroVMs 是适用于 Claude Managed Agents 的自托管沙盒中的托管式沙盒提供程序;可确保敏感文件、软件包和服务留在您控制的基础设施中。Anthropic 负责托管代理循环和 Claude 模型,而 Lambda MicroVMs 是工具调用运行的场所。这种模式让您能够控制执行环境,包括安装对象、可用的网络访问权限以及代理可以访问的资源。

每个 MicroVM 都是一个 Firecracker 隔离虚拟机,基于快照实现亚秒级启动速度,运行时间最长可达 8 小时,并且可以在会话结束时终止。会话永远不会共享状态。您可以通过无服务器的运营模式获得虚拟机的安全边界,无需管理集群,也无需为空闲容量付费。您可以将 MicroVM 与 AWS 服务进行编排,从而遵循下文所述的自托管沙盒规范。有关更多详细信息,请参阅 Claude Managed Agents Self-Hosted Sandboxes on Lambda MicroVMs 参考示例。

工作原理

控制面板将为每个 Claude 会话启动一个 MicroVM:

  1. 会话进入正在运行状态后,Anthropic 会向您账户中的某个端点发送一个 session.status_run_started Webhook。

  2. 启动器 Lambda 函数用于验证 Webhook 签名,然后调用 RunMicroVM

  3. 您在 MicroVM 上的代码会声明会话,在 /workspace 中执行工具调用(bash、read、write、edit、glob、grep),并将结果发布回 Anthropic。

  4. 会话结束时会暂停或终止 MicroVM。

您的 Anthropic 组织 API 密钥永远不会传入 AWS 计算端。启动器仅会将 AWS Secrets Manager 引用传递给您的 Anthropic 环境键;MicroVM 的执行角色允许该代码在运行时读取它。

键属性

属性 Benefit
Firecracker 隔离 每个会话的硬件虚拟化边界
基于快照的启动 在不到一秒至几秒的时间内从 Firecracker 快照恢复
通过 IMDSv2 的 IAM 使用具有最低权限的短期凭证
有状态持续时间 在磁盘满和内存访问权限的情况下,最长可运行 8 小时
按会话付费 MicroVM 将在会话完成后终止,从而结束计费

先决条件

  • 一个拥有 Amazon Simple Storage Service(Amazon S3)、AWS Identity and Access Management(IAM)、Secrets Manager、AWS WAF、Lambda 和 Lambda MicroVMs 权限的 AWS 账户

  • 一个具有 self_hosted 环境的 Claude Managed Agents 代理

  • 来自 Claude 控制台的环境键和 Webhook 签名密钥

部署参考实现

显示 Lambda MicroVMs 上的 Claude 自托管沙盒参考实现的架构图

Claude Managed Agents Self-Hosted Sandboxes on Lambda MicroVMs 存储库提供了一个有效的最简部署。它包括:

  • 一个 CloudFormation 堆栈(Amazon API Gateway、启动器 Lambda 函数、Secrets Manager 密钥、Amazon S3 存储桶、IAM 角色)

  • 一个 MicroVM 映像(Dockerfile、Node.js EnvironmentWorker、生命周期挂钩)

  • 一个部署脚本和验证脚本

部署步骤:

  1. 部署 CloudFormation 堆栈。

  2. 将环境键和签名密钥存储在创建的 Secrets Manager 密钥中。

  3. 构建 MicroVM 映像。

  4. 在 Claude 控制台中注册堆栈的 Webhook URL。

  5. 通过创建会话进行验证。

有关详细说明,请参阅存储库 README 文件。

Networking

Lambda MicroVMs 会默认具有公共互联网访问权限,无需配置即可连接到 api.anthropic.com

要访问 Amazon Aurora 数据库或 Amazon ElastiCache 集群等私有资源,或者要应用您自己的网络限制,请在启动时附加一个 VPC 出口连接器。请参阅使用出口网络连接器

空闲策略

为每个会话 MicroVM 设置 suspendedDurationSeconds: 0autoResumeEnabled: false。将 maximumDurationInSeconds 设置为卡滞会话的上限(最大值 28800 秒)。

{ "maxIdleDurationSeconds": 120, "suspendedDurationSeconds": 0, "autoResumeEnabled": false }

监控

应用程序日志:在 CloudWatch Logs 中检查应用程序日志:

aws logs tail /aws/lambda-microvms/claude-worker --follow

正在运行 MicroVM:列出您账户中正在运行的 MicroVM:

aws lambda-microvms list-microvms \ --image-identifier claude-worker \ --query 'items[].[microvmId,state,startedAt]' --output table

问题排查

症状 原因
Webhook 返回 401 错误 签名密钥不匹配或传输过时
无 MicroVM 启动 Webhook 未注册 session.status_run_started,或者启动器 Lambda 函数执行角色缺少 RunMicroVM 权限
MicroVM 即刻终止 /run 钩子超时:提高 runTimeoutInSeconds
Worker 节点即刻退出 api.anthropic.com 的出站 HTTPS 被屏蔽
映像构建失败 S3_* 构建角色或存储桶配置错误