E2B 沙箱模板默认使用 2 vCPU 和 2048 MB 内存。当默认规格无法满足计算需求时,可以在构建模板时通过 SDK 参数自定义 CPU 核数(2–16)和内存大小(2048–16384 MB),匹配实际业务场景的资源需求。
通过 SDK 指定规格
运行前,先在终端配置环境变量(将 e2b_xxxxx 替换为您的实际 API Key):
export E2B_API_URL="https://api.cn-beijing.e2b.fc.aliyuncs.com"
export E2B_DOMAIN="cn-beijing.e2b.fc.aliyuncs.com"
export E2B_API_KEY="e2b_xxxxx"Python SDK
Python SDK 使用 cpu_count 和 memory_mb 参数指定规格:
import os
from e2b import Template, Sandbox
def require_env(name: str) -> str:
value = os.environ.get(name, "").strip()
if not value:
raise RuntimeError(f"缺少环境变量: {name}")
return value
# conn_opts 包含 API Key 和北京地域的服务端点
conn_opts = {
"api_key": require_env("E2B_API_KEY"),
"api_url": require_env("E2B_API_URL"),
"domain": require_env("E2B_DOMAIN"),
}
# 构建模板,指定 4 vCPU 和 8192 MB 内存
build = Template.build(
Template().from_image(
"your-registry-xx.cn-beijing.cr.aliyuncs.com/origin/python:3.13-slim"
),
name="my-4c8g-template",
cpu_count=4,
memory_mb=8192,
**conn_opts,
)
print(f"模板创建成功: {build.template_id}")
# 验证:用该模板创建沙箱并检查资源
sandbox = Sandbox.create(
template=build.template_id,
timeout=300,
**conn_opts,
)
try:
result = sandbox.commands.run("python3 -c \"import os; print(os.cpu_count())\"")
print(f"CPU 核数: {result.stdout.strip()}")
result = sandbox.commands.run(
"python3 -c \""
"import os; "
"mem_bytes = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES'); "
"print(f'{mem_bytes // 1024 // 1024} MB')"
"\""
)
print(f"内存大小: {result.stdout.strip()}")
finally:
sandbox.kill()
print("沙箱已销毁")TypeScript SDK
TypeScript SDK 使用 cpuCount 和 memoryMB(camelCase 命名)指定规格:
import "dotenv/config";
import { Template, Sandbox } from "e2b";
const apiKey = process.env.E2B_API_KEY!;
const apiUrl = process.env.E2B_API_URL!;
const domain = process.env.E2B_DOMAIN!;
async function main() {
// 构建模板,指定 4 vCPU 和 8192 MB 内存
const template = await Template.build({
template: Template.fromImage(
"xl-bj-fc-registry-vpc.cn-beijing.cr.aliyuncs.com/origin/python:3.13-slim"
),
name: "my-4c8g-template",
cpuCount: 4,
memoryMB: 8192,
apiKey,
apiUrl,
domain,
});
console.log(`模板创建成功: ${template.templateId}`);
// 验证:用该模板创建沙箱并检查资源
const sandbox = await Sandbox.create({
template: template.templateId,
timeoutMs: 300_000,
apiKey,
});
try {
const cpuResult = await sandbox.commands.run(
"python3 -c \"import os; print(os.cpu_count())\""
);
console.log(`CPU 核数: ${cpuResult.stdout.trim()}`);
const memResult = await sandbox.commands.run(
`python3 -c "import os; mem = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES'); print(f'{mem // 1024 // 1024} MB')"`
);
console.log(`内存大小: ${memResult.stdout.trim()}`);
} finally {
await sandbox.kill();
console.log("沙箱已销毁");
}
}
main();参数说明
Python 参数 | TypeScript 参数 | 类型 | 默认值 | 说明 |
|
| int | 2 | CPU 核数,取值 2–16。 |
|
| int | 2048 | 内存大小(MB),取值 2048–16384,必须为 64 的整数倍,且满足 CPU 与内存比例约束。 |
通过 E2B CLI 查看规格
使用 e2b template list 命令查看已有模板的资源配置:
export E2B_API_KEY=e2b_xxx
export E2B_ACCESS_TOKEN=$E2B_API_KEY
export E2B_API_URL=https://api.cn-beijing.e2b.fc.aliyuncs.com
export E2B_DOMAIN=cn-beijing.e2b.fc.aliyuncs.com
e2b template list输出示例:
Access Template ID Template Name vCPUs RAM MiB Disk size MiB buildStatus
Public z736qq9k2qtazlr1u80z base 2 2048 10240 ready
Public 27y6ril28g82jzzxgqec code-interpreter-v1 2 2048 10240 ready
Private a1b2c3d4e5f6g7h8i9j0 my-4c8g-template 4 8192 512 ready输出中的 vCPUs 和 RAM MiB 列对应模板的 CPU 和内存规格。
修改已有模板的规格
当前版本的 E2B SDK 不支持直接修改已有模板的 CPU 和内存规格。如需使用不同规格,请执行以下操作:
使用新的
cpu_count和memory_mb值创建一个新模板。将业务代码中的模板 ID 或模板名称替换为新模板。
验证新模板的沙箱可正常运行后,删除旧模板。
该文章对您有帮助吗?