// This example requires the following input to succeed: // { "command": "do something" } use lambda_runtime::{service_fn, Error, LambdaEvent}; use serde::{Deserialize, Serialize}; /// 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 = service_fn(my_handler); lambda_runtime::run(func).await?; Ok(()) } pub(crate) async fn my_handler(event: LambdaEvent) -> Result { // extract some useful info from the request let command = event.payload.command; // prepare the response let resp = Response { req_id: event.context.request_id, msg: format!("Command {} executed at {:?}.", command, std::time::SystemTime::now()), }; // return `Response` (it will be serialized to JSON automatically by the runtime) Ok(resp) }