Исходя из моего общего опыта, это звучит довольно неплохо - ~ 21 файл в секунду.
Что может работать лучше, так это:
- Сжать (или иным образом соединить) 2 миллиона файлов в один гигантский архивный файл.
- Загрузите этот архивный файл в экземпляр EC2 в том же центре обработки данных AWS, что и корзина S3.
- Разархивируйте файл в экземпляре EC2.
- Запустите скрипт Python для экземпляра EC2.
Это сократит время в оба конца для каждой маленькой загрузки S3, так как все будет внутри AWS. Однако вы все равно можете ограничивать количество одновременных загрузок и / или количество загрузок в секунду.
В общем случае - от DOS до Windows, от Linux до S3 и т. Д. - множество и много маленьких файлов имеют тенденцию занимать лот дольше для обработки / загрузки / и т. Д. чем тот же объем данных в меньшем количестве больших файлов.
Хотя S3, кажется, работает лучше, чем во многих других системах, вы также можете подумать, если вы еще этого не сделали, настроить папки S3 так, чтобы 2 миллиона файлов не находились в (эквивалентном) одном каталоге. Однако это может или не может быть так легко сделать в зависимости от схемы именования файлов и конечного использования файлов.