esa-cli
Version:
A CLI for operating Alibaba Cloud ESA EdgeRoutine (Edge Functions).
177 lines (119 loc) • 4.65 kB
Markdown
用于操作阿里云 ESA EdgeRoutine(边缘函数) 的 CLI,支持快速创建边缘函数、本地调试、版本发布与部署、触发器管理。
简体中文 | [English](./README.md)
- [边缘安全加速(ESA)](https://www.aliyun.com/product/esa)
- [边缘函数概述](https://help.aliyun.com/document_detail/2710021.html)
> **注意**: **ESA CLI 在0.0.2以上版本的本地开发模式替换成了ESA边缘函数相同的Runtime,目前实际表现与线上相同,欢迎体验!**
ESA CLI 处于公测阶段,如果您在使用中遇到任何问题,或者有任何建议,请随时提交 issue 或 pull request。
我们正在积极改进,并欢迎任何反馈。感谢您的理解与支持!
使用npm安装并运行CLI命令:
```bash
$ npm install esa-cli -g
$ esa -v
```
```bash
& esa init
```
初始化命令有完整的流程引导,根据提示输入项目名称、选择模板即可。
本地调试功能是 CLI 的核心,提供了比阿里云 ESA 控制台更便捷的调试体验。
```bash
& cd <Project Name>
& esa dev [options]
```
在EdgeRoutine 项目中,入口文件为 `src/index.js`,基本结构如下:
```javascript
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文档](https://help.aliyun.com/document_detail/2710024.html)
执行 `esa dev` 后,会自动打包入口文件,并启动本地调试服务,界面样式如下:

- 在界面上按 `b` 即可在浏览器中打开调试页面。
- 在界面上按 `c` 可以清空面板。
- 在界面上按 `x` 可以退出调试。
- 可以用 `esa dev --port <port>` 临时指定端口,也可以使用 `esa config -l` 按照项目配置端口。
需要先登录阿里云账号,才能进行远程管理操作。
首先请访问[阿里云RAM控制台](https://ram.console.aliyun.com/manage/ak)获取您的AccessKey ID和AccessKey Secret,再执行`esa login`根据提示输入。
```bash
& esa login
& esa logout
```
当本地调试完成后,需要生成一个代码版本用于部署。
```bash
& esa commit
```
当代码版本生成后,需要部署到边缘节点。
通过`esa deployments [script]`命令可以管理版本与部署情况。
```bash
& esa deploy
& esa deployments list
& esa deployments delete <versionId>
```
_注意:已经被部署的版本无法删除。_
当被部署到节点后,您可以配置触发器,通过触发器可以访问您的边缘函数。触发器有两种:
- 域名:为您的函数绑定域名,该域名必须是您ESA站点的子域名,您可以通过域名直接访问到该函数,此时边缘函数将作为该域名的源站。
- 路由:为您的ESA站点绑定函数路由,访问该路由可触发边缘函数执行,此时边缘函数可以和站点的源站进行通信。
```bash
& 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函数。
```bash
& esa routine list
& esa routine delete <routineName>
```
查看[命令](./docs/Commands.md)
```toml
endpoint = ""
lang = "zh_CN"
[]
accessKeyId = ""
accessKeySecret = ""
```
```toml
name = "Hello World"
description = "Hello World"
entry = "src/index.js"
codeVersions = [ ]
[]
port = 18080
localUpstream = ''
```
[](./LICENSE)