Boto – Загрузка файла в определенное место на Amazon S3

Это код, с которого я работаю

import sys import boto import boto.s3 # AWS ACCESS DETAILS AWS_ACCESS_KEY_ID = '' AWS_SECRET_ACCESS_KEY = '' bucket_name = AWS_ACCESS_KEY_ID.lower() + '-mah-bucket' conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT) uploadfile = sys.argv[1] print 'Uploading %s to Amazon S3 bucket %s' % \ (uploadfile, bucket_name) def percent_cb(complete, total): sys.stdout.write('.') sys.stdout.flush() from boto.s3.key import Key k = Key(bucket) k.key = 'my test file' k.set_contents_from_filename(testfile, cb=percent_cb, num_cb=10) 

На моем S3 я создал «каталоги», как это «bucket / images / holiday». Я знаю, что это только виртуальные каталоги.

Мой вопрос в том, как я могу изменить эту загрузку специально для виртуального каталога bucket / images / holiday на S3, а не из корня ведра?

2 Solutions collect form web for “Boto – Загрузка файла в определенное место на Amazon S3”

Все, что вам нужно сделать, это довести путь к виртуальному каталогу до имени ключа перед загрузкой. Например:

 key_name = 'my test file' path = 'images/holiday' full_key_name = os.path.join(path, key_name) k = bucket.new_key(full_key_name) k.set_contents_from_filename(...) 

Возможно, вам придется немного изменить это приложение, но, надеюсь, это даст вам основную идею.

Вы также можете использовать это:

 from boto.s3.key import Key bucket = conn.get_bucket('images') k = Key(bucket) k.key = 'holiday/my_test_file.txt' 

Это работает в моем s3_percent_uploader

 python.exe s3_percent_uploader.py test_upload.txt testbucket test/upload.txt 

после загрузки файла будет в testbucket / test / upload.txt

Python - лучший язык программирования в мире.