ITADN
durch/rust-s3
durch/rust-s3 · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

build MIT licensed

rust-s3 [docs]

用于操作 Amazon S3 或任意 S3 兼容 API 的 Rust 库,完全兼容 async/awaitfutures ^0.3。所有 async 功能均可关闭,且可使用仅同步的实现。所有请求会自动重试一次,并可通过 set_retries 调用进一步修改。

:raised_hands: 支持进一步的维护与开发

正如许多人所指出的,我对该库的关注度时高时低,确保我持续维护并为其添加功能的最佳方式是捐赠一些 BTC,或成为赞助者。感谢您的支持!

:moneybag: BTC :point_right: bc1q7ukqe09zplg2sltgfrkukghpelfaz7qja8pw6u

简介

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

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

快速入门

[dependencies]
rust-s3 = "0.37.2"

阅读并运行 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
使用 default-features = false
  • with-async-std - async-std 运行时,使用 surf 客户端
  • sync - 无异步运行时,使用 attohttpc 进行 HTTP 请求
  • tags - Bucket::get_object_tagging 所需

所有运行时均支持 native-tlsrustls-tls,存在涵盖所有组合的特性,请参阅 s3/Cargo.toml 获取完整列表。

路径或子域名风格的 URL 和请求头

Bucket 结构体提供了用于 path-style 路径的构造函数,subdomain 风格为默认。Bucket 公开了用于配置和访问 path-style 配置的方法。blocking 特性将为下列所有方法生成 *_blocking 变体。

LocalStack 兼容性

使用 LocalStack 时,您可能需要跳过在创建存储桶请求中发送位置约束。LocalStack 不支持请求体中的位置约束,并会返回 InvalidLocationConstraint 错误。设置此环境变量以跳过该约束:

export RUST_S3_SKIP_LOCATION_CONSTRAINT=true
# or
export RUST_S3_SKIP_LOCATION_CONSTRAINT=1

对于不支持 AWS 风格位置约束的其他 S3 兼容服务,可能也需要此设置。

存储桶

createasync
deleteasync
listasync
existsasync

预签名

POSTpresign_post
PUTpresign_put
GETpresign_get
DELETEpresign_delete

GET

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

async/sync/async-blockingget_object
async/sync/async-blockingget_object_stream
async/sync/async-blockingget_object_to_writer

PUT

每个 GET 方法都有一个 PUT 伴随 sync,并且 async 方法对 std::io::Read 是泛型的。async stream 方法对 futures_io::AsyncReadExt 是泛型的,而 tokio 方法对 tokio::io::AsyncReadExt 是泛型的。

async/sync/async-blockingput_object
async/sync/async-blockingput_object_with_content_type
async/sync/async-blockingput_object_stream

列表

async/sync/async-blockinglist

删除

async/sync/async-blockingdelete_object
async/sync/async-blockingdelete_objects

位置

async/sync/async-blockinglocation

标记

async/sync/async-blockingput_object_tagging
async/sync/async-blockingget_object_tagging

Head

async/sync/async-blockinghead_object