You need to enable JavaScript to run this app.
文档中心
函数服务

函数服务

复制全文
下载 pdf
AI 应用
快速部署 SandboxFusion 代码沙箱
复制全文
下载 pdf
快速部署 SandboxFusion 代码沙箱
本文介绍基于开源 SandboxFusion 项目,使用火山引擎函数服务(veFaaS)快速部署代码沙箱服务,满足在沙箱中运行运行代码的需求。​
背景信息​
SandboxFusion 是一款基于 HTTP 协议的代码沙箱服务,支持运行 23 种编程语言,依托 namespace 资源隔离与 cgroup 资源管控技术,实现轻量级安全隔离,以及适配多样化设备的灵活部署特性,可满足从边缘节点到云端服务器的多场景需求。​
前提条件​
已开通火山引擎相关产品:​
操作步骤​
  1. 在顶部导航栏,选择目标地域。​
  1. 左侧导航栏选择 云沙箱 > 沙箱应用,单击 创建沙箱应用。​
  1. 在 创建沙箱应用 页面配置参数。部署 SandboxFusion 需要重点注意以下参数,其余参数可保持默认,具体的参数说明参见 沙箱应用。​
  • ​
    参数​
    说明​
    基础配置​
    ​
    名称​
    自定义沙箱应用名称。同一账号下沙箱应用名称不可重复。创建成功后名称不支持修改。​
    沙箱镜像​
    ​
    容器镜像​
    选择 公共镜像,在右侧 镜像地址 搜索框,通过 sandbox-fusion搜索目标镜像。按需选择镜像版本。​
    • Python 语言镜像:镜像 Tag 为 vefaas-latest。​
    • 多语言镜像:镜像 Tag 为 vefaas-python。​
    启动命令​
    保持默认配置 bash /root/sandbox/scripts/run.sh。​
    监听端口​
    保持默认设置为 8000。​
    网关路由配置​
    ​
    域名类型​
    沙箱应用的访问域名类型:​
    • 统一域名:沙箱应用中的所有沙箱实例共享一个访问域名。通过 Header 为x-faas-instance-name,或 Query 为faasInstanceName请求指定沙箱实例。​
    • 泛域名:【邀测·申请试用】通过泛域名为每个沙箱实例提供独立的访问入口。​
    沙箱实例相关说明,请参见 沙箱实例。​
    网关实例​
    选择 API 网关实例。沙箱应用将以 API 网关作为流量入口。​
    网关服务​
    选择 API 网关实例对应的服务。​
    路由名称​
    自定义路由名称。路由名称创建成功后不支持修改。​
    Path​
    设置允许访问沙箱应用的请求路径。仅支持前缀匹配,路径必须以/开头。​
    ​
  1. 创建成功后,在沙箱应用页面右上角单击 发布,完成 SandboxFusion 沙箱服务的部署。​
验证结果​
完成发布后,支持通过 SandboxFusion 的公网地址,验证应用部署的效果。​
说明​
登录已创建的应用,在 基本信息 > 网关路由配置 > 配置信息 > 公网 即可获取应用的公网访问地址。​
通过 API 调用 SandboxFusion 服务​
通过 Curl 命令调用 API,体验 SandboxFusion 服务的代码如下。​
​
curl 'https://****.apigateway-cn-beijing.volceapi.com/run_code' \​
-H 'accept: application/json, text/plain, */*' \​
-H 'accept-language: zh-CN,zh;q=0.9' \​
-H 'content-type: application/json' \​
--data '{​
"code": "ls",​
"language": "bash",​
"files":{}​
}'​
​
说明​
  • 将https://****.apigateway-cn-beijing.volceapi.com替换为 SandboxFusion 服务的 公网访问地址。​
  • 根据实际情况,替换data下的参数值,相关参数说明和示例,请参见开源文档 Sandbox Fusion。​
通过浏览器访问 SandboxFusion 服务​
  1. 在浏览器中输入 公网访问地址 并访问。​
  1. 单击 Playground 页签,选择 Sandbox。​
  1. 在 Code 文本框中输入待运行代码段并选择对应编程语言,单击 Submit 提交代码运行请求。​
  1. 等待运行完成后,查看结果输出。​
通过 veFaaS 函数请求 SandboxFusion 服务​
  1. 在 函数服务控制台 顶部导航栏选择 华北 2(北京) 地域后,创建 Python 运行时的 事件函数。详细说明,请参见 事件函数。​
  1. 函数创建成功后,在函数详情页面的 代码 页签将 公网访问地址 编辑到代码中。​
  1. 保存代码更新并发布函数。详细操作,请参见 发布函数。​
  1. 进行在线测试。详细操作,请参见 测试函数。​
  • 请求参数示例如下:​
  • ​
    "data": {​
    "code": "print(\"Hello, SandboxFusion!\")",​
    "language": "python"​
    },​
    ​
  • 示例代码如下所示。针对不同语言的 run_code 接口调用参数,请参考 Run Code。​
  • ​
    import json​
    import http.client​
    import re​
    ​
    def handler(event, context):​
    print("received new request\n")​
    ​
    conn = http.client.HTTPSConnection("******.apigateway-cn-beijing.volceapi.com")​
    headers = {​
    'Content-Type': 'application/json',​
    'Accept': 'application/json'​
    }​
    ​
    # 获取请求数据​
    reqBody = event["body"]​
    reqData = json.loads(reqBody)​
    code_str = reqData.get("code")​
    language = reqData.get("language")​
    ​
    # 默认代码​
    if not code_str:​
    code_str = "def reverse_string(s):\n return s[::-1]\ninput_string = \"Hello, World!\"\nreversed_string = reverse_string(input_string)\nprint(\"逆序后的字符串:\", reversed_string)"​
    # 默认语言​
    if not language:​
    language = "python"​
    ​
    # 调用 sandbox run_code 接口运行代码​
    payload = json.dumps({​
    "compile_timeout": 30,​
    "run_timeout": 30,​
    "code": code_str,​
    "language": language,​
    "files": {}​
    })​
    conn.request("POST", "/run_code", payload, headers)​
    res = conn.getresponse()​
    data = res.read()​
    response = data.decode("utf-8")​
    ​
    # 提取 result​
    run_result = json.loads(response).get("run_result")​
    ​
    # 返回结果​
    result = {​
    'statusCode': 200,​
    'headers': {​
    'Content-Type': 'application/json'​
    },​
    'body': json.dumps({​
    'message': {​
    "result": run_result,​
    "language": language,​
    "code": code_str​
    }​
    })​
    }​
    return result​
    ​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
最近更新时间:2025.12.30 19:40:59
这个页面对您有帮助吗?
有用
有用
无用
无用