【发布时间】:2020-02-11 13:11:34
【问题描述】:
我有一个 S3 存储桶,其对象结构如下:
S3://0/10/20.txt (I have permission to list 20.txt)
S3://0/11/21.txt (I DON't have permission to list 21.txt)
S3://0/12/22.txt (I have permission to list 22.txt)
如何运行 AWS CLI 命令来列出此存储桶中我有权列出的所有对象?
我尝试运行以下命令并收到拒绝访问错误。
aws s3 ls s3://0/ --recursive
谢谢。
更新:
我应该明确表示我可以列出我有权列出的特定对象,如下所示:
aws s3 ls S3://0/10/20.txt (this works fine)
aws s3 ls s3://0/ --recursive (this does not work)
我的目标是列出我有权列出的存储桶中的对象。我对该命令 (aws s3 ls s3://0/ --recursive) 的预期结果是:
S3://0/10/20.txt
S3://0/12/22.txt
更新 2:
我认为 read 和 list 是相同的权限,但似乎不是。因此,我更新了我的描述以反映我真正想要的,即从存储桶中递归列出我有权列出的对象(忽略我无权列出的对象)。
【问题讨论】:
-
您对存储桶本身(而不是其中的项目)的权限如何?
-
您是否真的想知道您可以访问哪些文件,或者您只是想调试一个情况以找出您没有完全访问权限的原因?您应该首先查看存储桶策略,然后查看您自己的 IAM 用户的权限,以及对象本身的权限。您的最终目标是什么——您是否只想访问所有对象?
-
我的目标是仅列出存储桶中我有权读取的对象。我已经更新了我的问题。
-
我认为没有明确的答案。如果您可以调用
get-bucket-policy,您可以看到可以枚举哪些前缀,但即使这样,也完全可以授予获取对象的权限但不列出它。不过,我很想被证明是错误的。 -
我认为 read 和 list 是相同的权限,但似乎不是。我已经更新了我的问题。我只需要列出我有权列出的所有对象。
标签: amazon-web-services amazon-s3