How to use Rust to create a Netlify Serverless function
Created Updated
1 min read 192 words
Enabling the feature
While support is still experimental, support for rust server less functions must be enabled on a per-site basis. You can enable rust support by enabling this environment variable
netlify env:set NETLIFY_EXPERIMENTAL_BUILD_RUST_SOURCE true
Creating a serverless function
In order to create a new rust function use cargo to initialize a new project
cargo init FUNCTION_NAME
The name you choose for the function determines its endpoint. For example, running cargo init hello will create a function which, when deployed, will be accessible on the /.netlify/functions/hello endpoint.
Alternatively, you can get a jump-start with the Netlify CLI’s function generator. Run netlify functions:create —language=rust, choose a template, and you’ll get a fully working function, ready to be deployed and modified to fit your needs.
Structure
use aws_lambda_events::event::apigw::{ApiGatewayProxyRequest, ApiGatewayProxyResponse};
use aws_lambda_events::encodings::Body;
use http::header::HeaderMap;
use lambda_runtime::{handler_fn, Context, Error};
use log::LevelFilter;
use simple_logger::SimpleLogger;
#[tokio::main]
async fn main() -> Result<(), Error> {
SimpleLogger::new().with_level(LevelFilter::Info).init().unwrap();
let func = handler_fn(my_handler);
lambda_runtime::run(func).await?;
Ok(())
}
pub(crate) async fn my_handler(event: ApiGatewayProxyRequest, _ctx: Context) -> Result<ApiGatewayProxyResponse, Error> {
let path = event.path.unwrap();
let resp = ApiGatewayProxyResponse {
status_code: 200,
headers: HeaderMap::new(),
multi_value_headers: HeaderMap::new(),
body: Some(Body::Text("Hello world".to_owned())),
is_base64_encoded: Some(false),
};
Ok(resp)
}
References
YouTube References
Add comment below...
Please refresh the page if commenting system is not visible.