/
sdk.rs
48 lines (41 loc) · 1.03 KB
/
sdk.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use anyhow::Result;
use aws_config;
use aws_config::BehaviorVersion;
use aws_sdk_s3;
use clap::Parser;
/// Print all objects in an S3 bucket
#[derive(Parser)]
struct Args {
/// Bucket name
#[clap(short, long)]
bucket: String,
}
#[tokio::main]
async fn main() -> Result<()> {
let args = Args::parse();
let bucket = args.bucket;
let client = aws_sdk_s3::Client::new(
&aws_config::defaults(BehaviorVersion::latest()).load().await,
);
let mut response = client
.list_objects_v2()
.bucket(bucket)
.into_paginator()
.send();
let mut count = 0;
while let Some(result) = response.next().await {
match result {
Ok(output) => {
for object in output.contents() {
println!("{}", object.key().unwrap_or_default());
count += 1;
}
}
Err(err) => {
println!("{err:?}")
}
}
}
println!("Found {} objects", count);
Ok(())
}