amazon-web-services - 如何修复 AccessDenied 调用 CopyObject

标签 amazon-web-services amazon-s3 terraform aws-cli bucket

我正在尝试将文件从 A 帐户中的存储桶复制到另一个存储桶,但在 B 帐户中。当我尝试使用命令同步文件时
aws s3 sync s3://BUCKET_A s3://BUCKET_B
它返回以下输出:

copy failed: s3://BUCKET_A to s3://BUCKET_B An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied

这是附加到在 B 帐户中创建的用户的策略(将从存储桶 A 复制文件的位置):
{
    "Version": "2012-10-17",
    "Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "s3:ListBucket",
              "s3:GetObject",
              "s3:PutObject",
              "s3:PutObjectAcl"
          ],
          "Resource": [
              "arn:aws:s3:::BUCKET_A",
              "arn:aws:s3::: BUCKET_A/*"
          ]
      },
      {
          "Effect": "Allow",
          "Action": [
              "s3:ListBucket",
              "s3:GetObject",
              "s3:PutObject",
              "s3:PutObjectAcl"
          ],
          "Resource": [
              "arn:aws:s3:::BUCKET_B",
              "arn:aws:s3:::BUCKET_B/*"
          ]
      }
    ]
}

可能我错过了一些许可?我没有找到权限 CopyObject添加我的用户/存储桶策略

最佳答案

在您的 IAM 角色策略方面,您将需要以下内容:

  {
    "Version": "2012-10-17",
    "Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "s3:ListBucket",
              "s3:GetObject",
              "s3:PutObject",
              "s3:PutObjectAcl"
          ],
          "Resource": [
              "arn:aws:s3:::BUCKET_A",
              "arn:aws:s3::: BUCKET_A/*"
          ]
      },
      {
          "Effect": "Allow",
          "Action": [
              "s3:ListBucket",
              "s3:GetObject",
              "s3:PutObject",
              "s3:PutObjectAcl"
          ],
          "Resource": [
              "arn:aws:s3:::BUCKET_B",
              "arn:aws:s3:::BUCKET_B/*"
          ]
      }
    ]
}

您需要将这些权限添加到 BUCKET_B
{
         "Sid": "Example permissions",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::your_iam_policy"
         },
         "Action": [
              "s3:ListBucket",
              "s3:GetObject",
              "s3:PutObject",
              "s3:PutObjectAcl"
          ],
         ],
         "Resource": [
            "arn:aws:s3:::BUCKET_B"
         ]
      }

关于amazon-web-services - 如何修复 AccessDenied 调用 CopyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54874970/

相关文章:

php - 使用AWS SDK查询存储类别

azure - 应用服务 azurerm_monitor_autoscale_setting

terraform - 如何应用单个 Terraform 模块?

security - 为什么要将端口 80 转发到 8080?

java - 如何在 AWS 中处理大型 WAR 文件?

python - 确定文件夹或文件 key - Boto

azure - 如何在terraform中的for_each中编写条件

opengl - 使用 CentOS 在 AWS GPU 实例上运行 OpenGL

amazon-web-services - websocket api aws 问题中的查询字符串参数

python - 使用 Boto3 和 IAM 角色的 Python 中的 RDS 连接