2012-06-08 8 views
15

Ho un file su Amazon S3 che ha il suffisso ".bin.gz". Voglio che i browser Web lo trattino come un file HTML gzip. Quindi, sono in grado di accedere alla console Web di Amazon S3 (https://console.aws.amazon.com/s3/home) e accedere al file e selezionarlo. Lì, sotto proprietà, posso andare alla scheda Metadati e aggiungere le seguenti direttive:Cercando di impostare i metadati sul file Amazon S3 utilizzando s3cmd

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

Questo funziona come previsto. Questa è la parte facile.

Ora, mi piacerebbe fare la stessa cosa con centinaia (o forse milioni) di file nel momento in cui sono PUT su S3.

Ho provato a usare s3cmd con l'opzione --add-header, tuttavia questo mi dà un errore di firma quando provo ad impostare il Content-Type. Inoltre, sono abbastanza sicuro che l'operazione avrà effetto solo sulle intestazioni inviate al momento dell'operazione PUT e non sui metadati archiviati con il documento.

Quindi, sto cercando un modo per farlo, idealmente con s3cmd. Se ciò non fosse possibile, sarei grato se qualcuno potesse suggerire una libreria python in grado di applicare i metadati a un file su s3.

Ci deve essere un modo per farlo senza doverlo impostare manualmente nella console.

risposta

22

Usa -m per impostare il tipo MIME (che sarà inviato come intestazione Content-Type durante le richieste successive:.

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

Grazie per la risposta rapida ho provato e il tipo di contenuto del file caricato rimane "application/octet-stream" – chaimp

+1

Capito, grazie! Ho solo bisogno di cambiare 'guess_mime_type = False' nel mio file di configurazione s3 – chaimp

+0

@jeffp Sì, credo di avere già quell'impostazione come' False'. Probabilmente puoi specificare un flag per non indovinare il tipo MIME ogni volta che si esegue il comando anche se si desidera lasciare l'impostazione predefinita. – Paulpro