#aws-lambda #tencent #lambda #run-time #api-bindings #scf

tencent_scf

腾讯云无服务器计算函数的自定义运行时

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

MIT/Apache

62KB
709

腾讯云无服务器计算函数的Rust运行时

crate Docs Apache2/MIT licensed

⚠️ 免责声明:作者与腾讯无关联,此项目未经腾讯认可。该项目完全出于个人使用目的开发。

动机

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

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

路线图

  • 添加GitHub Workflow以进行自动测试。
  • 添加更多示例。
  • 添加更多测试。
  • 添加更多内置事件和响应。

许可证

以下任一许可证下授权:

任选其一。

依赖关系

~1.6-2.6MB
~74K SLoC