【问题标题】:Unable to perform s3 copy using boto3无法使用 boto3 执行 s3 复制
【发布时间】:2016-12-17 00:46:19
【问题描述】:

我已经编写了这段代码,应该在 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:调用CopyObject操作时发生错误(AccessDenied):访问被拒绝

虽然我确实可以访问 s3。如果我进行上传或列表操作,它会起作用。只有 copy_object 会引发此错误。我对为什么这不起作用的想法已经不多了。

【问题讨论】:

  • 您运行的 IAM 角色是否允许复制源对象并允许写入目标存储桶?
  • 您可以使用 AWS CLI 尝试一下吗?即“aws s3 cp s3://source-bucket-name/key s3//target-bucket-name/key”?这将允许您在没有 boto 的情况下先解决任何身份验证问题。
  • 是的,我可以用 cli 复制它
  • @jarmod 是的,它可以访问,因为我可以通过 cli 进行操作
  • AccessDenied 表示你没有权限,所以你需要弄清楚是API权限问题,bucket权限问题,编码问题,还是你的代码运行环境的问题(即其有效凭证)。可能值得使源对象世界可读,目标存储桶暂时可世界写入并重新测试。然后从那里开始工作。

标签: amazon-web-services amazon-s3 boto boto3


【解决方案1】:

所以问题是我试图访问错误的存储桶。因此错误。所以错误实际上是正确的。

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2016-10-20
    • 2021-12-31
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多