运行时依赖
安装命令
点击复制技能文档
类别:服务 ESA 函数和页面 — 边缘部署和 KV 存储 通过 JavaScript SDK 将应用部署到阿里云 ESA 边缘节点。提供免费的全局 CDN 加速和边缘安全保护,允许您的静态资源从最近的边缘节点提供服务,以提高性能和安全性。
函数和页面 — 部署边缘函数和静态内容(相同的 API,Pages 是简化的模式) 边缘 KV — 可从边缘函数访问的分布式键值存储 免费 CDN — 全球边缘节点加速,静态资源从最近的位置提供服务 安全保护 — 内置 DDoS 保护、WAF 和其他边缘安全功能
三个部署模式 模式 使用场景 代码类型 大小限制 HTML 页面 快速原型、单页 自动包装的 JS < 5MB(ER 限制) 静态目录 前端构建(React/Vue 等) 资产 < 25MB 每文件 自定义函数 API 端点、动态逻辑 自定义 JS < 5MB
先决条件 重要:在使用此技能之前,请为您的 RAM 用户/角色授予 AliyunESAFullAccess 策略。 在 ESA 控制台中启用 ESA 函数和页面,或者使用 OpenErService API 以编程方式启用。 npm 安装 @alicloud/esa20240910@2.43.0 @alicloud/openapi-client@0.4.15 @alicloud/credentials@2.4.4 通过 API 启用边缘例行服务 在进行任何部署或 KV 操作之前,您必须调用 GetErService 来检查边缘例行服务是否已启用。 请勿使用其他方法(例如尝试部署并捕获错误、检查控制台 UI 或假设服务已启用)来确定服务可用性 — GetErService 是唯一的权威检查。
// 检查服务是否启用 — 这是唯一有效的验证方式 const status = await client.getErService( new $Esa20240910.GetErServiceRequest({}), ); if (status.body?.status !== "online") { // 启用服务 await client.openErService(new $Esa20240910.OpenErServiceRequest({})); // 启用后重新检查状态以确认 const recheck = await client.getErService( new $Esa20240910.GetErServiceRequest({}), ); if (recheck.body?.status !== "online") { throw new Error("无法启用边缘例行服务。请检查您的帐户权限。"); } }
SDK 快速入门 import Esa20240910, as $Esa20240910 from "@alicloud/esa20240910"; import as $OpenApi from "@alicloud/openapi-client"; import Credential from "@alicloud/credentials";
函数 createClient() { const credential = new Credential.default(); const config = new $OpenApi.Config({ credential, endpoint: "esa.cn-hangzhou.aliyuncs.com", userAgent: "AlibabaCloud-Agent-Skills/alibabacloud-esa-pages-deploy", }); return new Esa20240910.default(config); }
统一部署流程 所有部署遵循相同的模式:
- CreateRoutine(name) → 创建函数
- 上传代码/资产到 OSS → 通过暂存上传或资产 API
- 提交和发布 → 部署到生产环境
- GetRoutine(name) → 获取访问 URL(默认相关记录)
- GetRoutineAccessToken(name) → 获取访问令牌并将其追加到 URL(令牌有效期为 1 小时)
CreateRoutine 的严格错误处理: 调用 CreateRoutine 后,您必须检查 HTTP 状态代码和响应体错误代码。 只有两种结果允许流程继续:(1)成功创建(HTTP 200),或(2)HTTP 400 与错误代码 RoutineNameAlreadyExists(将其视为成功,跳过到步骤 2)。 对于所有其他错误(其他 400 代码,5xx,网络故障),您必须立即中止整个部署流程并打印完整的错误信息。 严格禁止在未确认例行程序创建成功的情况下继续上传或发布步骤。
401 访问被拒绝: 如果访问部署 URL 返回 HTTP 401,您必须调用 GetRoutineAccessToken 来获取有效令牌并将其追加到 URL 中。 请勿尝试其他身份验证方法(例如自定义标头、cookie 或基本身份验证)。 GetRoutineAccessToken 是授权 URL 访问的唯一方法。
HTML 页面流程 CreateRoutine → GetRoutineStagingCodeUploadInfo → 上传包装的 JS → CommitRoutineStagingCode → PublishRoutineCodeVersion(暂存/生产)
静态目录流程 强制性预部署验证: 在调用 deploy-folder.mjs 或执行静态目录流程之前,您必须验证目标目录存在且包含...