s3cmd,boto和AWS CLI之间的区别

时间:2014-10-12 14:53:35

标签: amazon-s3 boto s3cmd aws-cli

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

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

1 个答案:

答案 0 :(得分:39)

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

AWS CLI通过“s3”命令为您提供简单的文件复制功能,这足以将静态网站部署到S3存储桶。它还有一些小的优点,例如预装在亚马逊Linux上,如果这是你工作的地方(它也是easily installable through pip)。

一个AWS CLI命令,可能适合将本地目录同步到S3存储桶:

$ 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