2012-06-08 12 views
15

Tengo un archivo en amazon S3 que tiene el sufijo ".bin.gz". Quiero que los navegadores web lo traten como un archivo HTML comprimido. Por lo tanto, puedo acceder a la consola web de Amazon S3 (https://console.aws.amazon.com/s3/home) y navegar hasta el archivo y seleccionarlo. Allí, en propiedades, puedo ir a la pestaña Metadatos y agregar las siguientes directivas:Intentando establecer metadatos en el archivo de Amazon S3 usando s3cmd

Content-Type: text/html 
Content-Encoding: gzip 

Esto funciona como se esperaba. Esa es la parte fácil.

Ahora, me gustaría hacer lo mismo con cientos (o posiblemente millones) de archivos en el momento en que se PONEN en S3.

He intentado usar s3cmd con la opción --add-header, sin embargo, eso me da un error de firma cuando trato de configurar el tipo de contenido. Además, estoy bastante seguro de que hacer eso solo afectará a los encabezados que se envían en el momento de la operación PUT, y no a los metadatos que se almacenan con el documento.

Por lo tanto, estoy buscando una manera de hacerlo, idealmente con s3cmd. Si eso no es posible, agradecería que alguien sugiriera una biblioteca de Python capaz de aplicar metadatos a un archivo en s3.

Debe haber una forma de hacerlo sin tener que configurarlo manualmente en la consola.

Respuesta

22

Uso -m para establecer el tipo MIME (que será enviado como el encabezado Content-Type en las solicitudes posteriores:.

s3cmd -m text/html --add-header='Content-Encoding: gzip' put [files] s3://... 
+1

Gracias por la respuesta rápida que he intentado y el tipo de contenido del archivo cargado se mantiene como "application/octet-stream" – chaimp

+1

Lo tengo, gracias! Solo necesitaba cambiar 'guess_mime_type = False' en mi archivo de configuración s3 – chaimp

+0

@jeffp Sí, supongo que ya tengo esa configuración como' False'. Probablemente pueda especificar un marca para no adivinar el tipo MIME cada vez que ejecutas el comando también si quieres dejar esa configuración de manera predeterminada. – Paulpro