4个版本
0.1.3 | 2021年2月2日 |
---|---|
0.1.2 | 2021年2月2日 |
0.1.1 | 2021年2月1日 |
0.1.0 | 2021年2月1日 |
#3 in #tencent
62KB
709 行
腾讯云无服务器计算函数的Rust运行时
⚠️ 免责声明:作者与腾讯无关联,此项目未经腾讯认可。该项目完全出于个人使用目的开发。
动机
有一个著名的crate lambda_runtime,为AWS Lambda提供了Rust运行时。最近我需要在腾讯云上运行一些服务,而且众所周知,腾讯云无服务器计算函数只是AWS Lambda的一个更糟糕的复制品。因此,我创建了这个库,它的依赖性比lambda_runtime
略轻,设计决策也略有不同。尽管具体的API略有不同,但将AWS Lambda适配到腾讯云无服务器计算函数并不应该很难。
示例函数
以下代码创建了一个简单的函数,它接收一个包含firstName
字段的event,并返回给调用者一条消息,改编自lambda_runtime
。编译代码需要启用json
功能。
use serde_json::{json, Value};
use tencent_scf::{convert::AsJson, make_scf, Context};
type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
fn main() {
let func = make_scf(func);
tencent_scf::start(func);
}
fn func(event: Value, _: Context) -> Result<Value, Error> {
let first_name = event["firstName"].as_str().unwrap_or("world");
Ok(json!({ "message": format!("Hello, {}!", first_name) }))
}
部署
部署几乎与部署AWS Lambda相同。用户应尝试遵循该指南创建、编译和构建函数。以下是步骤概述
- 创建Rust函数:遵循AWS Lambda相同的说明。二进制名称应该是
boostrap
,就像AWS Lambda一样。 - 编译和构建:应使用与AWS Lambda相同的
x86_64-unknown-linux-musl
目标。 - 在腾讯云上部署函数:这是事情略有偏离的地方
- 在创建无服务器计算函数的页面中,
- 选择“自定义创建”作为“创建方法”。
- 选择“CustomRuntime”作为“执行环境”。
- 选择“上传zip压缩包”作为“提交方法”。
- 上传步骤2中的
bootstrap.zip
文件。 - (如有需要)设置其他高级配置/触发器。
- 点击“完成”。
路线图
- 添加GitHub Workflow以进行自动测试。
- 添加更多示例。
- 添加更多测试。
- 添加更多内置事件和响应。
许可证
以下任一许可证下授权:
任选其一。
依赖关系
~1.6-2.6MB
~74K SLoC