快速开始部署云函数和 Hook
云函数是云引擎提供的一种经过高度封装的函数计算功能,在我们的各个客户端 SDK 中也有对应的支持,可以自动地序列化 数据存储 服务中的各种数据类型。
适合使用云函数和 Hook 的场景包括:
- 将跨平台应用(同时有 Android、iOS、浏览器客户端)中复杂的计算逻辑集中到一处,而不必每个客户端单独实现一遍。
- 需要在服务器端对一些逻辑进行灵活调整,而不必更新客户端。
- 需要越过 ACL 或表权限的限制,对数据进行查询或修改。
- 需要使用 Hook 在数据存储中的对象被创建、更新、删除,或用户登录、认证时,触发自定义的逻辑、进行额外的权限检查。
- 需要运行定时任务,如每小时关闭未支付的订单、每天凌晨运行过期数据的清理任务等。
你可以使用云引擎支持的所有语言(运行环境)来编写云函数,包括 Node.js、Python、Java、PHP、.NET 和 Go。其中 Node.js 支持在控制台上在线编辑,其他语言需基于我们的示例项目部署到云引擎。
如果希望使用 Node.js 编写简单的云函数或 Hook,也可以尝试 云函数和 Hook 开发指南 § 在线编写云函数。
创建项目
请先根据 命令行工具使用指南 § 安装 安装最新版本的命令行工具,然后根据 命令行工具使用指南 § 登录账号 登录到你的账号。
如果你还没有在控制台创建过应用,请先在控制台创建应用,然后使用 tds new
创建项目:
$ tds new my-functions
[?] Please select an app template:
1) Node.js - Express
2) Node.js - Koa
3) Python - Flask
4) Python - Django
5) Java - Servlet
6) Java - Spring Boot
7) PHP - Slim
8) .NET Core
9) Go - Echo
10) React Web App (via create-react-app)
11) Vue Web App (via @vue/cli)
=> 1
[?] Please select an app:
1) my-functions
=> 1
[INFO] Downloading templates 7.71 KiB / 7.71 KiB [==================] 100.00% 0s
[INFO] Creating project...
[INFO] Created Node.js - Express project in `my-functions`
[INFO] Lean how to use Express at https://expressjs.com
tds new
会使用你提供的名字创建一个目录,我们 cd my-functions
然后安装项目依赖:
- Node.js
- Python
- PHP
- Java
- .NET (C#)
- Go
npm install
pip install -Ur requirements.txt
composer install
mvn package
需要安装 global.json 文件中指定的 .NET SDK 版本。
go mod tidy
编写云函数
在示例项目中可以看到一个云函数的例子:
- Node.js
- Python
- PHP
- Java
- .NET (C#)
- Go
AV.Cloud.define("hello", function (request) {
return "Hello world!";
});
@engine.define
def hello(**params):
if 'name' in params:
return 'Hello, {}!'.format(params['name'])
else:
return 'Hello, LeanCloud!'
Cloud::define("sayHello", function($params, $user) {
return "hello {$params['name']}";
});
@EngineFunction("hello")
public static String hello(@EngineFunctionParam("name") String name) {
if (name == null) {
return "What is your name?";
}
return String.format("Hello %s!", name);
}
[EngineFunction("Hello")]
public static string Hello([EngineFunctionParameter("text")]string text)
{
return $"Hello, {text}";
}
func init() {
leancloud.Engine.Define("hello", hello)
}
func hello(req *leancloud.FunctionRequest) (interface{}, error) {
return map[string]string{
"hello": "world",
}, nil
}
Hook 的编写和云函数很类似,在后文中我们会详细介绍云函数和 Hook 的详细用法。
本地运行和调试
可以使用 tds up
进行本地运行和调试,命令行工具会自动注入关联应用的环境变量,让云函数可以访问到线上数据存储中的数据。
$ tds up
[INFO] The project is running at: http://localhost:3000
[INFO] Cloud function debug console (if available) is accessible at: http://localhost:3001
tds up
同时默认在 3001 端口启动了一个用于调试云函数的控制台(http://localhost:3001),开发者可以通过这个控制台来调试云函数和 Hook,模拟特定的输入。
部署到云引擎
直接部署到生产环境:
tds deploy --prod
更多
接下来可以查看 云函数和 Hook 开发指南 来了解云函数开发的详细信息、查看 云引擎 SDK 使用指南 了解 SDK 的进阶用法、查看 云引擎平台功能 来了解云引擎提供的更多功能,或查看专门的页面来了解具体运行环境的详情: