我正在考虑将我的静态网站重新部署到Amazon S3上。我需要自动化这个过程,所以我在寻找适用于这种任务的API。不过我对于s3cmd、Python库boto和AWS CLI这些选项有些困惑。
问题:s3cmd、Python库boto和AWS CLI之间有什么区别?
s3cmd 和 AWS 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的所有功能,并在此基础上添加了一些更加扩展的功能,尽管我不确定您是否需要其任何功能以达到您的目的。您可以在这里查看所有s3cmd命令: http://s3tools.org/usage
安装s3cmd可能会比较麻烦,因为似乎没有任何发行版的主要存储库中有其软件包。
boto是一个Python库,事实上也是官方的AWS Python SDK。由于AWS CLI也是用Python编写的,因此实际上使用了boto库的一部分(botocore)。它只适合在Python中编写部署脚本。如果您喜欢,还有其他流行语言的官方SDK(Java,PHP等): http://aws.amazon.com/tools/
访问S3最原始的形式是通过AWS的REST API。在某个时刻,其他所有内容都建立在其上。如果您感到有冒险精神,这里是S3 REST API文档: http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html
s3cmd
的软件包:http://packages.ubuntu.com/trusty/s3cmd - Danielaws s3 *
只是一个简化的接口,完整的REST API可以在aws s3api *
下使用。 - Simon Buchan