2016-02-10 2 views
0

Я нашел скрипт на github, чтобы загрузить папку S3 используя бНевозможно загрузить на s3, используя Boto

import boto 
import boto.s3 

import os.path 
import sys 

# Fill these in - you get them when you sign up for S3 
AWS_ACCESS_KEY_ID = '' 
AWS_ACCESS_KEY_SECRET = '' 
# Fill in info on data to upload 
# destination bucket name 
bucket_name = 'jwu-testbucket' 
# source directory 
sourceDir = 'testdata/' 
# destination directory name (on s3) 
destDir = '' 

#max size in bytes before uploading in parts. between 1 and 5 GB recommended 
MAX_SIZE = 20 * 1000 * 1000 
#size of parts when uploading in parts 
PART_SIZE = 6 * 1000 * 1000 

conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY_SECRET) 

bucket = conn.create_bucket(bucket_name, 
     location=boto.s3.connection.Location.DEFAULT) 


uploadFileNames = [] 
for (sourceDir, dirname, filename) in os.walk(sourceDir): 
    uploadFileNames.extend(filename) 
    break 

def percent_cb(complete, total): 
    sys.stdout.write('.') 
    sys.stdout.flush() 

for filename in uploadFileNames: 
    sourcepath = os.path.join(sourceDir + filename) 
    destpath = os.path.join(destDir, filename) 
    print 'Uploading %s to Amazon S3 bucket %s' % \ 
      (sourcepath, bucket_name) 

    filesize = os.path.getsize(sourcepath) 
    if filesize > MAX_SIZE: 
     print "multipart upload" 
     mp = bucket.initiate_multipart_upload(destpath) 
     fp = open(sourcepath,'rb') 
     fp_num = 0 
     while (fp.tell() < filesize): 
      fp_num += 1 
      print "uploading part %i" %fp_num 
      mp.upload_part_from_file(fp, fp_num, cb=percent_cb, num_cb=10, size=PART_SIZE) 

     mp.complete_upload() 

    else: 
     print "singlepart upload" 
     k = boto.s3.key.Key(bucket) 
     k.key = destpath 
     k.set_contents_from_filename(sourcepath, 
       cb=percent_cb, num_cb=10) 

При запуске его, я получил эту ошибку:

Traceback (most recent call last): 
    File "upload_to_s3.py", line 29, in <module> 
    bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT) 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 613, in create_bucket 
    data=data) 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 665, in make_request 
    retry_handler=retry_handler 
    File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1071, in make_request 
    retry_handler=retry_handler) 
    File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1030, in _mexe 
    raise ex 
socket.gaierror: [Errno -2] Name or service not known 

Я изменил DEFAULT к «s3-ес-запад-1» не работает, и я удалил укомплектовать по умолчанию, чтобы сделать это следующим образом:

bucket = conn.create_bucket(bucket_name) 

и У меня тоже есть ошибка.

ответ

0

Это работает, если вы изменили команду соединения для использования conn = boto.s3.connect_to_region('eu-west-1', ...)?

boto.s3.connection.Location.EU вместо DEFAULT также может стоить попробовать - я не уверен, как вы использовали «s3-eu-west-1». (Как строка?)

+0

Все еще были ошибки. – 4m1nh4j1

+0

Можете ли вы разрешить конечные точки? Попробуйте 'ping s3-eu-west-1.amazonaws.com'. –

+0

'64 байта от s3-eu-west-1.amazonaws.com (54.231.131.83): icmp_seq = 1 ttl = 44 time = 24.7 ms' – 4m1nh4j1

Смежные вопросы