Aster文档
搜索 Aster 文档
ESC
产品
版本

输入关键词开始搜索。

    文档目录

    ASTER SANDBOX / 04

    Sandbox 接入与验证

    Rust SDK、构建边界、运行检查和故障验收。

    aster-box-sdk 提供类型化 Rust 客户端。默认实现直接调用 runtime 的状态存储与 socket 客户端,不启动 aster-box CLI。

    Rust SDK 快速开始

    use aster_box_sdk::Sandbox;
    
    # async fn example() -> Result<(), aster_box_sdk::ClientError> {
    let sandbox = Sandbox::create("python:3.12-alpine").await?;
    let result = sandbox
        .commands
        .run("python -c 'print(6 * 7)'")
        .await?;
    println!("{}", result.stdout);
    
    sandbox.files.write("/workspace/note.txt", "hello").await?;
    let text = sandbox.files.read_text("/workspace/note.txt").await?;
    assert_eq!(text, "hello");
    
    sandbox.kill().await?;
    # Ok(()) }
    

    Sandbox::create 默认选择 MicroVM,并使用长期保活命令维持 Sandbox。需要自定义初始进程时,使用 SandboxCreateOptions 设置 entrypoint 与 command。

    kill 组合停止与删除。只需要停止时,使用 stop。需要保留记录供后续检查时,不要在检查前调用 kill 或 remove。

    隔离与资源选项

    use aster_box_sdk::{ExecutionIsolation, Sandbox, SandboxCreateOptions};
    
    # async fn example() -> Result<(), aster_box_sdk::ClientError> {
    let sandbox = Sandbox::create_with_options(
        SandboxCreateOptions::new("python:3.12-alpine")
            .isolation(ExecutionIsolation::Sandbox)
            .cpus(2)
            .memory_mb(1024),
    )
    .await?;
    
    sandbox.kill().await?;
    # Ok(()) }
    

    ExecutionIsolation::Sandbox 显式选择共享内核后端。省略隔离选项时保留 MicroVM 默认。

    需要类型化镜像、卷、网络和快照管理时,使用 AsterBoxClient。需要创建后启动的原子组合时,使用 run_box。

    SDK 能力边界

    aster-box-sdk 的主要接口
    接口用途注意事项
    Sandbox命令、文件、日志、统计、事件与生命周期事件与观测绑定当前代际
    AsterBoxClient镜像、卷、网络、快照和低层管理默认不通过 CLI 执行生命周期命令
    ArtifactExportOptions限制导出大小并选择宿主目标单文件上限 8 MiB,目标不能已存在
    OperationId标识重启与资源更新操作结果未知前保留原 ID
    sdk_capabilities查询当前 runtime 支持的操作清单使用前检查,不按名称猜测支持

    stop、restart 和 remove 不是同一操作。暂停中的 Sandbox 支持日志、进程与事件读取。资源更新要求 Sandbox 正在运行。

    SDK 导出入口见 Sandbox exports L26 ↗。

    构建边界

    根工作区包含 aster-sandbox、aster-box-core 和 aster-box-runtime。根目录可以构建这些包:

    cargo build --locked -p aster-sandbox
    cargo build --locked -p aster-box-runtime
    

    aster-box-cli 与 aster-box-sdk 位于 crates/box 的独立工作区。完整清单保留为 crates/box/Cargo.toml.box-workspace。不要从根目录用不存在的包成员关系推断 CLI 构建方式。

    使用已安装的 CLI 时,先检查版本与后端:

    aster-box version
    aster-box info
    

    验收清单

    aster-sandbox

    1. 运行 aster-sandbox probe。
    2. 运行 aster-sandbox capabilities。
    3. 验证默认网络拒绝与工作区外写入拒绝。
    4. 验证超时终止完整进程树。
    5. 验证输出截断和退出状态。

    aster-box

    1. 运行 aster-box info,核对虚拟化后端。
    2. 创建一次性 Sandbox,核对标准输出和退出状态。
    3. 启动后台 Sandbox,核对 ps、exec、logs 和 stats。
    4. 停止并删除 Sandbox,核对记录不再运行。
    5. 测试不支持的隔离、网络或挂载配置,确认在执行前拒绝。
    6. 测试超限导出与已存在的目标文件,确认导出被拒绝且原文件不变。

    实现依据