云沙箱默认通过公网访问外部资源。当沙箱需要访问 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。
该文章对您有帮助吗?