Загрузка ZIP-файла на S3, использование EC2 для распаковки

У меня есть веб-приложение Codeigniter, которое загружает много крошечных файлов каждый час на Amazon S3, что заставляет мои заказы на S3-запросы быстро срабатывать. Один из способов преодолеть это – закрепить файл, загрузить zip-файл на S3, а затем разархивировать его, когда он находится на S3.

Можно ли это сделать с помощью EC2? Или есть лучший способ достичь этого? Спасибо!!

EDIT: Если бы я использовал EC2, я бы использовал PHP для запуска создания экземпляра EC2, загрузив файл PHP, необходимый для распаковки zipped-файлов, скопируйте несжатые файлы на S3, а затем уничтожьте экземпляр EC2?

Solutions Collecting From Web of "Загрузка ZIP-файла на S3, использование EC2 для распаковки"

Если у вас есть машина EC2 в том же регионе, я бы посоветовал вам загружать ее там, застегнутую на молнию, и затем она отбрасывает ее на s3, чтобы распаковать ее. S3 не может распаковать его самостоятельно, как все его статические.

Нет платы между ec2 и s3, поэтому ec2 может обрабатывать распаковку, а затем записывать ее в ведро s3 без дополнительных сборов за передачу.

S3 – это просто хранилище. Независимо от того, какой файл вы загружаете, это файл, который хранится. Вы не можете загрузить zip-файл, а затем извлечь его в S3. Если вы написали приложение, то лучше всего попытаться перепроектировать, как вы храните файлы. Запросы S3 довольно дешевы … вы должны делать много запросов.

Я использую эту службу для распаковки файлов, содержащих тысячи крошечных файлов изображений, каждый загружаемый zip-файл составляет около 4 ГБ, и стоит около 1 доллара США, чтобы разархивировать с помощью http://www.cloudzipinc.com/service/s3_unzip , возможно, это может помочь кто то.

Сказав это, вам может быть проще использовать Python с библиотекой Boto. Это будет работать намного эффективнее, чем PHP.

Вы можете написать код в лямбде, чтобы разархивировать файл ведра S3, вам просто нужно его использовать, AWS Lambda сделает это за вас.

Referece:

  1. https://github.com/carloscarcamo/aws-lambda-unzip-py/blob/master/unzip.py
  2. https://github.com/mehmetboraezer/aws-lambda-unzip