2016-12-07 34 views
2

我寫過這段代碼,應該在S3中執行復制。無法使用boto3執行s3複製

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) 

但我得到的錯誤是

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

雖然我有機會獲得S3。如果我做了上傳或列表操作,它就可以工作。只有copy_object引發此錯誤。關於爲什麼這不起作用,我正在用盡想法。

+1

您正在運行的IAM角色是否允許複製源對象的對象並允許寫入目標存儲桶? – jarmod

+0

您可以使用AWS CLI嘗試它 - 即'aws s3 cp s3:// source-bucket-name/key s3 // target-bucket-name/key'?這將允許您首先在沒有boto的情況下解決任何身份驗證問題。 – stdunbar

+0

是的,我可以把它與CLI –

回答

0

所以問題是我試圖訪問錯誤的存儲桶。因此錯誤。所以錯誤實際上是正確的。