nom-nom-nix-gc/src/s3/mod.rs

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)
}