s3simple is a small bash script/function for fetching objects from and putting files into Amazon’s S3 Simple Storage service.
It is intended for use in early bootstrapping of a system, and it has only two dependencies (curl and openssl), both of which are usually pre-installed or easily available as packages. If the AWS CLI is available you should use it instead of this script.
Note that s3simple uses S3 Signature V2 which was deprecated in 2019. As a result it only works with buckets created before June 2020, in regions that existed before 2014. Support for S3 Signature V4 in bash is probably possible, but it is not implemented here.
- Download the s3simple script somewhere.
- Set
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
and optionallyAWS_SESSION_TOKEN
environment variables. - Run
s3simple
with a method, ans3://
url and, optionally, a local filename.
For example:
export AWS_ACCESS_KEY_ID=AKxxx
export AWS_SECRET_ACCESS_KEY=zzzz
# optionally provide a temporary session token
export AWS_SESSION_TOKEN=wwww...
# get a file
./s3simple get s3://mybucket/myfile.txt myfile.txt
# fetch metadata about an object
./s3simple head s3://mybucket/myfile.txt
# put a file
./s3simple put s3://mybucket/foo.txt foo.txt
# get a file and pipe to tar
s3simple get s3://mybucket/foo.tgz | tar -zx
You are encouraged to copy the s3simple function into your bash scripts and edit it to suit your needs.
MIT license, see LICENSE.txt for details.