⚠️ 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.
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.
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) }))
}
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:
- Creating a Rust Function: follow the same instructions for AWS Lambda. The binary name should be
boostrap
, just like AWS Lambda. - Compiling and Building:
x86_64-unknown-linux-musl
target should be used, just like AWS Lambda. - Deploy the Function on Tencent Cloud: this is the step where things deviate a little bit:
- In the page for creating a serverless compute function,
- Choose "Custom Creation" for the "Creation Method".
- Choose "CustomRuntime" for the "Execution Environment".
- Choose "Upload zip archive" for the "Submission Method".
- Upload the
bootstrap.zip
file from step 2. - (If needed) Set up other advanced configuration/triggers.
- Click "Finish".
- Add more examples.
- Add more tests.
- Add more built-in events and responses.
Licensed under either of:
at your option.