A lightweight wrapper for using AWS Lambda as an API Gateway proxy.
Srvrls is available from Crates.io or Github.
toml
[dependencies]
srvrls = "0.1.5"
Or for a specific branch
toml
[dependencies]
srvrls = { git = "https://github.com/serverlesstechnology/srvrls.git", branch = "master"}
We built this library to simplify building applications that use AWS API Gateway as a proxy for AWS Lambda.
This library has opinions, strong ones, very possibly not your own. Our design priorities here are simple:
This wrapper turns this
impl Handler<ApiGatewayProxyRequest, ApiGatewayProxyResponse, HandlerError> for App {
fn run(&mut self, event: ApiGatewayProxyRequest, _ctx: Context) -> Result<ApiGatewayProxyResponse, HandlerError> {
match some_function(event) {
Ok(response) => {
ApiGatewayProxyResponse {
status_code: 200,
headers: hashmap!(String::from("Content-Type") => String::from("application/json")),
multi_value_headers: HashMap::new(),
body: Some(response),
is_base64_encoded: None,
}
},
Err(e) => {
ApiGatewayProxyResponse {
status_code: 400,
headers: hashmap!(String::from("Content-Type") => String::from("application/json")),
multi_value_headers: HashMap::new(),
body: Some(e.message),
is_base64_encoded: None,
}
}
}
}
}
into this
impl SrvrlsApplication for App {
fn handle(&mut self, event: SrvrlsRequest) -> Result<SrvrlsResponse, SrvrlsError> {
let response = some_function(event)?;
Ok(SrvrlsResponse::ok(response))
}
}