日々精進

新しく学んだことを書き留めていきます

boto3でS3からファイルをダウンロード・アップロードするのを高速化する

boto3のS3.Client.download_fileメソッドを使って大量のファイルをダウンロードすると、aws cliでダウンロードするよりかなり遅い。

boto3.amazonaws.com

理由はdownload_fileは同期処理なのに対してaws cliはマルチスレッド(ちゃんと調べてないのでマルチプロセスかも)で並列実行しているため。アップロードも同様。

以下を参考に、transfer_managerを使って並列実行するよう実装するとアップロード・ダウンロードが7倍程度早くなった。

stackoverflow.com