边缘开发者平台
  • Makers
    • 产品简介
    • 快速开始
      • Agent 开发
      • 导入 Git 仓库
      • 从模板开始
      • 直接上传
      • 从 AI 开始
    • 框架指南
      • Agent
      • 前端
        • Vite
        • React
        • Vue
        • Hugo
        • 其他框架
      • 后端
      • 全栈
        • Next.js
        • Nuxt
        • Astro
        • React Router
        • SvelteKit
        • TanStack Start
        • Vike
      • 自定义 404 页面
    • 项目指南
      • 项目管理
      • edgeone.json
      • 缓存配置
      • 构建输出配置
      • 域名管理
        • 概览
        • 自定义域名
        • 配置 HTTPS 证书
          • 概览
          • 申请免费证书
          • 使用 SSL 托管证书
        • 配置 DNS 的 CNAME 记录
      • 错误码
    • 构建指南
    • 部署指南
      • 概览
      • 触发部署
      • 管理部署
      • 部署按钮
      • 使用 Github Action
      • 使用 Gitlab CI/CD
      • 使用 CNB 插件
      • 使用 IDE 插件
      • 使用 CodeBuddy IDE
    • Makers for Platforms
      • 平台与多租户
      • Vibe Coding 解决方案
      • 模板示例
        • Vibe Coding 通用模板
        • Vibe Coding 平台模板
    • 可观测性
      • 概览
      • 指标分析
      • 日志分析
    • Functions
      • 概览
      • Edge Functions
      • Cloud Functions
        • 概览
        • Node.js
        • Python
        • Go
    • Agents
      • 概览
      • 快速开始
      • 会话管理
      • 可观测
      • 沙箱工具
        • 概览
        • Agent 框架使用
        • 沙箱原子 API
        • 网络搜索工具
      • Agent 应用鉴权
    • Models
      • 概览
      • 模型与厂商
        • 概览
        • 使用朱雀模型
        • 使用 Jev 模型
        • 使用厂商密钥
          • OpenAI
          • Anthropic
          • Google AI Studio
          • DeepSeek
          • MiniMax
          • 混元
          • 智谱
          • 月之暗面
      • 常见问题
    • 存储
      • 概览
      • KV
      • Blob
    • 中间件
    • AI 原生开发
      • Skills
      • MCP
      • Plugin
    • Copilot
      • 概览
      • 快速开始
    • API Token
    • EdgeOne CLI
    • Makers SDK
      • 概览
      • 示例
        • 通过 SDK 部署
        • 通过 CLI 部署
        • 项目管理
      • 项目
        • 项目操作
        • 环境变量
      • 部署
    • 消息通知
    • 集成指南
      • AI
        • Makers Models 集成
        • 图片大模型集成
      • 数据库
        • Supabase 集成
        • Pages KV 集成
      • 电商
        • Shopify 集成
        • WooCommerce 集成
      • 支付
        • Stripe 集成
        • Paddle 集成
      • CMS
        • WordPress 集成
        • Contentful 集成
        • Sanity 集成
        • Payload 集成
      • 身份验证
        • Supabase 集成
        • Clerk 集成
      • IM
        • 概览
        • 企业微信
        • 飞书
        • 钉钉
        • Telegram
        • Slack
        • Discord
    • 最佳实践
      • 为网站添加 AI 对话助手
      • AI 对话式部署:使用 Skill 一句话部署项目
      • 使用 Makers Agents 快速搭建 Agent 应用
      • 使用 Shopify 搭建电商平台
      • 使用 Supabase 和 Stripe 搭建 SaaS 站点
      • 如何快速搭建公司品牌站点
      • 如何快速搭建博客站点
      • 在 WorkBuddy 中通过免登录部署快速上线
    • 迁移指南
      • 从 Vercel 迁移至 EdgeOne Makers
      • 从 Cloudflare Pages 迁移至 EdgeOne Makers
      • 从 Netlify 迁移至 EdgeOne Makers
    • 排障指南
    • 常见问题
    • 限制与配额
    • 价格与套餐
    • 联系我们
    • 产品动态

通过 SDK 部署

通过 API Token 进行部署

通过 Makers 的 API Token 创建项目并部署制品。artifact 可为 files、directory 或 archive,本示例使用 files。deploy 调用成功后立即返回 deploymentId、projectId 和 env。
Typescript
Python
import { Makers } from "@edgeone/makers-sdk";

const makers = new Makers({
token: process.env.MAKERS_API_TOKEN,
region: "china",
});

async function createDeployment() {
try {
const { projectId } = await makers.projects.create({
name: "my-site",
});

const deployment = await makers.deployments.deploy({
projectId,
artifact: { files: { "index.html": "<h1>Hello</h1>" } },
});

console.log(
`Deployment created: ${deployment.deploymentId} env ${deployment.env}`,
);
} catch (error) {
console.error(
error instanceof Error ? `Error: ${error.message}` : String(error),
);
}
}

createDeployment();
import os
from makers_sdk import Makers, MakersError

makers = Makers(
token=os.environ["MAKERS_API_TOKEN"],
region="china",
)

def create_deployment():
try:
created = makers.projects.create(name="my-site")


deployment = makers.deployments.deploy(
project_id=created["project_id"],
artifact={"files": {"index.html": "<h1>Hello</h1>"}},
)


print(
f"Deployment created: {deployment['deployment_id']} "
f"env {deployment['env']}"
)
except MakersError as error:
print(f"Error: {error}")

create_deployment()

通过租户 Token 进行部署

在需要隔离平台级凭证,降低 Makers API Token 泄漏风险的部署场景中,可签发租户 Token 完成部署。
Typescript
Python
import { Makers } from "@edgeone/makers-sdk";

const platform = new Makers({
token: process.env.MAKERS_API_TOKEN,
region: "china",
});

const { token, tokenId, expired } = await platform.tokens.create({
tenantId: "user-open-id",
name: "user-open-id",
expiresIn: 86400,
});

const user = new Makers({
token,
region: "china",
});

const { projectId } = await user.projects.create({ name: "my-site" });
await user.deployments.deploy({
projectId,
artifact: { files: { "index.html": "<h1>Hello</h1>" } },
});
import os

from makers_sdk import Makers

platform = Makers(
token=os.environ["MAKERS_API_TOKEN"],
region="china",
)

created = platform.tokens.create(
tenant_id="user-open-id",
name="user-open-id",
expires_in=86400,
)

user = Makers(
token=created["token"],
region="china",
)

project = user.projects.create(name="my-site")
user.deployments.deploy(
project_id=project["project_id"],
artifact={"files": {"index.html": "<h1>Hello</h1>"}},
)

部署并等待

deploy 之后调用 wait,部署成功后返回预览链接 previewUrl,可在有效期内用浏览器打开。
Typescript
Python
import { Makers } from "@edgeone/makers-sdk";

const makers = new Makers({
token: process.env.MAKERS_API_TOKEN,
region: "china",
});

async function deployAndWait() {
try {
const { projectId } = await makers.projects.create({
name: "my-site",
});

const deployment = await makers.deployments.deploy({
projectId,
artifact: { files: { "index.html": "<h1>Hello</h1>" } },
});

const result = await makers.deployments.wait({
projectId,
deploymentId: deployment.deploymentId,
});

if (result.status === "Success") {
console.log(result.previewUrl);
} else {
console.error(result.status);
}
} catch (error) {
console.error(
error instanceof Error ? `Error: ${error.message}` : String(error),
);
}
}

deployAndWait();
import os
from makers_sdk import Makers, MakersError

makers = Makers(
token=os.environ["MAKERS_API_TOKEN"],
region="china",
)

def deploy_and_wait():
try:
created = makers.projects.create(name="my-site")
project_id = created["project_id"]

deployment = makers.deployments.deploy(
project_id=project_id,
artifact={"files": {"index.html": "<h1>Hello</h1>"}},
)

result = makers.deployments.wait(
project_id=project_id,
deployment_id=deployment["deployment_id"],
)

if result.get("status") == "Success":
print(result.get("preview_url"))
else:
print(result.get("status"))
except MakersError as error:
print(f"Error: {error}")

deploy_and_wait()
更多部署方法可参考 部署。