2012-03-15 76 views
14

Tengo una aplicación web Codeigniter que está cargando muchos archivos pequeños cada hora a Amazon S3, lo que está causando que mis cargos por solicitud S3 se disparen muy rápido. Una forma de superar esto será cerrar el archivo, subir el archivo zip a S3 y luego descomprimirlo cuando esté en S3.Carga de archivos ZIP en S3, uso EC2 para descomprimir

¿Se puede hacer esto con EC2? ¿O hay un mejor método para lograr esto? ¡¡Gracias!!

EDITAR: Si tuviera que usar EC2, ¿uso PHP para activar la creación de una instancia EC2, subir el archivo PHP requerido para descomprimir los archivos comprimidos, copiar los archivos descomprimidos a S3 y luego destruir la instancia EC2?

+0

no se podrán almacenar archivos comprimidos en S3? –

+0

Quiero que los archivos descomprimidos individuales estén disponibles en S3. La razón para comprimirlo (100 archivos pequeños en 1 archivo zip) es reducir el número de solicitudes 'PUT', lo que aumenta significativamente los costos del uso de S3. – Nyxynyx

+1

Cargar archivos ZIP en S3 y descomprimirlos en EC2 para reducir sus costos no ayudará: aún le costará una solicitud PUT para cada archivo descomprimido que llegue a S3 desde EC2. – Daan

Respuesta

23

Si tiene una máquina EC2 en la misma región, le sugiero que la cargue allí con cremallera y luego la suelte en s3 desde allí descomprimida. S3 no puede descomprimirlo por sí solo ya que es todo estático.

No hay cargos entre ec2 y s3 ​​por lo que ec2 puede manejar la descompresión y luego escribirlo en su cubo s3 sin cargos de transferencia adicionales.

+2

El ancho de banda es gratuito, pero pagará por PUT (actualmente $ 0.005 por cada 1,000 solicitudes). Si tiene un archivo comprimido con 10,000 de archivos pequeños, la carga costará algo y, lo que es más importante, llevará un tiempo. – Ben

+1

Estimado @Akshat, por favor comparta el enlace o el código para escribir una carpeta (que acaba de descomprimir) en S3 de EC2, si la tiene, será muy apreciada –

2

S3 es solo de almacenamiento. Cualquier archivo que cargue es el archivo que está almacenado. No puede cargar un archivo zip y extraerlo una vez que esté en S3. Si escribió la aplicación, lo mejor que puedo decir es intentar rediseñar la forma de almacenar los archivos. Las solicitudes S3 son bastante baratas ... debe hacer muchas solicitudes.

2

He estado utilizando este servicio para descomprimir archivos llenos de miles de pequeños archivos de imagen, cada archivo zip que subo tiene aproximadamente 4 GB y cuesta alrededor de $ 1 para descomprimir usando http://www.cloudzipinc.com/service/s3_unzip, tal vez eso podría ayudar a alguien.

Dicho esto, puede que le resulte más fácil usar Python con la biblioteca Boto. Eso funcionará mucho más eficientemente que PHP.

Cuestiones relacionadas