Füge ein multipart_upload mit boto3 aus?

Versuchte dies:

import boto3 from boto3.s3.transfer import TransferConfig, S3Transfer path = "/temp/" fileName = "bigFile.gz" # this happens to be a 5.9 Gig file client = boto3.client('s3', region) config = TransferConfig( multipart_threshold=4*1024, # number of bytes max_concurrency=10, num_download_attempts=10, ) transfer = S3Transfer(client, config) transfer.upload_file(path+fileName, 'bucket', 'key') 

Ergebnis: 5,9 Gig Datei auf s3. Es scheint nicht, mehrere Teile zu enthalten.

Ich habe dieses Beispiel gefunden , aber part ist nicht definiert.

 import boto3 bucket = 'bucket' path = "/temp/" fileName = "bigFile.gz" key = 'key' s3 = boto3.client('s3') # Initiate the multipart upload and send the part(s) mpu = s3.create_multipart_upload(Bucket=bucket, Key=key) with open(path+fileName,'rb') as data: part1 = s3.upload_part(Bucket=bucket , Key=key , PartNumber=1 , UploadId=mpu['UploadId'] , Body=data) # Next, we need to gather information about each part to complete # the upload. Needed are the part number and ETag. part_info = { 'Parts': [ { 'PartNumber': 1, 'ETag': part['ETag'] } ] } # Now the upload works! s3.complete_multipart_upload(Bucket=bucket , Key=key , UploadId=mpu['UploadId'] , MultipartUpload=part_info) 

Frage: Wer weiß, wie man den Multipart-Upload mit boto3 benutzt?

2 Solutions collect form web for “Füge ein multipart_upload mit boto3 aus?”

In deinem Code-Snippet sollte eindeutig part -> part1 im Wörterbuch sein. Normalerweise hättest du mehrere Teile (ansonsten warum mehrteiliger Upload), und die 'Parts' Liste würde ein Element für jedes Teil enthalten.

Sie interessieren sich auch für die neue pythonische Schnittstelle zum Umgang mit S3: http://s3fs.readthedocs.org/de/latest/

Ich würde Ihnen raten, boto3.s3.transfer zu diesem Zweck zu verwenden. Hier ist ein Beispiel:

 import boto3 def upload_file( filename ): session = boto3.Session() s3_client = session.client( 's3' ) try: print "Uploading file:", filename tc = boto3.s3.transfer.TransferConfig() t = boto3.s3.transfer.S3Transfer( client=s3_client, config=tc ) t.upload_file( filename, 'my-bucket-name', 'name-in-s3.dat' ) except Exception as e: print "Error uploading: %s" % ( e ) 
  • S3-Objekt als String mit Boto3 öffnen
  • Mocking boto3 S3 Client-Methode Python
  • Wie man Befehle auf AWS Instanz mit Boto3 ausführt
  • Listing Inhalt eines Eimers mit boto3
  • Ist es möglich, den Inhalt einer S3-Datei zu laden, ohne sie mit boto3 herunterzuladen?
  • Django StreamingHttpResponse Format Fehler
  • Implementierung von USER_SRP_AUTH mit python boto3 für AWS Cognito
  • Wie kann man ein SECRET_HASH für AWS Cognito mit boto3 erstellen?
  • Boto3 zum Herunterladen aller Dateien aus einem S3 Bucket
  • Wie benutzt man botocore.response.StreamingBody als stdin PIPE
  • Amazon AWS Cognito und Python Boto3, um AWS-Verbindung aufzubauen und Datei in Bucket hochzuladen
  • Python ist die beste Programmiersprache der Welt.