s3-sync

Crates.ios3-sync
lib.rss3-sync
version0.4.0
sourcesrc
created_at2019-08-27 15:26:28.830361
updated_at2022-12-20 15:38:32.941611
descriptionHigh level synchronous AWS S3 client
homepagehttps://sr.ht/~jpastuszek/s3-sync/
repositoryhttps://git.sr.ht/~jpastuszek/s3-sync
max_upload_size
id160082
size57,532
Jakub Pastuszek (jpastuszek)

documentation

https://docs.rs/s3-sync

README

Latest Version Documentation License

High level synchronous AWS S3 Rust client library.

This client wraps Rusoto S3 and provides the following features:

  • check if bucket or object exists,
  • list objects that match prefix as iterator that handles pagination transparently,
  • put large objects via multipart API and follow upload progress via a callback,
  • delete single or multiple objects via bulk delete API,
  • deffer execution using ensure crate for putting and deleting objects.

Example usage

use s3_sync::{S3, Region, ObjectBodyMeta, BucketKey, Bucket};
use std::io::Cursor;
use std::io::Read;

let test_bucket = std::env::var("S3_TEST_BUCKET").expect("S3_TEST_BUCKET not set");
let test_key = "foobar.test";

let s3 = S3::default();

let bucket = s3.check_bucket_exists(Bucket::from_name(test_bucket)).expect("check if bucket exists")
    .left().expect("existing bucket");
let bucket_key = BucketKey::from_key(&bucket, test_key);

let body = Cursor::new(b"hello world".to_vec());
let object = s3.put_object(bucket_key, body, ObjectBodyMeta::default()).unwrap();

let mut body = Vec::new();
s3.get_body(&object).expect("object body").read_to_end(&mut body).unwrap();

assert_eq!(&body, b"hello world");
Commit count: 0

cargo fmt