128 个版本
| 0.35.0-alpha.3 | 2024年6月24日 |
|---|---|
| 0.34.0 | 2024年6月14日 |
| 0.34.0-rc4 | 2023年10月17日 |
| 0.34.0-beta3 | 2023年4月10日 |
| 0.2.3 | 2016年7月8日 |
#61 in 网络编程
84,364 每月下载量
用于 43 个 Crates (34 直接)
320KB
6.5K SLoC
rust-s3 [文档]
Rust 库,用于处理 Amazon S3 或任意兼容 S3 的 API,完全兼容 async/await 和 futures ^0.3。所有 async 功能都可以关闭,并可以使用仅同步的实现。
支持进一步开发
- BTC -
bc1q0m5e0xa0sy8rerwuvjgvsqt4v2cdmknd3w653k - ETH -
0xbcaE345BB362Ff81E4b5C7c1041Fd81Bb6F1f901
简介
对 Amazon S3 以及兼容的对象存储 API(如 Backblaze B2、Wasabi、Yandex、Minio 或 Google Cloud Storage)的简单接口。支持:put、get、list、delete、对 tags 和 location 的操作,以及 head。
此外,还有一个专门的 presign_get Bucket 方法。这意味着您可以将文件上传到 S3,并给选定的人提供链接,而无需担心 S3 上的公开访问文件。这也意味着您可以给人们一个 PUT 预签名的 URL,这意味着他们可以在预签名 URL 的有效期内将文件上传到 S3 的特定键。
快速入门
阅读并运行 examples 文件夹中的示例,确保您有运行所需的有效凭证。
# tokio, default
cargo run --example tokio
# async-std
cargo run --example async-std --no-default-features --features async-std-native-tls
# sync
cargo run --example sync --no-default-features --features sync-native-tls
# minio
cargo run --example minio
# r2
cargo run --example r2
# google cloud
cargo run --example google-cloud
特性
有很多不同的特性,可以支持各种用例,请参阅 s3/Cargo.toml 以获取完整的列表。以下是一个各种有用特性的表格,以及每个特性的简要描述。
default-tokio运行时和native-tls实现blocking- 为所有Bucket方法生成*_blocking变体,否则只有async版本可用fail-on-err- 对于 HTTP 错误返回 Result::Errno-verify-ssl- 禁用端点的 SSL 验证,对于自定义区域很有用never-encode-slash- 永远不对路径中的反斜杠进行编码
使用 default-features = false
with-async-std-async-std运行时sync- 没有异步运行时,使用attohttpc进行 HTTP 请求tags- 需要Bucket::get_object_tagging
所有运行时都支持 native-tls 或 rustls-tls,所有组合都有功能,有关完整列表,请参阅 s3/Cargo.toml
路径或子域样式 URL 和头
Bucket 结构体提供了 path-style 路径的构造函数,subdomain 风格是默认的。 Bucket 提供了配置和访问 path-style 配置的方法。 blocking 功能将生成以下所有方法的 *_blocking 变体。
存储桶
创建 |
异步 |
删除 |
异步 |
列出 |
异步 |
存在 |
异步 |
预签名
POST |
预签名 POST |
PUT |
预签名 PUT |
GET |
预签名 GET |
DELETE |
预签名 DELETE |
GET
获取对象有几种不同的选项。 sync 和 async 方法在 std::io::Write 上是一致的,而 tokio 方法在 tokio::io::AsyncWriteExt 上是一致的。
异步/同步/异步-阻塞 |
获取对象 |
异步/同步/异步-阻塞 |
获取对象流 |
异步/同步/异步-阻塞 |
将对象写入写入器 |
PUT
每个 GET 方法都有一个对应的 PUT 方法。 sync 和 async 方法在 std::io::Read 上是一致的。 async stream 方法在 futures_io::AsyncReadExt 上是一致的,而 tokio 方法在 tokio::io::AsyncReadExt 上是一致的。
异步/同步/异步-阻塞 |
上传对象 |
异步/同步/异步-阻塞 |
上传对象并设置内容类型 |
异步/同步/异步-阻塞 |
上传对象流 |
列表
异步/同步/异步-阻塞 |
列出 |
DELETE
异步/同步/异步-阻塞 |
删除对象 |
位置
异步/同步/异步-阻塞 |
位置 |
标记
异步/同步/异步-阻塞 |
上传对象标记 |
异步/同步/异步-阻塞 |
获取对象标记 |
头部
异步/同步/异步-阻塞 |
获取对象头部 |
使用(在 Cargo.toml 中)
[dependencies]
rust-s3 = "0.34"
依赖项
~6–22MB
~358K SLoC