2016-09-01 2 views
5

Alles mit meinem Code funktioniert. Die einzige pitfall ich zur Zeit bin vor ist, dass ich nicht den Ordner in der S3-Bucket angeben, die Ich mag würde in meiner Datei platzieren Hier ist, was ich habe.Hochladen von Datei in bestimmten Ordner in S3 mit Boto3

s3.meta.client.upload_file('/tmp/'+filename, '<bucket-name>', filename) 

Ich habe beide versucht:

s3.meta.client.upload_file('/tmp/'+filename, '<bucket-name>/folder/', filename) 

und:

s3.meta.client.upload_file('/tmp/'+filename, '<bucket-name>', '/folder/'+filename) 

wenn jemand irgendwelche Tipps hat, wie diese in einem bestimmten Ordner zu leiten (falls dies möglich ist) lass es mich wissen!

+0

S3 hochladen, ist ein Objektspeicher, ist es nicht mit „Ordnernamen“ befassen . Der gesamte "Pfad" muss als Teil des Schlüsselnamens verwendet werden. – mootmoot

Antwort

11

Sie müssen den Schlüsselwert nicht als absoluten Pfad übergeben. Folgendes sollte funktionieren:

upload_file('/tmp/' + filename, '<bucket-name>', 'folder/{}'.format(filename)) 
2

Ich habe mein Problem herausgefunden. Ich hatte die richtige Idee mit der /folder/ Option im Schlüsselparameterbereich, aber ich brauchte nicht die erste / Vielen Dank! Dies ist im Wesentlichen die gleiche Idee wie der Vorschlag von hjpotter92.

0

Dies ist die Methode, die Pflege von verschachtelter Verzeichnisstruktur stattfinden wird, und wird ein vollständiges Verzeichnis mit Boto

def upload_directory(): 
    for root, dirs, files in os.walk(settings.LOCAL_SYNC_LOCATION): 
     nested_dir = root.replace(settings.LOCAL_SYNC_LOCATION, '') 
     if nested_dir: 
      nested_dir = nested_dir.replace('/','',1) + '/' 

     for file in files: 
      complete_file_path = os.path.join(root, file) 
      file = nested_dir + file if nested_dir else file 
      print "[S3_UPLOAD] Going to upload {complete_file_path} to s3 bucket {s3_bucket} as {file}"\ 
       .format(complete_file_path=complete_file_path, s3_bucket=settings.S3_BUCKET, file=file) 
      s3_client.upload_file(complete_file_path, settings.S3_BUCKET, file) 
Verwandte Themen