首页 文章

迁移S3存储桶错误

提问于
浏览
0

我想将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):拒绝访问

2 回答

  • 0

    您的存储桶策略似乎是正确的 . 请验证您是否正在使用root帐户,就像您的存储桶策略中指定的那样 . 此外,您可能需要检查目标存储桶上是否存在任何拒绝存储桶策略 .

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

  • 0

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

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

    如果要为IAM用户分配权限,则不要创建 Bucket Policy ,而是为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 命令也应该起作用 .

相关问题