2016-12-07 1 views
2

J'ai écrit ce morceau de code qui devrait faire une copie en S3.Impossible d'effectuer la copie s3 en utilisant boto3

import boto3  
s3client = boto3.client('s3', config['AWS']['Region']) 
source = {'Bucket': bucket_name, 'Key': source_key} 
metadata = {'a':'b'} 
s3client.copy_object(Bucket=bucket_name, CopySource=source, Key=target_key, Metadata=metadata) 

Mais l'erreur que je reçois est

ClientError: An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied

Bien que j'avoir accès à s3. Si je fais une opération de téléchargement ou de liste, cela fonctionne. Seul l'objet copy_object renvoie cette erreur. Je suis à court d'idées sur pourquoi cela ne fonctionne pas.

+1

Le rôle IAM que vous exécutez permet-il de copier l'objet de l'objet source et d'autoriser l'écriture dans le compartiment cible? – jarmod

+0

Pouvez-vous l'essayer avec l'AWS CLI - c'est-à-dire 'aws s3 cp s3: // nom-du-compartiment-source/clé s3 // target-bucket-name/key'? Cela vous permettra de résoudre tout problème d'authentification sans boto dans le mixage en premier. – stdunbar

+0

Ouais je suis capable de le copier avec le cli –

Répondre

0

Le problème était que j'essayais d'accéder au mauvais compartiment. Et d'où l'erreur. Ainsi, l'erreur était réellement correcte.