#object-storage #amazon-s3 #s3-compatible #s3 #wasabi #gcp #storage-api

rust-s3

Rust 用于处理 AWS S3 及兼容对象存储 API 的库

128 个版本

0.35.0-alpha.32024年6月24日
0.34.0 2024年6月14日
0.34.0-rc42023年10月17日
0.34.0-beta32023年4月10日
0.2.3 2016年7月8日

#61 in 网络编程

Download history 18900/week @ 2024-05-03 21504/week @ 2024-05-10 18357/week @ 2024-05-17 18086/week @ 2024-05-24 21536/week @ 2024-05-31 18262/week @ 2024-06-07 17957/week @ 2024-06-14 14835/week @ 2024-06-21 14316/week @ 2024-06-28 15097/week @ 2024-07-05 16255/week @ 2024-07-12 16918/week @ 2024-07-19 19997/week @ 2024-07-26 23923/week @ 2024-08-02 19019/week @ 2024-08-09 17847/week @ 2024-08-16

84,364 每月下载量
用于 43 个 Crates (34 直接)

MIT 许可证

320KB
6.5K SLoC

build MIT licensed

rust-s3 [文档]

Rust 库,用于处理 Amazon S3 或任意兼容 S3 的 API,完全兼容 async/awaitfutures ^0.3。所有 async 功能都可以关闭,并可以使用仅同步的实现。

支持进一步开发

  • BTC - bc1q0m5e0xa0sy8rerwuvjgvsqt4v2cdmknd3w653k
  • ETH - 0xbcaE345BB362Ff81E4b5C7c1041Fd81Bb6F1f901

简介

对 Amazon S3 以及兼容的对象存储 API(如 Backblaze B2、Wasabi、Yandex、Minio 或 Google Cloud Storage)的简单接口。支持:putgetlistdelete、对 tagslocation 的操作,以及 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::Err
  • no-verify-ssl - 禁用端点的 SSL 验证,对于自定义区域很有用
  • never-encode-slash - 永远不对路径中的反斜杠进行编码
使用 default-features = false
  • with-async-std - async-std 运行时
  • sync - 没有异步运行时,使用 attohttpc 进行 HTTP 请求
  • tags - 需要 Bucket::get_object_tagging

所有运行时都支持 native-tlsrustls-tls,所有组合都有功能,有关完整列表,请参阅 s3/Cargo.toml

路径或子域样式 URL 和头

Bucket 结构体提供了 path-style 路径的构造函数,subdomain 风格是默认的。 Bucket 提供了配置和访问 path-style 配置的方法。 blocking 功能将生成以下所有方法的 *_blocking 变体。

存储桶

创建 异步
删除 异步
列出 异步
存在 异步

预签名

POST 预签名 POST
PUT 预签名 PUT
GET 预签名 GET
DELETE 预签名 DELETE

GET

获取对象有几种不同的选项。 syncasync 方法在 std::io::Write 上是一致的,而 tokio 方法在 tokio::io::AsyncWriteExt 上是一致的。

异步/同步/异步-阻塞 获取对象
异步/同步/异步-阻塞 获取对象流
异步/同步/异步-阻塞 将对象写入写入器

PUT

每个 GET 方法都有一个对应的 PUT 方法。 syncasync 方法在 std::io::Read 上是一致的。 async stream 方法在 futures_io::AsyncReadExt 上是一致的,而 tokio 方法在 tokio::io::AsyncReadExt 上是一致的。

异步/同步/异步-阻塞 上传对象
异步/同步/异步-阻塞 上传对象并设置内容类型
异步/同步/异步-阻塞 上传对象流

列表

异步/同步/异步-阻塞 列出

DELETE

异步/同步/异步-阻塞 删除对象

位置

异步/同步/异步-阻塞 位置

标记

异步/同步/异步-阻塞 上传对象标记
异步/同步/异步-阻塞 获取对象标记

头部

异步/同步/异步-阻塞 获取对象头部

使用(在 Cargo.toml 中)

[dependencies]
rust-s3 = "0.34"

依赖项

~6–22MB
~358K SLoC