amazon-s3 - PUT/同步所需的 s3cmd S3 权限

标签 amazon-s3 amazon-web-services s3cmd

在迁移到 AWS EC2 时,我有充分的理由想限制实例的用户权限。实例需要做的一件事是访问 S3 上的文件并在那里写入文件。但是,如果不向该用户授予所有权限,我无法找到任何方法来实现此目的

s3cmd 允许我在我授予策略权限的 s3 存储桶上调用“ls”和“du”,但在尝试与这些文件夹之一进行 PUT/同步时总是失败并出现 403 错误。如果我使用我的 root 凭据,传输就会直接完成。

所以,我不明白为什么如果我向用户授予所述存储桶的所有权限,它就无法 PUT,但如果我授予它 arn:aws:s3:::* (所有桶)然后就可以了。对我来说毫无意义。

以前有其他人处理过这个问题吗?

最佳答案

尝试这样的事情。我认为问题是您需要 s3:ListAllMyBuckets 和 s3:ListBuckets 才能使 s3cmd 正常工作。不知道为什么,但除非它可以获得存储桶列表,否则它不会工作。第一次尝试使用 s3cmd 的权限时,我遇到了同样的问题,这就是解决方案。

{
  "Statement": [
    {
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Action": [ 
          "s3:ListBucket", 
          "s3:PutObject",
          "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": [
          "arn:aws:s3:::bucket/path", 
          "arn:aws:s3:::bucket/path/*"
      ]
    }
  ]
}

编辑我添加了 s3:PutObjectAcl 操作,这是较新版本的 s3cmd 所需的操作,如下面 Will Jessop 所述。

关于amazon-s3 - PUT/同步所需的 s3cmd S3 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603583/

相关文章:

amazon-web-services - 使用 FindInMap 进行多层引用时,堆栈创建会出现错误

amazon-web-services - 添加回声/日期时,s3cmd 不作为 cron 任务工作

python-3.x - 将 s3 中的图像与 SageMaker 一起使用,无需 .lst 文件

javascript - 使用 nodejs 和 knox 保存来自 s3 的传入文件?

python - 使用 Python 在无需身份验证的情况下下载公共(public) S3 存储桶上的文件

perl - s3cmd目录列表-仅文件名-perl一线?

ubuntu - 使用 s3cmd 在 2 个 s3 存储桶之间同步不起作用

amazon-web-services - “指定的存储桶不存在”错误 - S3 存储桶的策略禁止从特定 IP 上传

node.js - 从 Node 强大的文件上传访问原始文件流

python - 给定 archive_id,我如何将存档从 AWS Glacier 移动到 S3 存储桶?