use std::env; use rusoto_core::Region; use rusoto_credential::StaticProvider; use rusoto_core::request::HttpClient; use rusoto_s3::ListObjectsV2Request; use rusoto_s3::S3; use rusoto_s3::S3Client; fn main() { let region_name = env::var("NC_REGION").expect("export NC_REGION with the endpoint region"); let endpoint = env::var("NC_ENDPOINT").expect("export NC_ENDPOINT with the endpot URL"); let bucket = env::var("NC_BUCKET").expect("export NC_BUCKET with the bucket to be accessed"); let access_key = env::var("NC_ACCESS_KEY").expect("export NC_ACCESS_KEY with the access key to the bucket"); let secret_key = env::var("NC_SECRET_KEY").expect("export NC_SECRET_KEY with the secret key to the bucket"); println!("Accessing {}::{}", region_name, endpoint); let region = Region::Custom { name: region_name.to_owned(), endpoint: endpoint.to_owned() }; let client = S3Client::new_with( HttpClient::new().expect("Failed to create http client"), StaticProvider::new_minimal(access_key, secret_key), region ); let list_objects_request = ListObjectsV2Request { bucket: bucket.to_owned(), ..Default::default() }; let result = client .list_objects_v2(list_objects_request) .sync() .expect("Can't list contents of buckets"); println!("List result: {:?}", result); }