我的包存储在s3存储桶中。我需要读取每个包的元数据文件并将元数据传递给程序。我使用GeomPolygon$draw_key <- ggplot2::draw_key_polygon
在python中读取这些文件。代码需要几分钟才能运行。如果我使用aws cli boto3.resource('s3')
,它下载这些元文件的速度比boto快得多。我的猜测是,如果我不下载并只读取元文件,它应该更快。但事实并非如此。是否可以说aws cli比使用boto更快?
答案 0 :(得分:2)
AWS Command-Line Interface (CLI)实际上使用了boto本身,所以它不是'更快'。
但是,aws s3 sync
命令使用线程同时复制多个文件,因此复制操作所花费的时间更少。
答案 1 :(得分:0)
根据我的经验,我没有看到CLI比boto更快。正如helloV所提到的CLI是由专业人员编写的,并且保持在最佳水平,而boto是由初级用户编写的。
如果您只需要元数据并且希望使用boto快速使用脚本我强烈建议使用客户端而不是资源和名为head_object的方法,该方法执行读取而不是下载,并且可以在json中检索元数据响应结构。
答案 2 :(得分:0)
AWS CLI确实使用boto,但正如您所期望的那样,cli不是 薄包装。当涉及到复制S3数据树(包括单个大文件后面的多部分数据块)时,创建一个包装程序非常全面和快速,这是相当多的逻辑,并且可以无缝地在哪里提取文件。部分下载已停止,或者仅有效地同步了服务器上已更改的数据。
据我所知,awscli代码中的实现比Python或Java SDK中的实现更为彻底。我见过几个开发人员,他们为自己无法从其代码调用CLI而感到自豪,但是到目前为止,我所见过的所有此类尝试都未能达到预期的标准,但这些尝试归零。不过,我希望看到一个反例。