web-dev-qa-db-ja.com

s3cmd、boto、AWS CLIの違い

静的ウェブサイトをAmazon S3に再デプロイすることを考えています。展開を自動化する必要があるため、このようなタスクのAPIを探していました。私はさまざまなオプションについて少し混乱しています。

質問:s3cmd、Python library botoとAWS CLIの違いは何ですか?

38
user1781186

s3cmdAWS CLI は両方ともコマンドラインツールです。シェルスクリプト(bashなど)を使用して展開のスクリプトを作成する場合に適しています。

AWS CLIは、「s3」コマンドを使用して単純なファイルコピー機能を提供します。これは、静的ウェブサイトをS3バケットにデプロイするのに十分なはずです。また、Amazon Linuxに事前にインストールされているなど、作業を行っていた場所にいくつかの小さな利点があります(また、 pipで簡単にインストール可能 )。

ローカルディレクトリをS3バケットに同期するのに適している可能性がある1つのAWS CLIコマンド:

$ aws s3 sync . s3://mybucket

このコマンドの完全なドキュメント: http://docs.aws.Amazon.com/cli/latest/reference/s3/sync.html

編集:@ simon-buchanがコメントで述べたように、aws s3apiコマンドは完全なS3 APIへのアクセスを提供しますが、そのインターフェースはより「生」です。

s3cmdは、AWS CLIがサポートするすべてをサポートし、さらにいくつかの拡張機能を追加しますが、目的に応じて必要になるかどうかはわかりません。ここですべてのコマンドを見ることができます: http://s3tools.org/usage

S3cmdのインストールは、どのディストリビューションのメインリポジトリでもパッケージのようには見えないため、もう少し複雑になります。

boto はPythonライブラリであり、実際には公式のAWS Python SDKです。 Pythonで記述されているAWS CLIは、実際にはbotoライブラリの一部を使用します( botocore )。 Pythonで展開スクリプトを記述している場合にのみ適しています。他の一般的な言語(Java、PHPなど)用の公式SDKがあります: http://aws.Amazon.com/tools/

S3へのアクセスの最も生の形式は、AWSのREST APIを介したものです。他のすべては、ある時点でそれに基づいて構築されます。冒険好きなら、S3 REST APIドキュメントをご覧ください。 http://docs.aws.Amazon.com/AmazonS3/latest/API/APIRest.html

40
mfisherca