#s3 #aws #amazon-s3 #minio

rusty-s3

遵循Sans-IO方法的简单纯Rust AWS S3客户端

14个不稳定版本 (5个破坏性更新)

0.5.0 2023年10月8日
0.4.1 2023年1月20日
0.3.3 2023年1月8日
0.3.2 2022年8月30日
0.1.1 2020年12月31日

#64 in 认证

Download history 1058/week @ 2024-04-15 997/week @ 2024-04-22 1222/week @ 2024-04-29 1684/week @ 2024-05-06 1111/week @ 2024-05-13 1509/week @ 2024-05-20 1186/week @ 2024-05-27 1242/week @ 2024-06-03 1066/week @ 2024-06-10 1201/week @ 2024-06-17 1049/week @ 2024-06-24 905/week @ 2024-07-01 1357/week @ 2024-07-08 1310/week @ 2024-07-15 827/week @ 2024-07-22 1100/week @ 2024-07-29

每月4,754次下载
用于 10 个Crate(6个直接使用)

BSD-2-Clause

145KB
3.5K SLoC

rusty-s3

crates.io Documentation dependency status Rustc Version 1.67+ CI codecov

遵循Sans-IO方法的简单纯Rust AWS S3客户端,采用现代且充满Rust风格的s3 API实现。

提供了使用AWS Signature Version 4进行请求签名和响应解析的能力,用于最常见的S3操作。

GitHub Actions在每个提交时测试Minio兼容性。

示例

use std::env;
use std::time::Duration;
use rusty_s3::{Bucket, Credentials, S3Action, UrlStyle};

// setting up a bucket
let endpoint = "https://s3.dualstack.eu-west-1.amazonaws.com".parse().expect("endpoint is a valid Url");
let path_style = UrlStyle::VirtualHost;
let name = "rusty-s3";
let region = "eu-west-1";
let bucket = Bucket::new(endpoint, path_style, name, region).expect("Url has a valid scheme and host");

// setting up the credentials
let key = env::var("AWS_ACCESS_KEY_ID").expect("AWS_ACCESS_KEY_ID is set and a valid String");
let secret = env::var("AWS_SECRET_ACCESS_KEY").expect("AWS_ACCESS_KEY_ID is set and a valid String");
let credentials = Credentials::new(key, secret);

// signing a request
let presigned_url_duration = Duration::from_secs(60 * 60);
let action = bucket.get_object(Some(&credentials), "duck.jpg");
println!("GET {}", action.sign(presigned_url_duration));

更多示例可以在GitHub上的示例目录中找到。

支持的S3操作

依赖项

~2.1–3.5MB
~86K SLoC