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

rust-s3-async

Rust 用于操作 AWS S3 及兼容对象存储 API 的库

2 个不稳定版本

0.35.0 2023年6月5日
0.34.0 2023年6月5日

#7#wasabi

每月26次下载

MIT 许可证

180KB
3.5K SLoC

MIT licensed

注意:此仓库是 rust-s3 的分支,但进行了许多简化,如只支持 tokio 异步,没有阻塞实现,宏使用几乎为零。这个分支之所以存在,仅仅是因为宏展开相当不准确,让我在开发中感到沮丧。此外,在使用 S3 API 时通常使用异步代码,因此我不觉得需要携带所有“互斥宏”的额外重量来支持每个小特性。

rust-s3-async 文档

Rust 库,用于操作 Amazon S3 或任意 S3 兼容 API,完全兼容 async/awaitfutures ^0.3

简介

对 Amazon S3 的简洁接口,以及 Backblaze B2、Wasabi、Yandex、Minio 或 Google Cloud Storage 等S3兼容对象存储API。支持:putgetlistdelete操作,以及tagslocation上的操作,以及head

此外,还提供了一个专门的presign_get Bucket方法。这意味着您可以上传到S3,并将链接提供给特定人员,无需担心S3上的公开访问文件。这也意味着您可以提供一个PUT预签名URL,这意味着他们可以在预签名URL有效期间上传到S3中的特定键。

快速入门

阅读并运行examples文件夹中的示例,确保您有运行时要使用的有效凭据。

# tokio, default
cargo run --example tokio

# minio
# First, start Minio on port 9000.
AWS_ACCESS_KEY_ID="minioadmin" \
AWS_SECRET_ACCESS_KEY="minioadmin" \
    cargo run --example minio

# r2
cargo run --example r2

# google cloud
cargo run --example google-cloud

功能

有许多各种功能,可以支持广泛的用例,请参阅s3/Cargo.toml以获取完整的列表。以下是各种有用功能的表格,以及每个功能的简要说明。

  • default - tokio 运行时和 native-tls 实现
  • fail-on-err - 任何错误都引发恐慌
  • no-verify-ssl - 禁用端点的 SSL 验证,对于自定义区域很有用

路径或子域样式 URL 和头信息

Bucket 结构体提供了为 路径风格 路径的构造函数,默认风格是 subdomainBucket 提供了配置和访问 路径风格 配置的方法。

存储桶

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

预签名

POST 预签名上传
PUT 预签名上传
GET 预签名下载
DELETE 预签名删除

GET

获取对象有几种不同的选项,方法在 tokio::io::AsyncWriteExt 上是通用的。

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

PUT

每个 GET 方法都有一个相应的 PUT 方法,并且 tokio 方法在 tokio::io::AsyncReadExt 上是通用的。

异步/同步/异步-阻塞 上传对象
异步/同步/异步-阻塞 带有内容类型上传对象
异步/同步/异步-阻塞 上传对象流

列表

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

DELETE

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

位置

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

标签

异步/同步/异步-阻塞 设置对象标签
异步/同步/异步-阻塞 获取对象标签

头部

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

用法(在 Cargo.toml 中)

[dependencies]
rust-s3-async = "0.34.0"

依赖项

~14–30MB
~443K SLoC