【问题标题】:Migrate S3 bucket error迁移 S3 存储桶错误
【发布时间】:2016-06-14 10:14:44
【问题描述】:

我想将 s3 存储桶从一个帐户迁移到另一个帐户,这是我的存储桶策略

{
    "Version": "2008-10-17",
    "Id": "Policy1335892530063",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxxxxxxx:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::test123",
                "arn:aws:s3:::test123/*"
            ]
        },
        {
            "Sid": "Stmt1335892150622",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxxxxxx:root"
            },
            "Action": [
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::test123"
        },
        {
            "Sid": "Stmt1335892526596",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::xxxxxxxxx:root"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::test123/*"
        }
    ]
}

这是我的 IAM 用户政策

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::*"]
    }
  ]
}

当我运行命令时

aws s3 sync s3://test123 s3://abc-test123

我得到错误

调用 CopyObject 操作时出现客户端错误 (AccessDenied):访问被拒绝

【问题讨论】:

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


    【解决方案1】:

    您的存储桶策略似乎是正确的。 请验证您使用的是根帐户,正如您的存储桶策略中指定的那样。 此外,您可能需要检查目标存储桶上是否没有任何被拒绝的存储桶策略。

    如果没有任何帮助,您可以启用对您的存储桶的临时公共访问作为一种解决方法。是的,它不安全,但它应该适用于所有情况。

    【讨论】:

    • 我交叉检查了 root 帐户是否设置正确,我还尝试通过添加更多权限为每个人提供临时访问权限,但我仍然遇到同样的问题。目标存储桶上没有设置策略,它是新创建的。
    【解决方案2】:

    确保您为源存储桶(读取)和目标存储桶(写入)提供了足够的权限。

    如果您为拥有存储桶的账户使用 Root 凭据(通常不推荐),您甚至可能不需要存储桶策略 - 默认情况下,root 账户应具有必要的访问权限。

    如果您要为 IAM 用户分配权限,则不要创建 存储桶策略,而是自己为 IAM 用户分配权限。在这种情况下无需提供委托人。

    首先检查您是否有权列出两个存储桶:

    • aws s3 ls s3://test123
    • aws s3 ls s3://abc-test123

    然后检查您是否有权将文件从源复制到目标:

    • aws s3 cp s3://test123/foo.txt .
    • aws s3 cp foo.txt s3://abc-test123/foo.txt

    如果它们有效,那么sync 命令也应该有效。

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 2020-11-09
      • 2017-06-04
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2015-12-07
      相关资源
      最近更新 更多