#s3 #object-storage #storage #object #aws-sdk

sulfite

A high-level S3 client built on AWS SDK for Rust for bandwidth saturation

1 unstable release

0.0.3 Nov 21, 2024
0.0.2 Nov 19, 2024
0.0.1 Nov 6, 2024

#258 in HTTP client

Download history 108/week @ 2024-11-04 8/week @ 2024-11-11 275/week @ 2024-11-18 6/week @ 2024-11-25 22/week @ 2024-12-02 11/week @ 2024-12-09

315 downloads per month

MIT license

48KB
1K SLoC

sulfite

Crates.io Docs.rs License

Overview

sulfite is a high-level S3 client built on AWS SDK for Rust for even better ease of use, reliability, and bandwidth saturation (>50 Gbps).

The name: SO3^2-, an anion, implying a companion to some other cation (application), is commonly used as a preservative in wines and dried fruits (preserve to S3). It's S3 with an O in the middle, a play on oxidization.

Motivation

The AWS SDK is a little low-level for users to take advantage of the concurrency & parallelism, with the following challenges:

  1. You need to orchestrate the parallel multipart download & upload for large files.
  2. The built-in retry settings are too low-level, and we allow installing higher-level retries.
  3. The async API doesn't agree well with the filesystem, especially for streaming small chunks from/to disk.

To address them, we provide implementations for the parallel multipart download & upload, and higher-level retries. We also make sure the on-disk file is adequately buffered to avoid task-threading overhead.

License

This project is licensed under the MIT license.

Dependencies

~28–38MB
~507K SLoC