静的ウェブサイトを Amazon S3 に再デプロイすることを考えています。展開を自動化する必要があるため、そのようなタスク用の API を探していました。さまざまなオプションについて少し混乱しています。
質問: s3cmd、Python ライブラリ boto、AWS CLI の違いは何ですか?
s3cmdとAWS CLIはどちらもコマンドライン ツールです。シェル スクリプト (bash など) を使用して展開のスクリプトを作成する場合に適しています。
AWS CLI は、「s3」コマンドを介して簡単なファイル コピー機能を提供します。これは、静的なウェブサイトを S3 バケットにデプロイするのに十分なはずです。また、Amazon Linux から作業していた場合は、Amazon Linux にプリインストールされているなど、いくつかの小さな利点もあります (また、 から簡単にインストールできますpip
)。
ローカル ディレクトリを S3 バケットに同期するのに適切な AWS CLI コマンドの 1 つ:
$ 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