1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
pub fn lambda(handler: fn(&str) -> std::result::Result<String, String>) {
let aws_lambda_runtime_api = std::env::var("AWS_LAMBDA_RUNTIME_API").unwrap();
loop {
let invocation = ureq::get(&format!(
"http://{}/2018-06-01/runtime/invocation/next",
aws_lambda_runtime_api
))
.call();
let request_id = invocation
.header("Lambda-Runtime-Aws-Request-Id")
.unwrap()
.to_string();
let response = handler(invocation.into_string().unwrap().as_str());
match response {
Ok(res) => {
let _resp = ureq::post(&format!(
"http://{}/2018-06-01/runtime/invocation/{}/response",
aws_lambda_runtime_api, request_id
))
.send_string(&res);
}
Err(err) => {
let _resp = ureq::post(&format!(
"http://{}/2018-06-01/runtime/invocation/{}/error",
aws_lambda_runtime_api, request_id
))
.send_string(&err.to_string());
}
}
}
}