Deploy HTML pages, static directories, or custom edge functions to Alibaba Cloud ESA edge nodes. Manage Edge KV for distributed key-value storage. Use when deploying web pages, static sites, frontend builds, serverless edge functions, or edge data storage to ESA Functions & Pages.
Category: service
Deploy to Alibaba Cloud ESA edge nodes via JavaScript SDK. Provides free global CDN acceleration and edge security protection, enabling your static assets to be served from the nearest edge node for improved performance and security.
| Pattern | Use Case | Code Type | Size Limit |
|---|---|---|---|
| HTML Page | Quick prototypes, single pages |
| Auto-wrapped JS |
| < 5MB (ER limit) |
| Static Directory | Frontend builds (React/Vue/etc.) | Assets | < 25MB per file |
| Custom Function | API endpoints, dynamic logic | Custom JS | < 5MB |
Important: Enable ESA Functions & Pages first at ESA Console before using this skill, or use
OpenErServiceAPI to enable programmatically.
npm install @alicloud/[email protected] @alicloud/[email protected] @alicloud/[email protected]
If the user hasn't enabled the Edge Routine service, call OpenErService to enable it:
// Check if service is enabled
const status = await client.getErService(
new $Esa20240910.GetErServiceRequest({}),
);
if (status.body?.status !== "online") {
// Enable the service
await client.openErService(new $Esa20240910.OpenErServiceRequest({}));
}
import Esa20240910, * as $Esa20240910 from "@alicloud/esa20240910";
import * as $OpenApi from "@alicloud/openapi-client";
import Credential from "@alicloud/credentials";
function createClient() {
const credential = new Credential();
const config = new $OpenApi.Config({
credential,
endpoint: "esa.cn-hangzhou.aliyuncs.com",
userAgent: "AlibabaCloud-Agent-Skills",
});
return new Esa20240910(config);
}
All deployments follow the same pattern:
1. CreateRoutine(name) → Create function (skip if exists)
2. Upload code/assets to OSS → Via staging upload or assets API
3. Commit & Publish → Deploy to staging → production
4. GetRoutine(name) → Get access URL (defaultRelatedRecord)
CreateRoutine → GetRoutineStagingCodeUploadInfo → Upload wrapped JS
→ CommitRoutineStagingCode → PublishRoutineCodeVersion(staging/production)
CreateRoutine → CreateRoutineWithAssetsCodeVersion → Upload zip
→ Poll GetRoutineCodeVersionInfo → CreateRoutineCodeDeployment(staging/production)
All deployments ultimately run as Edge Routine code:
export default {
async fetch(request) {
return new Response("Hello", {
headers: { "content-type": "text/html;charset=UTF-8" },
});
},
};
For HTML pages, your HTML is automatically wrapped into this format.
| Type | Structure |
|---|---|
| JS_ONLY | routine/index.js |
| ASSETS_ONLY | assets/* (static files) |
| JS_AND_ASSETS | routine/index.js + assets/* |
OpenErService, GetErServiceCreateRoutine, GetRoutine, ListUserRoutinesGetRoutineStagingCodeUploadInfo, CommitRoutineStagingCode, PublishRoutineCodeVersionCreateRoutineWithAssetsCodeVersion, GetRoutineCodeVersionInfo, CreateRoutineCodeDeploymentCreateRoutineRoute, ListRoutineRoutesCreateKvNamespace, GetKvNamespace, GetKvAccountPutKv, GetKv, ListKvsBatchPutKvPutKvWithHighCapacity, BatchPutKvWithHighCapacityPre-made scripts for common operations. Install dependencies first:
npm install @alicloud/[email protected] @alicloud/[email protected] @alicloud/[email protected] @alicloud/[email protected] [email protected]
| Script | Usage | Description |
|---|---|---|
deploy-html.mjs | node scripts/deploy-html.mjs <name> <html-file> | Deploy HTML page |
deploy-folder.mjs | node scripts/deploy-folder.mjs <name> <folder> | Deploy static directory |
deploy-function.mjs | node scripts/deploy-function.mjs <name> <code-file> | Deploy custom function |
manage.mjs | node scripts/manage.mjs list|get | Manage routines |
Examples:
# Deploy HTML page
node scripts/deploy-html.mjs my-page index.html
# Deploy React/Vue build
node scripts/deploy-folder.mjs my-app ./dist
# Deploy custom function
node scripts/deploy-function.mjs my-api handler.js
# List all routines
node scripts/manage.mjs list
# Get routine details
node scripts/manage.mjs get my-page
defaultRelatedRecord from GetRoutineThe SDK uses Alibaba Cloud default credential chain. No explicit AK/SK configuration needed.
Note: ESA endpoint is fixed (
esa.cn-hangzhou.aliyuncs.com), no region needed.
references/pages-api.mdreferences/kv-api.md