AWS S3 操作策略 CLI 与控制台将对象粘贴到一个存储桶中



我创建了一个策略:

"Effect": "Allow",
"Action": "s3:*",
"Resource": [
    "arn:aws:s3:::my-bucket",
    "arn:aws:s3:::my-bucket/*"
]

并且策略的用户可以使用 CLI 在指定的存储桶内移动对象。但是,他们无法使用控制台在存储桶内移动(复制/剪切然后粘贴(对象。尝试粘贴对象时,他们总是出现错误"访问被拒绝"。

在一一执行操作后,我发现所有存储桶(arn:aws:s3:::*(都需要GetBucketLocationListAllMyBuckets才能在一个存储桶内复制粘贴/剪切粘贴。因此,添加以下操作有效:

"Effect": "Allow",
"Action": [
  "s3:GetBucketLocation",
  "s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"

我的问题是:为什么 CLI 不需要 2 个操作来允许用户在一个存储桶内移动对象,但控制台需要它们?

这是因为 Amazon S3 控制台调用这些特定的 API。

它可能调用GetBucketLocation因为 AWS API 调用需要发送到包含目标存储桶的区域,因此它需要知道目标存储桶的区域。

它在显示存储桶的完整列表时调用ListAllMyBuckets。奇怪的是,它在特定存储桶需要这些权限。它应该只在转到 S3 控制台的"主页"时需要它,而不是在复制对象时特别需要它。

当然,AWS CLI 不会列出存储桶,因此它不会调用ListAllMyBuckets

您可以使用 AWS CloudTrail 查看对您的 AWS 账户进行的 API 调用,包括控制台和 AWS CLI 的调用。

相关内容

  • 没有找到相关文章

最新更新