24 lines
1.0 KiB
Rust
24 lines
1.0 KiB
Rust
use anyhow::{anyhow, Result};
|
|
use aws_config::{Region, BehaviorVersion};
|
|
use aws_sdk_s3::{operation::head_bucket::HeadBucketOutput, Client, config::Credentials};
|
|
use aws_types::sdk_config::SharedCredentialsProvider;
|
|
|
|
use crate::models::BinaryCache;
|
|
|
|
pub async fn check_bucket(client: &Client, bucket_name: &str) -> Result<HeadBucketOutput> {
|
|
println!("{}", bucket_name);
|
|
let res = client.head_bucket().bucket(bucket_name).send().await;
|
|
res.map_err(|e| anyhow!("Cannot access the binary cache bucket: {}", e))
|
|
}
|
|
|
|
pub fn create_client(bc: BinaryCache) -> aws_sdk_s3::Client {
|
|
let credentials = Credentials::new(bc.access_key, bc.secret_key, None, None, "nom-nom-provider");
|
|
let s3_client_config = aws_config::SdkConfig::builder()
|
|
.endpoint_url(bc.endpoint_url)
|
|
.region(Some(Region::new(bc.region)))
|
|
.credentials_provider(SharedCredentialsProvider::new(credentials))
|
|
.behavior_version(BehaviorVersion::latest())
|
|
.build();
|
|
aws_sdk_s3::Client::new(&s3_client_config)
|
|
}
|