s3cmd、boto和AWS CLI之间的区别

54

我正在考虑将我的静态网站重新部署到Amazon S3上。我需要自动化这个过程,所以我在寻找适用于这种任务的API。不过我对于s3cmd、Python库boto和AWS CLI这些选项有些困惑。

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

1个回答

54

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的所有功能,并在此基础上添加了一些更加扩展的功能,尽管我不确定您是否需要其任何功能以达到您的目的。您可以在这里查看所有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


5
有没有对比使用s3cmd和awscli进行数据传输速率的基准测试? - sandeepkunkunuru
Ubuntu官方提供了s3cmd的软件包:http://packages.ubuntu.com/trusty/s3cmd - Daniel
2
还可以看看s4cmd。虽然它没有s3cmd的所有功能,但在高带宽连接(例如在EC2上)上,其性能绝对更好,因为它会多线程连接。https://github.com/bloomreach/s4cmd - jlevy
4
“AWS CLI只提供基本命令”这种说法不准确,aws s3 *只是一个简化的接口,完整的REST API可以在aws s3api *下使用。 - Simon Buchan
3
s3cmd并不能完全提供aws-cli的所有功能,尤其是它比后者慢一些,因为它没有并行工作程序/连接(s4cmd也是如此)。 - jlevy
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接