全部產品
Search
文件中心

Function Compute:E2B SDK(Java 與 Go)

更新時間:Aug 14, 2026

E2B 官方目前只提供 Python 和 TypeScript SDK。為了方便 Java 和 Go 開發人員接入雲沙箱,阿里雲Function Compute團隊在以下倉庫維護了相容 E2B 資料面協議的 SDK:

本文先說明兩個 SDK 共用的串連配置,再分別提供 Java 和 Go 快速入門。具體介面、參數名稱和預設值以對應倉庫的源碼和類型定義為準。

前置條件與通用串連配置

  • 已擁有阿里雲帳號,並具備Function Compute相關操作許可權。

  • 已在Function Compute控制台建立 API Key。

  • 已確認目標地區支援雲沙箱,並且本機網路可訪問該地區的服務端點。

通過環境變數傳入 API Key、API URL 和網域名稱,不要在代碼中寫入程式碼:

export E2B_API_KEY="<your-api-key>"
export E2B_API_URL="https://api.<region>.e2b.fc.aliyuncs.com"
export E2B_DOMAIN="<region>.e2b.fc.aliyuncs.com"

將 <region> 替換為雲沙箱所在地區。當前支援 cn-beijing、cn-shanghai、cn-hangzhou、cn-shenzhen、cn-hongkong、ap-southeast-1、us-east-1 和 us-west-1。API URL、網域名稱、模板和 Sandbox 必須屬於同一地區。

Java SDK

可用狀態與安裝方式

Java SDK 目前以源碼形式提供。版本 2.1.0 尚未發布到 Maven Central 或其他公用 Maven 倉庫,需要先複製倉庫並安裝到本地 Maven 倉庫:

git clone https://github.com/aliyun-fc/e2b-java-sdk.git
cd e2b-java-sdk
mvn clean install -DskipTests

Maven 專案添加以下依賴:

<dependency>
    <groupId>com.alibaba.serverless</groupId>
    <artifactId>e2b-java-sdk</artifactId>
    <version>2.1.0</version>
</dependency>

Gradle 專案需要先啟用本地 Maven 倉庫,再添加依賴:

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    implementation 'com.alibaba.serverless:e2b-java-sdk:2.1.0'
}

SDK 要求 Java 8 或更高版本,主要包如下:

包說明
dev.e2b.sdkSandbox 入口類。
dev.e2b.sdk.clientConnectionConfig 等串連配置。
dev.e2b.sdk.modelCommandResult 等資料模型。

建立並運行 Sandbox

import dev.e2b.sdk.Sandbox;
import dev.e2b.sdk.client.ConnectionConfig;
import dev.e2b.sdk.model.CommandResult;

public class Quickstart {
    public static void main(String[] args) throws Exception {
        ConnectionConfig config = ConnectionConfig.builder()
                .apiKey(System.getenv("E2B_API_KEY"))
                .apiUrl(System.getenv("E2B_API_URL"))
                .domain(System.getenv("E2B_DOMAIN"))
                .build();

        try (Sandbox sandbox = Sandbox.create("code-interpreter-v1", config)) {
            CommandResult result = sandbox.getCommands().run(
                    "python3 -c \"print('hello from sandbox')\""
            );
            System.out.println(result.getStdout().trim());
        }
    }
}

Sandbox 實現了 AutoCloseable。退出 try 塊時會調用 kill() 並釋放 Sandbox。如需更細粒度的生命週期控制,請顯式設定 Sandbox 逾時時間,並在任務完成後調用 sandbox.kill()。

Go SDK

可用狀態與安裝方式

Go SDK 目前以源碼形式提供,要求 Go 1.22 或更高版本。其 go.mod 仍聲明舊模組路徑 github.com/e2b-dev/e2b-go-sdk,但該路徑已無法擷取。請將 SDK 複製到 Go 專案的同級目錄,並將舊模組路徑替換為本地目錄。

以下命令假設 Go 專案位於 myapp/:

# 在包含 myapp/ 的目錄中執行。
git clone https://github.com/aliyun-fc/e2b-go-sdk.git
cd myapp
go mod init myapp  # 如果已有 go.mod,請跳過此命令。
go mod edit -replace=github.com/e2b-dev/e2b-go-sdk=../e2b-go-sdk

匯入時繼續使用舊模組路徑,使其與 SDK 當前的 go.mod 聲明一致:

import e2b "github.com/e2b-dev/e2b-go-sdk"

建立並運行 Sandbox

將以下樣本儲存為 main.go:

package main

import (
    "context"
    "fmt"
    "log"
    "os"
    "strings"
    "time"

    e2b "github.com/e2b-dev/e2b-go-sdk"
)

func main() {
    ctx := context.Background()

    client, err := e2b.NewClient(
        e2b.WithAPIKey(os.Getenv("E2B_API_KEY")),
        e2b.WithAPIURL(os.Getenv("E2B_API_URL")),
        e2b.WithDomain(os.Getenv("E2B_DOMAIN")),
    )
    if err != nil {
        log.Fatal(err)
    }

    sandbox, err := client.CreateSandbox(
        ctx,
        e2b.WithTemplate("code-interpreter-v1"),
        e2b.WithTimeout(900),
    )
    if err != nil {
        log.Fatal(err)
    }
    defer sandbox.Kill(context.Background())

    result, err := sandbox.Commands.Run(
        ctx,
        "python3 -c \"print('hello from sandbox')\"",
        e2b.WithCommandTimeout(60*time.Second),
    )
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(strings.TrimSpace(result.Stdout))
}

解析本地替換並運行樣本:

go mod tidy
go run .

defer sandbox.Kill(...) 會在函數退出時釋放 Sandbox。生產代碼應顯式設定逾時時間,並在任務完成後釋放 Sandbox。

相關文檔

  • 兩個 SDK 均實現 E2B 資料面協議,但介面和預設值與 Python、TypeScript SDK 不完全相同。接入前請查看對應 SDK 倉庫的版本說明。

  • 完整能力邊界參見 E2B SDK 相容 API 清單。