用于操作阿里云 ESA EdgeRoutine(边缘函数) 的 CLI,支持快速创建边缘函数、本地调试、版本发布与部署、触发器管理。
简体中文 | English
注意: ESA CLI 处于公测阶段,如果您在使用中遇到任何问题,或者有任何建议,请随时提交 issue 或 pull request。
我们正在积极改进,并欢迎任何反馈。感谢您的理解与支持!
使用npm安装并运行CLI命令:
$ npm install esa-cli -g # 全局安装
$ esa -v # 查看版本
& esa init
初始化命令有完整的流程引导,根据提示输入项目名称、选择模板即可。
本地调试功能是 CLI 的核心,提供了比阿里云 ESA 控制台更便捷的调试体验。
& cd <Project Name>
& esa dev [options]
在EdgeRoutine 项目中,入口文件为 src/index.js
,基本结构如下:
const html = `<!DOCTYPE html>
<body>
<h1>Hello World!</h1>
</body>`;
async function handleRequest(request) {
return new Response(html, {
headers: {
'content-type': 'text/html;charset=UTF-8'
}
});
}
export default {
async fetch(event) {
return event.respondWith(handleRequest(event));
}
};
更多 EdgeRoutine 的 API 与语法,请参考API文档
执行 esa dev
后,会自动打包入口文件,并启动本地调试服务,界面样式如下:
- 在界面上按
b
即可在浏览器中打开调试页面。 - 在界面上按
d
可以查看调试引导。Chrome 不允许命令行打开调试页面。 - 在 Chrome 浏览器中打开
Chrome://inspect#devices
页面,可以看到一个运行的Remote Target
,点击下面的inspect
即可查看 console 信息。注意,EdgeRoutine 的代码为服务端代码,所以预览页面的控制台并不会输出入口文件中的console
,只能通过inspect
调试。 - 在界面上按
c
可以清空面板。 - 在界面上按
x
可以退出调试。 - 可以用
esa dev --port <port>
临时指定端口,也可以使用esa config -l
按照项目配置端口。
需要先登录阿里云账号,才能进行远程管理操作。
首先请访问阿里云RAM控制台获取您的AccessKey ID和AccessKey Secret,再执行esa login
根据提示输入。
& esa login # 登录
& esa logout # 登出
当本地调试完成后,需要生成一个代码版本用于部署。
& esa commit # 生成版本
当代码版本生成后,需要部署到边缘节点。
通过esa deployments [script]
命令可以管理版本与部署情况。
& esa deploy # 根据提示选择版本、目标环境即可部署
& esa deployments list # 查看部署情况
& esa deployments delete <versionId> # 删除版本
注意:已经被部署的版本无法删除。
当被部署到节点后,您可以配置触发器,通过触发器可以访问您的边缘函数。触发器有两种:
- 域名:为您的函数绑定域名,该域名必须是您ESA站点的子域名,您可以通过域名直接访问到该函数,此时边缘函数将作为该域名的源站。
- 路由:为您的ESA站点绑定函数路由,访问该路由可触发边缘函数执行,此时边缘函数可以和站点的源站进行通信。
# 域名
& esa domain list
& esa domain add <domainName> # 需要是您的已备案域名
& esa domain delete <domainName>
# 路由
& esa route list
& esa route add [route] [site]
& esa route delete <route>
可以通过CLI查看、删除Routine函数。
& esa routine list # 查看函数
& esa routine delete <routineName> # 删除函数
查看命令
endpoint = "" # ESA API Endpoint
lang = "zh_CN" # 语言
[auth]
accessKeyId = "" # AccessKey ID
accessKeySecret = "" # AccessKey Secret
name = "Hello World" # 项目名称
description = "Hello World" # 项目描述
entry = "src/index.js" # 入口文件
codeVersions = [ ] # 代码版本
[dev]
port = 18080 # 调试端口
localUpstream = '' # 本地调试上游源站,会替换掉回源时当前的origin