概述
使用 SDK 构建和部署沙箱模板到云端。
注意: 模板别名 (alias) 是全局唯一的,请使用业务前缀来确保唯一性。
构建并等待完成
build() 方法会构建模板并等待构建过程完成,返回包含模板 ID 和构建 ID 的信息。
import { Template } from '@e2b/code-interpreter'
async function main() {
const template = Template().fromPythonImage('3')
const buildInfo = await Template.build(template, {
alias: 'my-template',
cpuCount: 2,
memoryMB: 2048,
skipCache: false,
})
// 返回: { alias, templateId, buildId }
console.log('Template ID:', buildInfo.templateId)
}
main()
后台构建
buildInBackground() 方法启动构建但不等待完成,适合需要稍后检查状态的场景。
import { Template } from '@e2b/code-interpreter'
async function main() {
const template = Template().fromPythonImage('3')
const buildInfo = await Template.buildInBackground(template, {
alias: 'my-template',
cpuCount: 2,
memoryMB: 2048,
})
// 立即返回: { alias, templateId, buildId }
console.log('Build started:', buildInfo.buildId)
}
main()
检查构建状态
getBuildStatus() 方法用于检查使用 buildInBackground() 启动的构建状态。
import { Template } from '@e2b/code-interpreter'
async function main() {
// 假设 buildInfo 是从 buildInBackground() 获取的
const buildInfo = { templateId: 'xxx', buildId: 'yyy' }
const status = await Template.getBuildStatus(buildInfo, {
logsOffset: 0,
})
// 返回: { status: 'building' | 'ready' | 'error', logEntries: [...] }
console.log('Status:', status.status)
}
main()
检查别名是否存在
使用 aliasExists() 方法检查模板别名是否已存在,避免重复构建。
import { Template } from '@e2b/code-interpreter'
async function main() {
// 检查别名是否存在
const exists = await Template.aliasExists('my-template')
if (!exists) {
const template = Template().fromPythonImage('3')
await Template.build(template, { alias: 'my-template' })
}
}
main()
示例:后台构建状态轮询
以下示例演示如何使用后台构建并轮询状态直到完成。
import { Template } from '@e2b/code-interpreter'
async function main() {
const template = Template().fromPythonImage('3')
const buildInfo = await Template.buildInBackground(template, {
alias: 'my-template',
cpuCount: 2,
memoryMB: 2048,
})
let logsOffset = 0
let status = 'building'
while (status === 'building') {
const buildStatus = await Template.getBuildStatus(buildInfo, {
logsOffset,
})
logsOffset += buildStatus.logEntries.length
status = buildStatus.status
buildStatus.logEntries.forEach(
(logEntry) => console.log(logEntry.toString())
)
await new Promise(resolve => setTimeout(resolve, 2000))
}
if (status === 'ready') {
console.log('Build completed successfully')
} else {
console.error('Build failed')
}
}
main()
文档反馈
(如有产品使用问题,请 提交工单)