cargo-aws-lambda 0.3.0

Cross-compile, package and deploy AWS Lambda functions with only docker as a dependency using cargo aws-lambda.
use rusoto_core::{HttpClient, Region};
use crate::Opt;
use rusoto_lambda::LambdaClient;
use rusoto_core::credential::{ChainProvider, ProfileProvider, StaticProvider};
use std::str::FromStr;

pub(crate) fn create_client(opt: &Opt, region: &str) -> LambdaClient {
    let dispatcher = HttpClient::new().expect("failed to create request dispatcher");
    let region = Region::from_str(region).unwrap();

    match (&opt.access_key, &opt.secret_key, &opt.profile) {
        (Some(access_key), Some(secret_key), _) => {
            let creds = StaticProvider::new_minimal(access_key.to_owned(), secret_key.to_owned());
            LambdaClient::new_with(dispatcher, creds, region)
        },
        (_, _, Some(profile)) => {
            let mut creds = ProfileProvider::new().unwrap();
            creds.set_profile(profile.to_owned());
            LambdaClient::new_with(dispatcher, creds, region)
        },
        _ => {
            let creds = ChainProvider::new();
            LambdaClient::new_with(dispatcher, creds, region)
        }
    }
}