Crate lambda_http
source ·Expand description
Enriches the lambda
crate with http
types targeting AWS ALB, API Gateway REST and HTTP API lambda integrations.
This crate abstracts over all of these trigger events using standard http
types minimizing the mental overhead
of understanding the nuances and variation between trigger details allowing you to focus more on your application while also giving you to the maximum flexibility to
transparently use whichever lambda trigger suits your application and cost optimizations best.
Examples
Hello World
The following example is how you would structure your Lambda such that you have a main
function where you explicitly invoke
lambda_http::run
in combination with the service_fn
function. This pattern allows you to utilize global initialization
of tools such as loggers, to use on warm invokes to the same Lambda function after the first request, helping to reduce the latency of
your function’s execution path.
use lambda_http::{service_fn, Error};
#[tokio::main]
async fn main() -> Result<(), Error> {
// initialize dependencies once here for the lifetime of your
// lambda task
lambda_http::run(service_fn(|request| async {
Result::<&str, std::convert::Infallible>::Ok("👋 world!")
})).await?;
Ok(())
}
Leveraging trigger provided data
You can also access information provided directly from the underlying trigger events, like query string parameters,
or Lambda function context, with the RequestExt
trait.
use lambda_http::{service_fn, Error, IntoResponse, Request, RequestExt};
#[tokio::main]
async fn main() -> Result<(), Error> {
lambda_http::run(service_fn(hello)).await?;
Ok(())
}
async fn hello(
request: Request
) -> Result<impl IntoResponse, std::convert::Infallible> {
let _context = request.lambda_context();
Ok(format!(
"hello {}",
request
.query_string_parameters()
.first("name")
.unwrap_or_else(|| "stranger")
))
}
Re-exports
pub use http;
pub use lambda_runtime;
pub use lambda_runtime::tower;
pub use crate::ext::RequestExt;
pub use aws_lambda_events;
Modules
Structs
Enums
Traits
Request
to a Response
.Functions
ServiceFn
] with the given closure.