aws s3 sync的最小大小是否有效?

时间:2018-05-02 11:10:43

标签: amazon-web-services amazon-s3 aws-cli

我需要将内容从我一直用到的S3存储桶(src-bucket)移动到新AWS账户(dst-bucket)中的新S3存储桶。据我所知,直截了当的做法是

aws s3 sync s3://src-bucket s3://dst-bucket --exclude "*" --include="important_prefix*"

但这只能起作用。对于对象的子集,我不断收到错误消息

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

我无法找到原因。

到目前为止,我可以看出所有无法同步的文件都相当小(小于700kb),而成功复制的文件至少每个MB几个。

s3 sync能够完成工作之前,是否必须满足一些最小对象大小(具有相对较高的默认值)?

更多信息

  • 我完全可以aws s3 cpaws s3api get-object有问题的对象。他们只是失败了aws s3 sync
  • 在这两个帐户中,我都拥有S3FullAccess权限
  • 的用户
  • 我将以下存储桶策略添加到src-bucket

    {
    "Version": "2012-10-17",
    "Statement": [
    {
      "Sid": "Example permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::newaccountid:user/myadminuser"
      },
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::src-bucket"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::newaccountid:user/myadminuser"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::src-bucket/*"
    }
    ]
    }
    
    • 我将aws s3 sync作为newaccountid:user / myadminuser
    • 运行

我可以使用新帐户中的用户浏览src-bucket,我可以上传和下载文件。运行最初提到的aws s3 sync命令会将几个100个对象从src-bucket复制到dst-bucket,但对于其他一些对象的数据库则会失败。

我尝试将不可同步的对象与我能够成功同步的对象进行比较。我在aws s3api get-object-acl中的许多对象上做了src-bucket。对于成功复制的和复制失败的ACL,它们的ACL看起来都一样:

{
    "Owner": {
        "ID": "reallylongidihadbashcomparethemformetomakesuretheyareidentical"
    },
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "reallylongidihadbashcomparethemformetomakesuretheyareidentical"
            },
            "Permission": "FULL_CONTROL"
        }
    ]
}

dst-bucket上,真正长的id是另一个,但除此之外,ACL看起来是一样的。

1 个答案:

答案 0 :(得分:2)

不,没有这样的事情。我正在纠正错误的事情。显然s3 sync"取决于"能够复制对象'标签,以及他们的数据。阅读对象' tags是读取对象数据的独立权限。在向新用户授予权限时,我错过了s3:GetObjectTagging操作。

显然"他们"在开始使用对象标签的同时开始将数据拆分成更小的块。