Je veux copier un fichier d'un seau à un autre. Je reçois l'erreur suivante:
s3.meta.client.copy (source, dest)
TypeError: copy () prend au moins 4 arguments (3 donnés)
Je suis incapable de trouver une solution en lisant la documentation. Voici mon code:
#!/usr/bin/env python
import boto3
s3 = boto3.resource('s3')
source= { 'Bucket' : 'bucketname1','Key':'objectname'}
dest ={ 'Bucket' : 'Bucketname2','Key':'backupfile'}
s3.meta.client.copy(source,dest)
Tu peux essayer:
import boto3
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'mybucket',
'Key': 'mykey'
}
bucket = s3.Bucket('otherbucket')
bucket.copy(copy_source, 'otherkey')
ou
import boto3
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'mybucket',
'Key': 'mykey'
}
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')
Notez la différence dans les paramètres
Puisque vous utilisez une ressource de service s3, pourquoi ne pas utiliser sa propre méthode copy
à tout moment?
#!/usr/bin/env python
import boto3
s3 = boto3.resource('s3')
source= { 'Bucket' : 'bucketname1', 'Key': 'objectname'}
dest = s3.Bucket('Bucketname2')
dest.copy(source, 'backupfile')
c'est la syntaxe de docs
import boto3
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'mybucket',
'Key': 'mykey'
}
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')
Vous devez donner un seau de détection et une clé séparément . http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.copy