Skip to content

A Rust Runtime for Tencent Cloud Serverless Compute Function

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

johnmave126/tencent_scf

Repository files navigation

Rust Runtime for Serverless Compute Function on Tencent Cloud

crate Docs Apache2/MIT licensed Build Status

⚠️ DISCLAIMER: The author is NOT affiliated with Tencent and the project is NOT endorsed or sponsored by Tencent. This project was developed solely out of personal use.

Motivation

There is a well-known crate lambda_runtime that provides a runtime for rust as AWS Lambda. Recently I need to run some service on Tencent cloud and it is also well-known that Tencent Serverless Compute Function is simply a replica of AWS Lambda with a worse name. So I created this library with sligtly lighter dependencies than lambda_runtime and slightly different design decisions. It shouldn't be very hard to adapt an AWS Lambda to a Tencent Serverless Compute Function although concrete APIs are a little bit different.

Example Function

The code below creates a simple function that receives an event with a firstName field and returns a message to the caller, adapted from lambda_runtime. Compiling the code requires json feature enabled.

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) }))
}

Deployment

The deployment is almost the same as Deploy AWS Lambda. User should try to follow that guide to create, compile and build the function. We outline the steps as follows:

  1. Creating a Rust Function: follow the same instructions for AWS Lambda. The binary name should be boostrap, just like AWS Lambda.
  2. Compiling and Building: x86_64-unknown-linux-musl target should be used, just like AWS Lambda.
  3. Deploy the Function on Tencent Cloud: this is the step where things deviate a little bit:
    1. In the page for creating a serverless compute function,
    2. Choose "Custom Creation" for the "Creation Method".
    3. Choose "CustomRuntime" for the "Execution Environment".
    4. Choose "Upload zip archive" for the "Submission Method".
    5. Upload the bootstrap.zip file from step 2.
    6. (If needed) Set up other advanced configuration/triggers.
    7. Click "Finish".

Roadmap

  • Add more examples.
  • Add more tests.
  • Add more built-in events and responses.

License

Licensed under either of:

at your option.

About

A Rust Runtime for Tencent Cloud Serverless Compute Function

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages