s3cmd,boto和AWS CLI之间的区别

38 amazon-s3 boto s3cmd aws-cli

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

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

mfi*_*rca 40

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

AWS CLI通过"s3"命令为您提供简单的文件复制功能,这足以将静态网站部署到S3存储桶.它还有一些小的优点,例如预装在亚马逊Linux上,如果你在那里工作(它也可以轻松安装pip).

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

$ aws s3 sync . s3://mybucket
Run Code Online (Sandbox Code Playgroud)

有关此命令的完整文档: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

  • 是否有任何基准比较使用s3cmd和awscli的数据传输速率? (4认同)
  • "AWS CLI只提供基本命令"不是真的,`aws s3*`只是简化的界面,完整的REST API在`aws s3api*下可用 (4认同)
  • 这不是真的,s3cmd为你提供了aws-cli所做的一切.特别是,由于[没有并行工作者/连接](https://github.com/s3tools/s3cmd/issues/2),因此速度较慢.(s4cmd也有这个.) (3认同)
  • 另请查看 s4cmd。虽然它不具备 s3cmd 的所有功能,但其性能肯定优于高带宽连接(例如在 EC2 上),因为它对连接进行多线程处理。https://github.com/bloomreach/s4cmd (2认同)