aws_auth_payload/
lib.rs

1pub mod client;
2mod error;
3
4#[doc(inline)]
5pub use crate::error::Error;
6
7use rusoto_core::credential::{AwsCredentials, DefaultCredentialsProvider, ProvideAwsCredentials};
8
9/// Use the priority documented
10/// [here](https://rusoto.github.io/rusoto/rusoto_credential/struct.ChainProvider.html)
11/// obtain AWS credentials
12///
13/// # Limitations
14///
15/// Assuming roles through profiles is not supported at the moment. See this
16/// [Github issue](https://github.com/rusoto/rusoto/issues/1120)
17pub async fn get_aws_credentials() -> Result<AwsCredentials, Error> {
18    let provider = DefaultCredentialsProvider::new()?;
19    Ok(provider.credentials().await?)
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    use std::env;
27
28    #[tokio::test(flavor = "multi_thread", worker_threads = 1)]
29    async fn expected_aws_credentials() -> Result<(), crate::Error> {
30        let access_key = "test_key";
31        let secret_key = "test_secret";
32
33        env::set_var("AWS_ACCESS_KEY_ID", access_key);
34        env::set_var("AWS_SECRET_ACCESS_KEY", secret_key);
35
36        let credentials = get_aws_credentials().await?;
37
38        assert_eq!(credentials.aws_access_key_id(), access_key);
39        assert_eq!(credentials.aws_secret_access_key(), secret_key);
40
41        Ok(())
42    }
43}