跳转至

快速入门

本文介绍如何完成函数计算云沙箱的最小可用配置,并用 Python SDK、TypeScript SDK 和 E2B CLI 创建一个 code-interpreter-v1 沙箱。

一、前置条件

  • 已拥有阿里云账号,并具备函数计算相关操作权限。
  • 本机可访问北京地域的云沙箱服务。
  • 已安装 Python 3.10 或更高版本(Python SDK)。
  • 已安装 Node.js 18 或更高版本(TypeScript SDK)。
  • 如需使用 CLI,已安装 E2B CLI。macOS 可使用 brew install e2b,也可以使用 npm i -g @e2b/cli

二、完成 FC3.0 SLR 授权

打开函数计算控制台,切换到北京地域。如果是新用户,第一次访问时会出现 SLR 授权弹窗,确认授权即可。

Note

如果已经是 FC3.0 用户,并且完成过 SLR 授权,可以跳过此步骤。

三、创建 API Key 并配置模板日志

在函数计算控制台中切换到北京地域,进入左侧导航的 云沙箱 -> API Keys,创建一个 API Key 并及时保存。

API Key 只会完整展示一次,建议写入本地环境变量、CI/CD 密钥或密钥管理服务,不要直接写入代码仓库。

创建 API Key 后,进入左侧导航的 沙箱模板 -> 官方模板,为后续要使用的模板完成日志配置,例如 code-interpreter-v1

建议开启模板日志

强烈建议为模板配置日志。日志对线上问题排查、沙箱启动失败诊断、命令执行异常分析都很重要。

四、配置环境变量

export E2B_API_KEY=e2b_xxx
export E2B_API_URL=https://api.cn-beijing.e2b.fc.aliyuncs.com
export E2B_DOMAIN=cn-beijing.e2b.fc.aliyuncs.com

如果使用 E2B CLI,当前服务中 E2B_ACCESS_TOKENE2B_API_KEY 使用同一个值:

export E2B_ACCESS_TOKEN=$E2B_API_KEY

五、SDK 示例

安装依赖:

python3 -m venv .venv
source .venv/bin/activate
pip install e2b-code-interpreter

创建 quickstart.py

import os
from e2b_code_interpreter import Sandbox


def require_env(name: str) -> str:
    value = os.environ.get(name, "").strip()
    if not value:
        raise RuntimeError(f"缺少环境变量: {name}")
    return value


api_key = require_env("E2B_API_KEY")

conn_opts = {
    "api_url": require_env("E2B_API_URL"),
    "domain": require_env("E2B_DOMAIN"),
}

template = "code-interpreter-v1"
sandbox = None

try:
    print("Creating sandbox...")
    sandbox = Sandbox.create(
        template=template,
        secure=False,
        api_key=api_key,
        **conn_opts,
    )

    result = sandbox.commands.run("ls -lh /")
    print("ls output:")
    print(result.stdout.strip())

    hello = sandbox.commands.run("python3 -c \"print('hello from sandbox')\"")
    print("python output:")
    print(hello.stdout.strip())
finally:
    if sandbox is not None:
        print("Closing sandbox...")
        sandbox.kill()

运行:

python quickstart.py

安装依赖:

npm init -y
npm install e2b @e2b/code-interpreter dotenv
npm install -D tsx typescript @types/node

创建 .env

E2B_API_KEY=e2b_xxx
E2B_API_URL=https://api.cn-beijing.e2b.fc.aliyuncs.com
E2B_DOMAIN=cn-beijing.e2b.fc.aliyuncs.com

创建 quickstart.ts

import 'dotenv/config';
import { Sandbox } from '@e2b/code-interpreter';

async function main() {
  const sbx = await Sandbox.create({
    apiKey: process.env.E2B_API_KEY,
    timeoutMs: 300_000,
  });

  try {
    console.log(`sandbox created: ${sbx.sandboxId}`);

    const result = await sbx.commands.run('ls -lh /');
    console.log('ls output:');
    console.log(result.stdout.trim());

    const hello = await sbx.commands.run("python3 -c \"print('hello from sandbox')\"");
    console.log('python output:');
    console.log(hello.stdout.trim());
  } finally {
    await sbx.kill();
    console.log('sandbox destroyed');
  }
}

main();

运行:

npx tsx quickstart.ts

如果能看到 / 目录列表和 hello from sandbox,说明 SDK、API Key、域名和内置模板都已经可用。

Python 与 TypeScript SDK 的主要差异

方面 Python SDK TypeScript SDK
包名 e2b / e2b-code-interpreter e2b / @e2b/code-interpreter
异步模式 同步调用 全异步(必须 await
命名风格 snake_casesandbox_id camelCasesandboxId
环境加载 dotenv + load_dotenv() dotenv/config 自动加载
超时参数 timeout(秒) timeoutMs(毫秒)
运行方式 python3 xx.py npx tsx xx.ts

六、E2B CLI 示例

确认环境变量已经设置:

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  Created at  Disk size MiB  names                buildStatus
Public  z736qq9k2qtazlr1u80z  base                      2     2048  5/29/2026          10240  base                 ready
Public  27y6ril28g82jzzxgqec  code-interpreter-v1       2     2048  5/29/2026          10240  code-interpreter-v1  ready

创建并连接沙箱:

e2b sandbox create code-interpreter-v1

进入沙箱终端后执行:

python3 -c 'print("Hello, World!")'
exit

退出终端后,CLI 会关闭终端连接。生产代码中仍建议显式销毁不再使用的沙箱。

七、常见问题

1. 提示未授权或无法创建资源

先确认 FC3.0 SLR 授权是否完成,再确认当前账号是否有函数计算和云沙箱相关权限。

2. 提示 API Key 无效

确认 E2B_API_KEY 没有多余空格,并且没有把控制台里被截断展示的值当成完整密钥使用。

3. CLI 能访问但 SDK 不能访问

确认 SDK 代码同时传入了 api_urldomain,并且值分别为:

https://api.cn-beijing.e2b.fc.aliyuncs.com
cn-beijing.e2b.fc.aliyuncs.com

4. 沙箱创建后命令执行失败

先运行基础命令定位问题:

sandbox.commands.run("pwd && whoami && python3 --version")

如果基础命令可用,再检查业务命令依赖是否已经包含在模板中。

5. 如何调整沙箱存活时间

创建沙箱时可以通过 timeout 设置初始存活时间。例如 Sandbox.create(timeout=60, ...) 表示这个沙箱初始存活时间为 60 秒;如果不传 timeout,默认值为 300 秒。

沙箱创建后也支持 E2B 官方 SDK 中的 sandbox.set_timeout() 续期行为。它会把沙箱的剩余存活时间重置为传入值,而不是在当前剩余时间上累加。例如沙箱还剩 120 秒时调用 sandbox.set_timeout(600),新的剩余存活时间是 600 秒,不是 720 秒。

任务完成后仍建议主动调用 sandbox.kill() 释放资源。