#amazon-s3 #s3 #aws #command-line-tool #cargo-install

app s3lsio

S3lsio is a command line utility for AWS S3 operations. It support V2 and V4 signatures. It also does benchmarking for S3. It can be used in scripts, called from other apps, cron etc. It's driven by JSON and can return data in JSON. It can also be used to keep buckets in sync. It also performs Ceph RGW Admin features for those familiar with Ceph. Install: [Cargo install s3lsio] OR download at http://www.lambdastack.io/s3lsio For help just run the cli: [s3lsio -h]

7 releases

Uses old Rust 2015

0.1.21 Jan 5, 2017
0.1.16 Nov 21, 2016
0.1.9 Oct 28, 2016
0.1.4 Sep 21, 2016

#196 in Profiling

30 downloads per month

Apache-2.0

695KB
4K SLoC

S3lsio

s3lsio Crates.io Crates.io

Cloning and Committing PRs

git clone --recursive https://github.com/lambdastackio/s3lsio.git

Do the above command instead of the normal git clone ... since there is a submodule for the OSX package manager Homebrew. However, if you don't care about that then you can simply leave --recursive off and git clone as normal.

Installing

If you only want to install s3lsio then pick from your environment below:

OSX (Homebrew)

The brew tap command below is important to setup where Homebrew will look for the package and updates.

brew tap lambdastackio/tap

brew install s3lsio

Linux RPMs - (replace 0.1.18 with latest version)

wget https://s3.amazonaws.com/s3lsio/osx/s3lsio-0.1.18.tar.gz

tar -xzvf s3lsio-0.1.18.tar.gz

sudo rpm -Uvh s3lsio-0.1.18.rpm

If you have Rust installed and want to use cargo

cargo install s3lsio

To install Rust (if needed): (Linux and Mac) curl -sSf https://static.rust-lang.org/rustup.sh | sh (Windows) Here is the link to the official Rust downloads page: https://www.rust-lang.org/en-US/downloads.html

About

AWS S3 command line utility written in rust. Works with both V2 and V4 signatures. This is important when working with third party systems that implement an S3 interface like Ceph. Ceph Hammer and below use V2 while Jewel and higher use V4.

Design

Simple as possible but flexible enough to be used in cron jobs, every day utility use, scripts etc. Additional AWS type storage options are coming soon.

Packaging

Deb/RPM - EVR (Epoch.Version.Release) - Follow semantic versioning which is now standard. Currently, you have to maintain the versioning information on packages, Cargo.toml and CLI which is a pain because you will often forget to properly update each of those. The CLI is now reading from the toml file but the others are not. So, an effort will soon be underway in a build.rs process to dynamically update those to match the Cargo.toml file before building begins to keep everything in sync.

OSX: A git submodule exists to the homebrew-tap repo in lambdastackio. This will create an updated tarball that Homebrew uses to install and update packages.

Linux (RHEL/CentOS/Fedora): A Vagrantfile exists to dynamically pull down a VirtualBox instance and spin up the correct OS to pull down the github code, install Rust, build the code, build the rpms and push them to S3.

Linux Ubuntu: A Vagrantfile exists to dynamically pull down a VirtualBox instance and spin up the correct OS to pull down the github code, install Rust, build the code, build the debs and push them to S3.

The above process will most likely move to Docker soon.

NB. Once this process is fully baked it will be rolled out as a template process for all binary crates moving forward. It's possible that I may auto codegen a Pacman package file to be used in Windows MinGW-64bit.

Changes

There are a lot of changes happening at a rapid rate. What may not be there today may very well be there tomorrow.

Dependencies

~17MB
~329K SLoC