cnctd_aws 0.1.3

Wrapper around AWS methods
Documentation
use std::str::FromStr;

use anyhow::anyhow;
use aws_types::SdkConfig;

pub struct CnctdAwsConfig {
    pub region: String,
    pub access_key: String,
    pub secret_key: String,
}

impl CnctdAwsConfig {
    pub async fn load_from_env() -> SdkConfig {
        aws_config::load_from_env().await
    }

    pub async fn from_env() -> anyhow::Result<Self> {
        let region = std::env::var("AWS_REGION")?;
        let access_key = std::env::var("AWS_ACCESS_KEY_ID")?;
        let secret_key = std::env::var("AWS_SECRET_ACCESS_KEY")?;

        Ok(Self {
            region,
            access_key,
            secret_key,
        })
    }

    pub fn get_s3_region(config: &SdkConfig) -> anyhow::Result<s3::Region> {
        let config_region = config.region().ok_or_else(|| anyhow!("Region not found"))?.clone();
        let region = s3::Region::from_str(&config_region.to_string())?;

        Ok(region)
    }

    pub fn get_s3_credentials(&self) -> anyhow::Result<s3::creds::Credentials> {
        let credentials = s3::creds::Credentials::new(Some(&self.access_key), Some(&self.secret_key), None, None, None)?;

        Ok(credentials)
    }

}