web-dev-qa-db-fra.com

Téléchargement du fichier Zip sur S3, utilisez EC2 pour décompresser

J'ai une application Web Codeigniter qui télécharge de nombreux fichiers minuscules toutes les heures sur Amazon S3, ce qui entraîne une augmentation très rapide de mes frais de demande S3. Une façon de résoudre ce problème sera de compresser le fichier, de télécharger le fichier Zip sur S3, puis de le décompresser lorsqu'il est sur S3.

Cela peut-il être fait en utilisant EC2? Ou existe-t-il une meilleure méthode pour y parvenir? Je vous remercie!!

EDIT: Si je devais utiliser EC2, dois-je utiliser PHP pour déclencher la création d'une instance EC2, télécharger le fichier PHP requis pour décompresser les fichiers zippés) , copiez les fichiers non compressés sur S3, puis détruisez l'instance EC2?

22
Nyxynyx

Si vous avez une machine EC2 dans la même région, je vous suggère de la télécharger zippée puis de la déposer sur s3 à partir de là décompressée. S3 ne peut pas le décompresser tout seul car il est entièrement statique.

Il n'y a aucun frais entre ec2 et s3, donc ec2 peut gérer la décompression, puis l'écrire dans votre seau s3 sans frais de transfert supplémentaires.

28
Akshat

Vous pouvez écrire du code dans un lambda pour décompresser un fichier de compartiment S3, il vous suffit de l'utiliser, AWS Lambda le fera pour vous.

Referece:

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

S3 est juste du stockage. Quel que soit le fichier que vous téléchargez, c'est le fichier qui est stocké. Vous ne pouvez pas télécharger un fichier Zip puis l'extraire une fois dans S3. Si vous avez écrit l'application, la meilleure chose que je puisse dire est d'essayer de repenser la façon dont vous stockez les fichiers. Les demandes S3 sont assez bon marché ... vous devez faire beaucoup de demandes.

2
bwight

J'ai utilisé ce service pour décompresser des fichiers remplis de milliers de fichiers image minuscules, chaque Zip que je télécharge est d'environ 4 Go et coûte environ 1 $ pour décompresser en utilisant http://www.cloudzipinc.com/service/s3_unzip , cela pourrait peut-être aider quelqu'un.

Cela dit, vous pourriez trouver plus facile d'utiliser Python avec la bibliothèque Boto. Cela fonctionnera beaucoup plus efficacement que PHP.

1
Henry Cullen