これは私が働いているコードです
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」のような「ディレクトリ」を作成しました。これらは仮想ディレクトリにすぎないことを知っています。
私の質問は、このアップロードをバケットルートではなく、S3のbucket/images/holiday仮想ディレクトリに具体的に変更するにはどうすればよいですか?
アップロードする前に、キー名の前に仮想ディレクトリパスを追加するだけです。例えば:
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にある後