

# 将 Lambda MicroVMs 作为 Claude Managed Agents 的沙盒使用
<a name="microvms-integrations-claude-managed-agents"></a>

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

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

## 工作原理
<a name="microvms-integrations-claude-how-it-works"></a>

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

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

1. 启动器 Lambda 函数用于验证 Webhook 签名，然后调用 `RunMicroVM`。

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

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

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

## 键属性
<a name="microvms-integrations-claude-properties"></a>


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

## 先决条件
<a name="microvms-integrations-claude-prereqs"></a>
+ 一个拥有 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 签名密钥

## 部署参考实现
<a name="microvms-integrations-claude-deploy"></a>

![显示 Lambda MicroVMs 上的 Claude 自托管沙盒参考实现的架构图](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/microvms-claude-managed-agents-architecture.png)


[Claude Managed Agents Self-Hosted Sandboxes on Lambda MicroVMs](https://github.com/aws-samples/sample-lambda-microvm-claude-managed-agents) 存储库提供了一个有效的最简部署。它包括：
+ 一个 CloudFormation 堆栈（Amazon API Gateway、启动器 Lambda 函数、Secrets Manager 密钥、Amazon S3 存储桶、IAM 角色）
+ 一个 MicroVM 映像（`Dockerfile`、Node.js EnvironmentWorker、生命周期挂钩）
+ 一个部署脚本和验证脚本

部署步骤：

1. 部署 CloudFormation 堆栈。

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

1. 构建 MicroVM 映像。

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

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

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

## Networking
<a name="microvms-integrations-claude-networking"></a>

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

要访问 Amazon Aurora 数据库或 Amazon ElastiCache 集群等私有资源，或者要应用您自己的网络限制，请在启动时附加一个 VPC 出口连接器。请参阅[使用出口网络连接器](microvms-networking.md#microvms-networking-connectors)。

## 空闲策略
<a name="microvms-integrations-claude-idle-policy"></a>

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

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

## 监控
<a name="microvms-integrations-claude-monitoring"></a>

**应用程序日志**：在 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
```

## 问题排查
<a name="microvms-integrations-claude-troubleshooting"></a>


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