【问题标题】:What type of S3 IAM action do I need to copy a file?复制文件需要什么类型的 S3 IAM 操作?
【发布时间】:2018-06-01 07:47:40
【问题描述】:

我能够在我的存储桶上使用get_objectput_object 获取对象,但无法执行copy_object。目前使用 Python 的 Boto3。我看到我的 IAM 操作允许 get*put 但我还需要什么?

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

copy_source = {
    'Bucket': 'mybucket',
    'Key': 's3/B.csv'
}
response = client.copy_object(Bucket=bucket, CopySource=copy_source, Key='test/copied.csv')

【问题讨论】:

  • "无法执行 copy_object" - 编辑您的问题以包含您收到的任何错误/消息。以及导致它的代码。
  • 您在源存储桶和目标存储桶中都拥有 IAM 权限吗?
  • 是的,我已经尝试过,源存储桶和目标存储桶是同一个存储桶并出现此错误
  • 猜测一下,HeadObject。尝试使用 Head* 和 List*。
  • 如果您不是存储桶拥有者,请检查您的存储桶政策。更好的是,在这里发布存储桶策略;只要您屏蔽所有唯一 ID,就无需担心存储桶策略的保密性。

标签: python-3.x amazon-web-services amazon-s3 boto3 amazon-iam


【解决方案1】:

这是基本的存储桶策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DaveBucketAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::AccountB-ID:user/Dave"
            },
            "Action":   ["s3:ListObject", "s3:PutObject","s3:GetObject"],
            "Resource": [
                "arn:aws:s3:::examplebucket/*",
                "arn:aws:s3:::examplebucket/"]
        }
    ]
}

您始终可以使用Policy simulator 来检查用户访问权限。你也可以使用扣分法,即先用"Action" : "s3:*"打开所有访问权限,确保你的用户没有问题,然后逐个关闭访问权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2016-12-21
    • 2013-07-09
    相关资源
    最近更新 更多