VPC 网络配置

更新时间:
复制 MD 格式

云沙箱默认通过公网访问外部资源。当沙箱需要访问 VPC 内的私有资源(如 RDS、Redis、内网 API)时,您可以通过 SDK metadata 配置 VPC 网络,使沙箱能够连接 VPC 内的目标资源。

代码示例

运行前,先在终端配置环境变量(将 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"

沙箱需要访问 VPC 内资源,在 metadata 中传入 VPC 配置。

Python

import json

from e2b import Sandbox


vpc_config = {
    "vpcId": "vpc-xxxxxxxx",
    "securityGroupId": "sg-xxxxxxxx",
    "vSwitchIds": ["vsw-xxxxxxxx"],
}

sandbox = None
try:
    sandbox = Sandbox.create(
        api_key=E2B_API_KEY,
        timeout=300,
        metadata={
            "fc.sandbox.network.vpc": json.dumps(vpc_config),
        },
        **E2B_CONN_OPTS,
    )

    result = sandbox.commands.run("ip route && echo 'VPC config applied'")
    print(result.stdout)
finally:
    if sandbox is not None:
        sandbox.kill()

TypeScript

import 'dotenv/config';
import { Sandbox } from 'e2b';

const vpcConfig = {
  vpcId: 'vpc-xxxxxxxx',
  securityGroupId: 'sg-xxxxxxxx',
  vSwitchIds: ['vsw-xxxxxxxx'],
};

async function main() {
  const sbx = await Sandbox.create({
    apiKey: process.env.E2B_API_KEY,
    timeoutMs: 300_000,
    metadata: {
      'fc.sandbox.network.vpc': JSON.stringify(vpcConfig),
    },
  });

  try {
    const result = await sbx.commands.run("ip route && echo 'VPC config applied'");
    console.log(result.stdout);
  } finally {
    await sbx.kill();
  }
}

main();

注意事项

  • VPC、交换机、安全组应位于沙箱服务支持的地域。

  • 安全组需要允许沙箱访问目标服务端口。

  • 如果结合 NAS,一般必须同时配置 VPC。