aws_utils_lambda/
lib.rs

1pub mod error;
2pub mod lambda;
3
4use std::time::Duration;
5
6use aws_config::{
7    BehaviorVersion,
8    timeout::{TimeoutConfig, TimeoutConfigBuilder},
9};
10pub use aws_sdk_lambda;
11use aws_sdk_lambda::Client;
12
13pub async fn make_client_with_timeout_default(endpoint_url: Option<String>) -> Client {
14    make_client_with_timeout(
15        endpoint_url,
16        Some(Duration::from_secs(3100)),
17        Some(Duration::from_secs(60)),
18        Some(Duration::from_secs(55)),
19        Some(Duration::from_secs(50)),
20    )
21    .await
22}
23
24pub async fn make_client_with_timeout(
25    endpoint_url: Option<String>,
26    connect_timeout: Option<Duration>,
27    operation_timeout: Option<Duration>,
28    operation_attempt_timeout: Option<Duration>,
29    read_timeout: Option<Duration>,
30) -> Client {
31    let mut timeout_config = TimeoutConfigBuilder::new();
32    timeout_config
33        .set_connect_timeout(connect_timeout)
34        .set_operation_timeout(operation_timeout)
35        .set_operation_attempt_timeout(operation_attempt_timeout)
36        .set_read_timeout(read_timeout);
37    make_client(endpoint_url, Some(timeout_config.build())).await
38}
39
40pub async fn make_client(
41    endpoint_url: Option<String>,
42    timeout_config: Option<TimeoutConfig>,
43) -> Client {
44    if std::env::var("AWS_ACCESS_KEY_ID").is_err() {
45        unsafe { std::env::set_var("AWS_ACCESS_KEY_ID", "dummy_access_key") };
46    }
47    if std::env::var("AWS_SECRET_ACCESS_KEY").is_err() {
48        unsafe { std::env::set_var("AWS_SECRET_ACCESS_KEY", "dummy_secret_key") };
49    }
50    if std::env::var("AWS_REGION").is_err() {
51        unsafe { std::env::set_var("AWS_REGION", "us-west-2") };
52    }
53    let mut config_loader = aws_config::defaults(BehaviorVersion::latest());
54    if let Some(timeout_config) = timeout_config {
55        config_loader = config_loader.timeout_config(timeout_config);
56    }
57    let config = config_loader.load().await;
58    let mut builder = aws_sdk_lambda::config::Builder::from(&config);
59    if let Some(aws_endpoint_url) = endpoint_url {
60        builder = builder.endpoint_url(aws_endpoint_url)
61    }
62    Client::from_conf(builder.build())
63}