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
163 Stars 68 Forks MIT License 332 Commits 9 Opened issues

Description

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

Services available

!
?

Need anything else?

Contributors list

# 49,924
Rust
Clojure
tokio
aws-s3
245 commits
# 365,048
Rust
gitlab-...
travis
cargo-s...
5 commits
# 360,023
extensi...
alfred
Scala
vala
5 commits
# 211,419
HTML
Rust
parser-...
tokio
4 commits
# 62,448
Rust
Sublime...
cpluspl...
Xamarin
3 commits
# 294,691
apache
CSS
Rust
tokio
3 commits
# 143,959
cloudfl...
PHP
captcha...
captcha...
2 commits
# 25,601
ash
Bash
acme-pr...
HTML
2 commits
# 109,824
Rust
lambda
program...
atcoder
2 commits
# 86,360
Clojure
Rust
Heroku
dokku
2 commits
# 266,709
C++
C
repl
kubectl...
1 commit
# 410,584
Scala
C
aws-s3
s3
1 commit
# 104,865
screen-...
CSS
dropbox
imgur
1 commit
# 323,796
Rust
mongodb...
tokio
aws-s3
1 commit
# 9,800
gogs
gitlab
Less
GitHub
1 commit
# 3,157
imagema...
sass-fr...
splash
pipelin...
1 commit
# 111,439
Rust
rust-bi...
unix
libc
1 commit
# 209,609
C
Objecti...
timeser...
tokio
1 commit
# 335,233
Python
Rust
tokio
aws-s3
1 commit
# 45,193
Django
rust-la...
Arch Li...
asmjs
1 commit

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

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

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.

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"

Features

Disable SSL verification for endpoints, useful for custom regions
[dependencies]
rust-s3 = {version = "0.26.0", features = ["no-verify-ssl"]}
Fail on HTTP error responses
[dependencies]
rust-s3 = {version = "0.26.0", features = ["fail-on-err"]}
Different SSL backends

Default is

reqwest/native-tls
, it is possible to switch to
reqwest/rustls-tls
which is more portable
[dependencies]
rust-s3 = {version = "0.26.0", features = ["rustls-tls"]}

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.