1个不稳定版本
0.1.0 | 2021年2月1日 |
---|
#14 in #tencent
在tencent_scf中使用
3KB
腾讯云Serverless Compute Function的Rust运行时
⚠️ 免责声明:作者与腾讯无关,项目未得到腾讯的认可或赞助。此项目完全出于个人使用而开发。
动机
有一个著名的crate lambda_runtime,它为Rust提供了AWS Lambda的运行时。最近我需要在腾讯云上运行一些服务,众所周知,腾讯Serverless Compute Function实际上是AWS Lambda的复制品,只是名字更糟糕。因此,我创建了这个库,它的依赖性比lambda_runtime
略轻,设计决策也略有不同。虽然具体的API略有不同,但将AWS Lambda适应到腾讯Serverless Compute Function应该不会太难。
示例函数
下面的代码创建了一个简单的函数,该函数接收一个包含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
目标。 - 在腾讯云上部署函数:这是事情略有不同的一步
- 在创建无服务器计算函数的页面中,
- 选择“自定义创建”作为“创建方法”。
- 选择“自定义运行时”作为“执行环境”。
- 选择“上传zip存档”作为“提交方法”。
- 上传步骤2中的
bootstrap.zip
文件。 - (如果需要) 设置其他高级配置/触发器。
- 点击“完成”。
路线图
- 添加更多示例。
- 添加更多测试。
- 添加更多内置事件和响应。
许可
根据您的选择,受以下任一许可协议的约束:
。
lib.rs
:
tencent_scf
的推导辅助工具
推导
AsJson
:将类型标记为AsJson
,没有提供方法。
致谢
代码来自syn
存储库中的heapsize
示例。
依赖关系
~1.5MB
~35K SLoC