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