#tencent #serverless #compute #helper #run-time #cloud #tencent-scf

tencent_scf_derive

为crate tencent_scf提供的推导辅助工具

1个不稳定版本

0.1.0 2021年2月1日

#14 in #tencent


tencent_scf中使用

MIT/Apache

3KB

腾讯云Serverless Compute Function的Rust运行时

crate Docs Apache2/MIT licensed Build Status

⚠️ 免责声明:作者与腾讯无关,项目未得到腾讯的认可或赞助。此项目完全出于个人使用而开发。

动机

有一个著名的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相同。用户应遵循该指南创建、编译和构建函数。以下是步骤概述:

  1. 创建Rust函数:遵循AWS Lambda的相同说明。二进制名称应为boostrap,就像AWS Lambda一样。
  2. 编译和构建:应使用与AWS Lambda相同的x86_64-unknown-linux-musl目标。
  3. 在腾讯云上部署函数:这是事情略有不同的一步
    1. 在创建无服务器计算函数的页面中,
    2. 选择“自定义创建”作为“创建方法”。
    3. 选择“自定义运行时”作为“执行环境”。
    4. 选择“上传zip存档”作为“提交方法”。
    5. 上传步骤2中的bootstrap.zip文件。
    6. (如果需要) 设置其他高级配置/触发器。
    7. 点击“完成”。

路线图

  • 添加更多示例。
  • 添加更多测试。
  • 添加更多内置事件和响应。

许可

根据您的选择,受以下任一许可协议的约束:


lib.rs:

tencent_scf的推导辅助工具

推导

  • AsJson:将类型标记为AsJson,没有提供方法。

致谢

代码来自syn存储库中的heapsize示例。

依赖关系

~1.5MB
~35K SLoC