Need help with rust-s3?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

durch
215 Stars 97 Forks MIT License 342 Commits 37 Opened issues

Description

Rust library for interfacing with AWS S3 and other API compatible services

Services available

!
?

Need anything else?

Contributors list

build MIT licensed <!-- Join the chat at https://gitter.im/durch/rust-s3 -->

rust-s3 [docs]

Rust library for working with Amazon S3 or arbitrary S3 compatible APIs, fully compatible with async/await and

futures ^0.3
. All
async
features can be turned off and sync only implementations can be used.

Support further development

  • BTC -
    3QQdtQGSMStTWEBhe65hPiAWJekXH8n26o
  • ETH -
    0x369Fd06ACc25CCfE0A28BE40018cF3aC38AcdcB6

Intro

Modest interface towards Amazon S3, as well as S3 compatible object storage APIs such as Wasabi, Yandex, Minio or Google Cloud Storage. Supports:

put
,
get
,
list
,
delete
, operations on
tags
and
location
, well as
head
.

Additionally a dedicated

presign_get
Bucket
method is available. This means you can upload to s3, and give the link to select people without having to worry about publicly accessible files on S3. This also means that you can give people a
PUT
presigned URL, meaning they can upload to a specific key in S3 for the duration of the presigned URL.

AWS, Yandex and Custom (Minio) Example

Features

There are a lot of various featuers that enable a wide variaty of use cases, refer to

s3/Cargo.toml
for an exhaustive list. Below is a table of various useful features as well as a short description for each.
  • default
    -
    tokio
    runtime and a
    native-tls
    implementation
  • blocking
    - generates
    *_blocking
    variant of all
    Bucket
    methods, otherwise only
    async
    versions are available
  • fail-on-err
    -
    panic
    on any error
  • no-verify-ssl
    - disable SSL verification for endpoints, useful for custom regions
  • never-encode-slash
    - never encode slashes in paths
with
default-features = false
  • with-async-std
    -
    async-std
    runtime
  • sync
    - no async rutime,
    attohttpc
    is used for HTTP requests

All runtimes support either

native-tls
or
rustls-tls
, there are features for all combinations, refer to
s3/Cargo.toml
for a complete list

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.
blocking
feature will generate a
*_blocking
variant of all of the methods listed below.

Buckets

| | | |----------|-----------------------------------------------------------------------------| |

create
| async | |
delete
| async |

Presign

| | | |-------|----------------------------------------------------------------------------------------| |

PUT
| presign_put | |
GET
| presign_get |

GET

There are a few different options for getting an object.

sync
and
async
methods are generic over
std::io::Write
, while
tokio
methods are generic over
tokio::io::AsyncWriteExt
.

| | | |---------|----------------------------------------------------------------------------------------------------| |

async
| get_object | |
async
| getobjectstream |

PUT

Each

GET
method has a
PUT
companion
sync
and
async
methods are generic over
std::io::Read
.
async
stream
methods are generic over
futures::io::AsyncReadExt
, while
tokio
methods are generic over
tokio::io::AsyncReadExt
.

| | | |---------|--------------------------------------------------------------------------------------------------------------------------| |

async
| put_object | |
async
| putobjectwithcontenttype | |
async
| putobjectstream |

List

| | | |---------|--------------------------------------------------------------------------| |

async
| list |

DELETE

| | | |---------|--------------------------------------------------------------------------------------------| |

async
| delete_object |

Location

| | | |---------|----------------------------------------------------------------------------------| |

async
| location |

Tagging

| | | |---------|------------------------------------------------------------------------------------------------------| |

async
| putobjecttagging | |
async
| getobjecttagging |

Head

| | | |---------|----------------------------------------------------------------------------------------| |

async
| head_object |

Usage (in
Cargo.toml
)

[dependencies]
rust-s3 = "0.27"

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.