@computesdk/microsandbox (英语)
计算SDK的Microsandbox提供商. 它运行相同的沙盒API来对抗被硬件同化的本地微VM或微沙盒云.
所需资源
- 22号节点或更新
- 云后端:微软箱云访问和API密钥
- 本地后端: 苹果硅上的 macOS, 有 KVM 的 Linux, 或 Windows 有 Windows Hypervisor 平台的 Windows
安装
npm install computesdk @computesdk/microsandbox
云快开始
云是默认后端. 直接传递一个 API 密钥或省略该密钥以使用 SDK 的微软盒 MSB_API_KEY, (中文(简体) ), MSB_PROFILE,或主动曝光分辨率:
import { compute } from 'computesdk';
import { microsandbox } from '@computesdk/microsandbox';
compute.setConfig({
provider: microsandbox({
apiKey: process.env.MSB_API_KEY,
image: 'node:22',
}),
});
const sandbox = await compute.instances.create();
const result = await sandbox.runCommand('node --version');
console.log(result.stdout);
await sandbox.destroy();
本地快速启动
明确选择本地后端, 当沙盒在呼叫机上运行时 。 本地模式不需要账户或 API 密钥 :
import { compute } from 'computesdk';
import { microsandbox } from '@computesdk/microsandbox';
compute.setConfig({
provider: microsandbox({
backend: 'local',
image: 'node:22',
ports: [{ host: 3000, guest: 3000 }],
}),
});
const sandbox = await compute.instances.create();
await sandbox.filesystem.writeFile('/tmp/hello.js', 'console.log("hello")');
console.log((await sandbox.runCommand('node /tmp/hello.js')).stdout);
await sandbox.destroy();
通话 microsandbox() 没有配置则通过微软盒SDK的标准环境和活性可视分辨率使用云. 如果没有云证书解, 提供者报告如何配置云或选择加入 backend: 'local'它从不默默地回到当地.
酌情使用命名的云配置文件而不是 API 密钥 :
const provider = microsandbox({ profile: 'production' });
配置
interface MicrosandboxConfig {
backend?: 'cloud' | 'local'; // Defaults to cloud
apiKey?: string; // Falls back to MSB_API_KEY
apiUrl?: string; // Optional endpoint override; requires apiKey
profile?: string; // Named cloud profile; mutually exclusive with apiKey/apiUrl
image?: string;
cpus?: number;
memoryMib?: number;
rootDiskMib?: number;
ephemeral?: boolean; // Delete on stop; defaults to true
workdir?: string;
namePrefix?: string;
ports?: Array<number | { host: number; guest: number; bind?: string }>;
timeout?: number; // Idle and command timeout in milliseconds; defaults to 900_000 (15 minutes)
pullPolicy?: 'always' | 'if-missing' | 'never';
networkEnabled?: boolean;
}
单放箱 image, (中文(简体) ), templateId, (中文(简体) ), snapshotId, (中文(简体) ), cpus, (中文(简体) ), vcpus, (中文(简体) ), memory, (中文(简体) ), memoryMb, (中文(简体) ), memoryMiB, (中文(简体) ), memoryMib, (中文(简体) ), memMiB, (中文(简体) ), rootDiskMib, (中文(简体) ), ephemeral, (中文(简体) ), timeout, (中文(简体) ), name, (中文(简体) ), envs, (中文(简体) ), metadata,以及 ports 选项可酌情推翻或扩展提供者的默认.
后端支持
业务同时使用选定的全过程后端运行. 在服务商运行时不要更改本地 SDK 默认后端 .
| 方法 | 当地 | 云头 |
|---|---|---|
create, (中文(简体) ), getById, (中文(简体) ), list, (中文(简体) ), destroy | 对 | 对 |
runCommand 和活输出回调 | 对 | 对 |
filesystem | 对 | 对 |
getInfo | 对 | 对 |
getUrl | 是, 对于创建前已声明的端口 | 目前没有 |
snapshot | 是, 磁盘状态 | 目前没有 |
本地快照停止了沙盒,捕获其可写取的根盘并重新启动. 该磁盘上的文件在恢复后幸存, 但 tmpfs 路径例如 /tmp 和运行的流程不被捕获。 Microsandbox 云目前不支持已发布的端口或磁盘快照,因此这些方法在云上返回明显不支持的错误.
许可证
麻省理工学院
沙盒默认为麻黄,停放时被删除. 他们的默认闲置超时为15分钟,通过本地 SDK 配置 idleTimeout(900)设置 ephemeral: false 在停止后保留沙盒,并使用 timeout (milliseconds)来覆盖闲置的超时和默认的命令超时. 适配器没有设定最长寿命.
每个进程使用一个后端配置. 同时期操作共享该配置;第一个成功的后端选择保留在进程的寿命. 后来有不同资质,端点,配置文件或后端选择的请求在更改SDK后端前被否决. 各地使用相同的显式配置,或始终使用SDK环境/显式分辨率.