Remplir un multipart_upload avec boto3?
Essayé ceci:
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')
Résultat: 5.9 concert de fichier sur s3. Ne semble pas contenir plusieurs parties.
J'ai trouvé cet exemple, mais part
n'est pas défini.
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)
Question: est-ce que quelqu'un sait comment utiliser le multipart télécharger avec boto3?
viens de voir votre question lors de la recherche d'un autre sujet, vous voudrez peut-être avoir un coup d'oeil à s3.transfert qui semblent à la poignée multipart automatiquement: boto3.readthedocs.org/en/latest/_modules/boto3/s3/transfer.html . (Jamais testé). Notez également que lors de plusieurs parties, vous ne verrez pas en plusieurs parties sur le S3, mais un seul fichier. Comme par AWS documentation: Après que toutes les parties de l'objet sont chargés, Amazon S3 assemble ces pièces et crée l'objet
Plus tôt à l'aide de boto2x nous avons été en mesure de définir chunk_size mais avec boto3 nous n'avons pas d'autre option pour définir la chunk_size. Je pense qu'il parle d'elle. boto3.readthedocs.io/en/latest/reference/services/...
Plus tôt à l'aide de boto2x nous avons été en mesure de définir chunk_size mais avec boto3 nous n'avons pas d'autre option pour définir la chunk_size. Je pense qu'il parle d'elle. boto3.readthedocs.io/en/latest/reference/services/...
OriginalL'auteur blehman | 2015-12-16
Vous devez vous connecter pour publier un commentaire.
Je vous conseille d'utiliser boto3.s3.transfert à cette fin. Voici un exemple:
OriginalL'auteur deadcode
Pourquoi ne pas utiliser l'option copier dans boto3?
Il y a des détails sur la façon d'initialiser s3 objet et évidemment d'autres options pour l'appel disponible ici boto3 docs.
Non, ce n'est pas le cas. Car il effectue un multipart copie, il permet une plus grande taille de 5 GO.
au moment de mon commentaire, qui n'était pas le cas. J'étais en train de faire exactement cela, et d'obtenir des échecs en raison de la taille du fichier. J'ai eu à mettre en œuvre multi-parties de télécharger à la main. Je vois que le s3 client de la méthode de copie de la documentation indique maintenant multipart est automatique.
OriginalL'auteur Gourav Sengupta
Dans votre extrait de code, devrait à l'évidence être
part
->part1
dans le dictionnaire. En général, vous avez plusieurs parties (sinon, pourquoi utiliser une partie multi-upload), et le'Parts'
liste contiendrait un élément pour chaque partie.Vous pouvez également être intéressé par le nouveau pythonic interface de traiter avec la S3: http://s3fs.readthedocs.org/en/latest/
OriginalL'auteur mdurant