Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between s3cmd, boto and AWS CLI

People also ask

Does AWS CLI use Boto?

Both, AWS CLI and boto3 are built on top of botocore — a low-level Python library that takes care of everything needed to send an API request to AWS and receive a response back.

Is AWS CLI faster than Boto3?

The AWS Command-Line Interface (CLI) actually uses boto itself, so it is not 'faster'. However, the aws s3 sync command uses threading to copy multiple files simultaneously, so the copy operation takes less elapsed time.

What is S3cmd used for?

S3cmd ( s3cmd ) is a free command line tool and client for uploading, retrieving and managing data in Amazon S3 and other cloud storage service providers that use the S3 protocol, such as Google Cloud Storage or DreamHost DreamObjects. It is best suited for power users who are familiar with command line programs.

What is the difference between s3 and s3api?

The main difference between the s3 and s3api commands is that the s3 commands are not solely driven by the JSON models. Rather, the s3 commands are built on top of the operations found in the s3api commands. As a result, these commands allow for higher-level features that are not provided by the s3api commands.


s3cmd and AWS CLI are both command line tools. They're well suited if you want to script your deployment through shell scripting (e.g. bash).

AWS CLI gives you simple file-copying abilities through the "s3" command, which should be enough to deploy a static website to an S3 bucket. It also has some small advantages such as being pre-installed on Amazon Linux, if that was where you were working from (it's also easily installable through pip).

One AWS CLI command that may be appropriate to sync a local directory to an S3 bucket:

$ aws s3 sync . s3://mybucket

Full documentation on this command: http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

Edit: As mentioned by @simon-buchan in a comment, the aws s3api command gives you access to the complete S3 API, but its interface is more "raw".

s3cmd supports everything AWS CLI does, plus adds some more extended functionality on top, although I'm not sure you would require any of it for your purposes. You can see all its commands here: http://s3tools.org/usage

Installation of s3cmd may be a bit more involved because it doesn't seem to be packages for it in any distros main repos.

boto is a Python library, and in fact the official AWS Python SDK. The AWS CLI, also being written in Python, actually uses part of the boto library (botocore). It would be well suited only if you were writing your deployment scripts in Python. There are official SDKs for other popular languages (Java, PHP, etc.) should you prefer: http://aws.amazon.com/tools/

The rawest form of access to S3 is through AWS's REST API. Everything else is built upon it at some point. If you feel adventurous, here's the S3 REST API documentation: http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html