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

zitane-s3-async

Rust library for working with AWS S3 and compatible object storage APIs

1 unstable release

0.37.0 Jul 15, 2023
0.36.0 Jul 15, 2023

#6 in #wasabi

39 downloads per month

MIT license

205KB
4K SLoC

ZitaneLabs/rust-s3-async

License: MIT

Fork notice

This is a fork of aalekhpatel07/rust-s3-async, which is a fork of durch/rust-s3.

It's used in our internal and upcoming projects, and is not intended to be used by anyone else.

Introduction

Rust library for working with Amazon S3 or arbitrary S3 compatible APIs, fully compatible with async/await. Uses tokio under the hood.

Quick Start

Read and run examples from the examples folder, make sure you have valid credentials for the variant you're running.

# 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

Features

There are a lot of various features that enable a wide variety of use cases, refer to s3/Cargo.toml for an exhaustive list.

  • default - tokio runtime and a native-tls implementation
  • no-verify-ssl - disable SSL verification for endpoints, useful for custom regions

Path or subdomain style URLs and headers

Bucket struct provides constructors for path-style paths, subdomain style is the default. Bucket exposes methods for configuring and accessing path-style configuration.

API

Buckets

  • create
  • delete
  • list
  • exists
  • location

Objects

  • head_object
  • get_object
  • get_object_stream
  • get_object_to_writer
  • put_object
  • put_object_with_content_type
  • put_object_stream
  • put_object_tagging
  • delete_object
  • object_exists

Presign

  • presign_post
  • presign_put
  • presign_get
  • presign_delete

Dependencies

~12–24MB
~386K SLoC