// This example requires the following input to succeed: // { "command": "do something" } use netlify_lambda::{handler_fn, Context}; use serde::{Deserialize, Serialize}; /// A shorthand for `Box` /// type required by aws-lambda-rust-runtime. pub type Error = Box; /// This is also a made-up example. Requests come into the runtime as unicode /// strings in json format, which can map to any structure that implements `serde::Deserialize` /// The runtime pays no attention to the contents of the request payload. #[derive(Deserialize)] struct Request { command: String, } /// This is a made-up example of what a response structure may look like. /// There is no restriction on what it can be. The runtime requires responses /// to be serialized into json. The runtime pays no attention /// to the contents of the response payload. #[derive(Serialize)] struct Response { req_id: String, msg: String, } #[tokio::main] async fn main() -> Result<(), Error> { let func = handler_fn(my_handler); netlify_lambda::run(func).await?; Ok(()) } pub(crate) async fn my_handler(event: Request, ctx: Context) -> Result { // extract some useful info from the request let command = event.command; // prepare the response let resp = Response { req_id: ctx.request_id, msg: format!("Command {} executed.", command), }; // return `Response` (it will be serialized to JSON automatically by the runtime) Ok(resp) }