You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
基于 E2B 协议管理
SDK 开发指南
复制全文
下载 pdf
SDK 开发指南
本文主要介绍使用 E2B 协议管理 VCI Agent Sandbox 的 SDK 开发指南。
E2B 兼容概况
分类
API
说明
兼容性
兼容性说明
Sandbox 生命周期
create
创建 VCI Agent Sandbox。
部分兼容
不支持网络访问控制、原地变配、自动暂停。
Sandbox 生命周期
get_info
获取 VCI Agent Sandbox 实例信息。
完全兼容
Sandbox 生命周期
list
列出所有 VCI Agent Sandbox 信息。
完全兼容
Sandbox 生命周期
delete
删除 VCI Agent Sandbox 实例。
完全兼容
Sandbox 生命周期
connect
连接 VCI Agent Sandbox 实例。
完全兼容
Sandbox 生命周期
pause
暂停 VCI Agent Sandbox 实例。该接口为异步接口,接口调用成功时,Sandbox 对应的底层 Pod 成功回收, 但快照仍在创建中。
完全兼容
Sandbox 生命周期
resume
恢复 VCI Agent Sandbox 实例,自动基于最近一次暂停时生成的可写层快照恢复数据。
完全兼容
文件系统
write
主容器需要运行e2b-code-interpreter组件。可在 Template 的initcontainer中查看e2b-code-interpreter组件的定义。
完全兼容
除了在 Template 中的initcontainer字段下定义,也可通过注解agent.sandbox.io/enable-envd-injection: "true"实现,VCI 将自动注入envd程序。
文件操作
read
完全兼容
代码执行
run_code
完全兼容
命令执行
commands.run
完全兼容
API Key 管理
-
由于 E2B code interpreter SDK 不包含 API Key 管理能力,通常通过 E2B Web 控制台、E2B CLI 或 HTTP 方式操作。VCI Agent Sandbox 主要提供 HTTP 调用方式,包括 POST、DELETE、GET。
不涉及
Template 管理
post_templates
在构建完整的 SandboxTemplate 结构后创建模板。
完全兼容
requests.delete
删除模板。原生 E2B SDK 中无该接口,建议按需通过 API 操作模板。
不涉及
requests.patch
更新模板。原生 E2B SDK 中无该接口,建议按需通过 API 操作模板。
不涉及
requests.get
获取单个模板详情。原生 E2B SDK 中无该接口,建议按需通过 API 操作模板。
不涉及
快照管理
create_snapshot
创建快照。
完全兼容
requests.delete
删除快照。
不兼容
list_snapshot
查询快照列表,仅返回已制作完成且可用的快照。
完全兼容
监控管理
get_metrics
获取 Sandbox 的运行监控数据。
部分兼容
不支持指定起止时间。
E2B SDK 说明
E2B 官网提供多种 SDK 接入,其中包括e2be2b_code_interpreter等接入方式。本文场景中推荐您使用e2b_code_interpreter,该方式预装了可用于数据分析的 Python 库。
pip install e2b-code-interpreter==2.4.1 e2b==2.10.2 anthropic python-dotenv
本文代码示例中均以 Python 为例,更多语言示例,请参见 E2B 官网
E2B 标准能力
Sandbox 生命周期
创建 Sandbox
查询 Sandbox
删除 Sandbox
暂停 Sandbox
恢复 Sandbox
请求 body 参数
参数名
类型
是否必选
说明
template
string
创建 Sandbox 时使用的 Template ID。
timeout
int
Sandbox 的存活时间:
  • 单位:秒
  • 默认值:300
metadata
Dict[str, str]
需要传递给 Sandbox 的额外注解信息。
secure
bool
Sandbox 是否开启envd鉴权:
  • True:为envd配置鉴权信息,配置成功后访问envd执行文件操作、命令操作时,需要传递鉴权信息。
  • False:不开启envd鉴权。
返回参数
参数名
类型
说明
SandboxInfo
Class
包含 Sandbox 基本信息的类。子参数说明,见下方 SandboxInfo
SandboxInfo
参数名
类型
说明
template_id
string
创建 Sandbox 时使用的 Template ID。
sandbox_id
string
Sandbox 实例的 ID。
envd_version
string
使用的envd版本。
_envd_access_token
string
envd的鉴权信息。
domain
string
E2B API 的访问域名。
使用示例
def create_sandbox(template):
sbx = Sandbox.create(template=template, secure=True)
print("created sandbox_id=", sbx.sandbox_id)
return sbx
文件系统
上传文件
下载文件
使用示例
def upload_file(sbx):
with open("./test.txt", "rb") as file:
sbx.files.write("/test.txt", file)
代码执行
代码执行
使用示例
def run_code(sbx):
sbx.run_code("print('hello world')")
命令执行
命令执行
使用示例
def run_command(sbx):
sbx.commands.run('echo hello')
API Key 管理
VCI 提供 POST、DELETE、GET 等 HTTP 调用方式。
创建 API Key
删除 API Key
获取 API Key 列表
使用示例
# API Key 配置
API_BASE_URL = os.getenv("API_BASE_URL", "your.domain")
ADMIN_API_KEY = os.getenv("ADMIN_API_KEY", "sk-local-test-123456")
# API 请求头
headers = {
"X-API-KEY": ADMIN_API_KEY,
"Content-Type": "application/json"
}
def create_api_key(name):
"""Create a new API key"""
url = f"{API_BASE_URL}/api-keys"
payload = {"name": name}
print(f"Creating API key: {name}")
response = requests.post(url, headers=headers, json=payload)
模板(Template)管理
创建模版
删除模板
更新模板
获取单个模版详情
使用示例
from e2b.connection_config import ConnectionConfig
from e2b.api.client_sync import get_api_client
from e2b.api.client.api.templates import post_templates
from e2b.api.client.models import TemplateBuildRequest
"""
使用官方 E2B SDK 创建 SandboxTemplate
Args:
api_base_url: E2B API 服务基础地址
api_key: API 认证密钥
template_name: 模版名称
namespace: Kubernetes 命名空间(默认 default)
template_spec: 可选的模版 spec 配置
"""
# 2. 配置模版 spec
if template_spec is None:
template_spec = {
"podTemplate": {
"metadata": {
"annotations": {
"agent.sandbox.io/snapshot-max-num": "2",
"vci.vke.volcengine.com/enable-auto-create-imc": "true",
"vci.vke.volcengine.com/preferred-instance-family": "vci.u1,vci.n3i",
"vci.volcengine.com/persistent-container": "true",
"vci.volcengine.com/tls-enable": "false",
"vci.volcengine.com/usable-disk-capacity": "40",
"vke.volcengine.com/burst-to-vci": "enforce"
}
},
"spec": {
"containers": [
{
"env": [
{"name": "ENVD_DIR", "value": "/mnt/envd"},
{"name": "PORT", "value": "49999"}
],
"image": "cr-cn-guilin-boe.volces.com/vke/code-interpreter:v0.1.0",
"lifecycle": {
"postStart": {
"exec": {
"command": ["/bin/bash", "-c", "/mnt/envd/envd-run.sh"]
}
}
},
"name": "main",
"resources": {
"limits": {"cpu": "2", "memory": "4Gi"},
"requests": {"cpu": "2", "memory": "4Gi"}
},
"volumeMounts": [
{"mountPath": "/mnt/envd", "name": "envd-volume"}
]
}
],
"initContainers": [
{
"command": ["sh", "/workspace/entrypoint.sh"],
"env": [
{"name": "ENVD_DIR", "value": "/mnt/envd"},
{"name": "__IGNORE_RESOURCE__", "value": "true"}
],
"image": "helm-cr-cn-guilin-boe.cr.volces.com/vke/agent-runtime:v0.0.4",
"name": "runtime",
"restartPolicy": "Always",
"volumeMounts": [
{"mountPath": "/mnt/envd", "name": "envd-volume"}
]
}
],
"terminationGracePeriodSeconds": 1,
"volumes": [{"emptyDir": {}, "name": "envd-volume"}]
}
}
}
# 3. 构建完整的 SandboxTemplate 结构
sandbox_template = {
"apiVersion": "extensions.agents.x-k8s.io/v1alpha1",
"kind": "SandboxTemplate",
"metadata": {
"name": template_name,
"namespace": namespace
},
"spec": template_spec
}
# 4. 初始化 E2B SDK 连接配置
try:
config = ConnectionConfig(
api_key=api_key,
api_url=api_base_url
)
# 获取 API 客户端
api_client = get_api_client(
config,
require_api_key=True,
require_access_token=False
)
print(f" ✅ SDK 连接初始化成功!")
except Exception as e:
print(f" ❌ SDK 连接初始化失败: {e}")
return None
# 5. 构建 SDK 请求对象
# 必填,TemplateBuildRequest 必须传入 dockerfile 字段,即使自定义 server 未使用 dockerfile 字段,也需传入空值
build_request = TemplateBuildRequest(
dockerfile=""
)
build_request["namespace"] = namespace
build_request["sandboxTemplate"] = sandbox_template
print(f" ✅ 请求对象构建成功!")
# 6. 调用官方 SDK 接口创建模版
# 使用 sync_detailed 可以获取完整响应信息
response = post_templates.sync_detailed(
body=build_request,
client=api_client
)
快照管理
创建快照
删除快照
查询快照列表
返回参数
参数名
类型
说明
SandboxInfo
Class
包含 Sandbox 基本信息的类。子参数说明,见下方 SandboxInfo
SandboxInfo
参数名
类型
说明
snapshotId
string
快照的 ID。
使用示例
def create_snapshot(sandbox_id: str) -> None:
sbx = Sandbox.connect(sandbox_id)
snap_shot_info = sbx.create_snapshot()
监控管理
获取监控
返回参数
参数名
类型
说明
List[SandboxMetrics]
List
包含 Sandbox 基本信息的列表。子参数说明,见下方 SandboxMetrics
SandboxMetrics
参数名
类型
说明
cpu_count
Integer
Sandbox 的 CPU 总核数。
cpu_used_pct
Float
Sandbox 的 CPU 使用率。
disk_total
Integer
Sandbox 的磁盘总量。
disk_used
Integer
Sandbox 已经使用的磁盘大小。
mem_total
Integer
Sandbox 的内存总量。
mem_used
Integer
Sandbox 已经使用的内存大小。
timestamp
DataTime
指标时间戳。
使用示例
def metrics_operation(sbx):
res = sbx.get_metrics()
print(res)
最近更新时间:2026.08.05 15:29:52
这个页面对您有帮助吗?
有用
有用
无用
无用