【问题标题】:Is aws CLI faster than using boto3?aws CLI 比使用 boto3 更快吗?
【发布时间】:2018-02-08 18:32:17
【问题描述】:
我将包存储在 s3 存储桶中。我需要读取每个包的元数据文件并将元数据传递给程序。我使用boto3.resource('s3') 在 python 中读取这些文件。代码需要几分钟才能运行。如果我使用 aws cli sync,它下载这些元文件的速度比 boto 快得多。我的猜测是,如果我不下载而只阅读元文件,它应该会更快。但事实并非如此。可以肯定地说 aws cli 比使用 boto 更快吗?
【问题讨论】:
标签:
python
amazon-s3
boto
boto3
【解决方案1】:
根据我的经验,我没有看到 CLI 比 boto 更快。正如 helloV 所提到的,CLI 是由专业人士编写的,并且保持在最佳水平,而 boto 是由初级到掌握的用户编写的。
如果您只需要元数据并希望使用 boto 快速使用脚本,我强烈建议您使用客户端而不是资源和名为 head_object 的方法,该方法执行读取但不下载,并且元数据可在 json 响应结构中检索.
【解决方案3】:
AWS CLI 确实使用 boto,但正如您所料,cli 不是一个瘦包装器。当涉及到复制 S3 数据树(包括单个大文件后面的多部分块)时,制作一个既彻底又快速的包装器需要很多逻辑,并且可以无缝地拾取哪里部分下载已停止,或仅有效同步服务器上更改的数据。
据我所见,awscli 代码中的实现比 Python 或 Java SDK 中的任何内容都更彻底。我见过几个开发人员因为太自豪而无法从他们的代码中调用 CLI,但是到目前为止,我所看到的所有此类尝试都未能达到零。不过,喜欢看一个反例。