2013-09-23 6 views
6
import boto 
conn = boto.connect_s3('', '') 

mybucket = conn.get_bucket('data_report_321') 

Posso scaricare il file da un bucket utilizzando il seguente codice.Carica un file utilizzando boto

for b in mybucket: 
    print b.name 
    b.get_contents_to_filename('0000_part_00', headers=None, cb=None, num_cb=10, torrent=False, version_id=None, res_download_handler=None, response_headers=None) 

Ma sono non in grado di caricare un file. Viene visualizzato un errore: AttributeError: l'oggetto 'str' non ha attributo 'tell'

send_file né le funzioni set_contents funzionano come previsto.

for b in mybucket: 
    b.send_file('mytest.txt', headers=None, cb=None, num_cb=10, query_args=None, chunked_transfer=False, size=None) 
    b.set_contents_from_file('mytest.txt', headers=None, replace=True, cb=None, num_cb=10, policy=None, md5=None, reduced_redundancy=False, query_args=None, encrypt_key=False, size=None, rewind=False) 

Come faccio a caricare un file dalla directory corrente di server locale per S3 secchio utilizzando boto?


Aggiornamento: Ho bisogno di dichiarare la chiave (nome del file) del file caricato prima prima di chiamare la funzione set_contents_from_filename.

k = boto.s3.key.Key(mybucket) 
k.key = 'uploaded_file.txt' 
k.set_contents_from_filename("myteswt.txt") 

risposta

-2

È possibile utilizzare questo script utility: https://github.com/TimelyToga/upload_s3

python upload_s3.py <filename> [key_to_upload_as] 

Che vi caricare qualsiasi file in un secchio S3 che si specifica.

Sebbene, quando si carica set_contents_from_file prende un oggetto python File.