it-swarm.com.de

wie man s3-objekt mit python boto3 von einem bucket in einen anderen kopiert

Ich möchte eine Datei von einem S3-Bucket in einen anderen kopieren. Ich erhalte folgende Fehlermeldung:

s3.meta.client.copy (Quelle, Ziel)
TypeError: copy () benötigt mindestens 4 Argumente (3 gegeben)

Ich kann durch das Lesen der Dokumente keine Lösung finden. Hier ist mein 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)
5
vishal.k

Du kannst es versuchen:

import boto3
s3 = boto3.resource('s3')
copy_source = {
      'Bucket': 'mybucket',
      'Key': 'mykey'
    }
bucket = s3.Bucket('otherbucket')
bucket.copy(copy_source, 'otherkey')

oder

import boto3
s3 = boto3.resource('s3')
copy_source = {
    'Bucket': 'mybucket',
    'Key': 'mykey'
 }
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')

Beachten Sie den Unterschied in den Parametern

14
Adarsh

Da Sie die s3-Service-Ressource verwenden, sollten Sie nicht die eigene copy-Methode verwenden.

#!/usr/bin/env python
import boto3
s3 = boto3.resource('s3')
source= { 'Bucket' : 'bucketname1', 'Key': 'objectname'}
dest = s3.Bucket('Bucketname2')
dest.copy(source, 'backupfile')
1
hjpotter92

dies ist die Syntax von docs

import boto3
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'mybucket',
'Key': 'mykey'
}
s3.meta.client.copy(copy_source, 'otherbucket', 'otherkey')

Sie müssen Detination Eimer und Schlüssel separat geben. http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.copy

0
Jibran