50

我正在考虑将我的静态网站重新部署到 Amazon S3。我需要自动化部署,所以我一直在寻找用于此类任务的 API。我对不同的选择有点困惑。

问题:s3cmd、Python 库 boto 和 AWS CLI 有什么区别?

4

1 回答 1

49

s3cmdAWS CLI都是命令行工具。如果您想通过 shell 脚本(例如 bash)编写部署脚本,它们非常适合。

AWS CLI 通过“s3”命令为您提供简单的文件复制功能,这足以将静态网站部署到 S3 存储桶。它还具有一些小的优势,例如预先安装在 Amazon Linux 上,如果您正在使用它(它也可以通过 轻松安装pip)。

一个适用于将本地目录同步到 S3 存储桶的 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。AWS CLI 也是用 Python 编写的,实际上使用了 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

于 2014-10-16T04:18:24.240 回答