错误
本页帮助你弄清一个错误的含义和下一步该做什么。程序可以按收到的失败原因查,也可以按看到的现象查。链接的页面有每种情况的完整说明。
失败原因
多数 API 错误带有 ErrorDetail,首先看其中的 reason。retryable 为 true 时,重试可能成功:错误详情带 command_settled 时换新的幂等键,否则用同一个。没有 ErrorDetail 的错误只有 Connect 错误码与消息。见错误格式。
reason | 含义 | 处理 |
|---|---|---|
INVALID_REQUEST | 请求格式不对或超过限制 | 修改请求,见默认值与限制 |
NOT_FOUND | 对象或路径不存在 | 核对 ID 或路径。已删除的 Workspace 仍能按 ID 读取 |
CONFLICT | 对象的状态或版本不允许这个请求,或者同一个幂等键用了不同的输入 | 重新读取对象,按当前状态决定,见版本校验 |
RESOURCE_EXHAUSTED | 没有 node 放得下,或者达到了磁盘空间、流数量这类上限 | 看 retryable。容量不足时稍后重试,否则释放资源或缩小请求 |
CAPABILITY_UNAVAILABLE | guest、node 或部署缺少这项操作的条件,例如较新的 guest 或已配置的指标存储 | 看 message。guest 较旧时重启 Workspace,其他情况问部署方 |
UNSUPPORTED | 这个操作在此处不适用,例如调整没有终端的进程的大小,或者对方缺少这个功能 | 看 message。功能缺失时见先查询能力 |
UNAUTHENTICATED | 身份或凭证未被接受 | 确认证书没有过期,见认证 |
PERMISSION_DENIED | 调用方无权这样做,或者 guest 拒绝了文件或进程操作 | 核对身份、凭证的权限范围与 guest 账号 |
SESSION_EXPIRED | 会话凭证已过期 | 用新的幂等键申请新凭证,Go SDK 会替你完成,见缓存与续期凭证 |
SESSION_REVOKED | 凭证被撤销,或者 Workspace 已停止或已删除 | 查看 Workspace 的状态,再申请新凭证 |
UNAVAILABLE | 依赖不可用、命令仍在执行,或者 Workspace 的这次执行已结束 | retryable 为 true 时重发:错误详情带 command_settled 时换新的幂等键,否则用同一个。为 false 时读取 Workspace 的状态 |
TIMED_OUT | 操作没有按时完成 | 重试前先读取对象的状态与命令的结果 |
CANCELLED | 另一条命令取代了它(例如强制停止或删除),或者请求被取消 | 读取对象的状态,仍有需要时重发请求 |
PROTOCOL_INCOMPATIBLE | node 或 guest 给出了不符合契约的回答 | 把幂等键告诉部署方。版本不一致是可能的原因之一,见重装与升级 |
VOLUME_LOST | Workspace 绑定的 Volume 处于 LOST,不可重试 | 绑定别的 Volume 或删除 Workspace,见保证与边界 |
INTERNAL | 服务端的意外错误 | retryable 为 true 时重试,否则把幂等键告诉部署方 |
Workspace 状态
| 状态 | 处理 |
|---|---|
FAILED | 先强制停止,再启动,见从 FAILED 恢复 |
UNKNOWN | 等系统确认结果,或用原来的幂等键重发,见各状态下能做的操作 |
AVAILABLE,但请求超时 | guest 可能卡住了,见 guest 回应情况 |
常见现象
| 现象 | 可能的原因 | 详见 |
|---|---|---|
spec.template and spec.resources are required | 原生 API 创建时没有传 Resources,只有 kibo 会补默认值 | 创建 Workspace |
exactly one valid pipe or PTY mode is required | 原生 API 的 Start 没有传 Mode | 命令与终端 |
managed identity directory … must not grant group or other access | 身份目录对其他用户开放 | 连接 ctrl |
guest 里出现 Could not resolve host 或 bad address | Workspace 默认不能访问网络 | 网络概览 |
| 连接立即失败,或者出现 Egress、Resolver 故障 | 网络策略,或者你的代理、DNS 上游 | 网络排查 |
以默认账号发出的请求返回 CONFLICT,root 却正常 | Template 声明的账号在 guest 里被删除 | 默认账号不可用 |
| 进程几乎没有进展 | Workspace 内存不足 | 资源与运行状况 |
写文件返回 413 或 resource_exhausted | 文件超过 1 GiB,或者磁盘已满 | 文件 |
kibo 以自己的退出码退出 | 见分类表 | kibo 退出码 |
E2B SDK 错误
| 看到的 | 含义 | 详见 |
|---|---|---|
501,或 SandboxError: 501: unimplemented: … | 网关不提供这项能力,消息里写明了名称 | 不支持的能力 |
| 明明存在的 sandbox 返回 404 | 网关没有实现这个接口 | 返回的错误 |
404 template catalog record not found | 部署里没有这个名称的 Template | 从 E2B 迁移 |
创建或 connect 返回 502 | sandbox 在 90 秒内没有运行起来,之后仍可能启动;或者调用在 Kibotos 里失败。用同一个 Idempotency-Key 重试 | 创建 sandbox |
| 查询与暂停返回 502 | sandbox 已失败 | 意外的暂停、重启与失败 |
503 与 resource_exhausted | 没有 node 放得下 | 容量不足 |
connect 返回 409 | sandbox 已失败,不能按原样启动 | 恢复 |
fetch failed | 证书不受信任,或者域名到不了网关 | 快速开始 |
CommandExitError | 命令以非零退出码结束 | 命令与终端 |
按主题排查
下一步
- 写操作与错误:幂等键、版本校验与重试的规则。
- 接入 Agent 平台:平台怎样应对失败。
- FailureReason:API 参考里的枚举。