Amazon web services 将S3 bucket配置为只允许匿名用户在某些目录上使用getObject

Amazon web services 将S3 bucket配置为只允许匿名用户在某些目录上使用getObject,amazon-web-services,amazon-s3,file-permissions,Amazon Web Services,Amazon S3,File Permissions,我试图为AmazonS3的权限做一些详细的配置,但它不起作用 我使用一个bucket来存储网站的文件。有些文件是公开的,所以每个人都可以看到它们。但是这些文件的一部分应该是私有的,并且存储在特定的目录中。这些私人文件应根据某些条件(如果用户购买了图像)提供给网站用户。在这种情况下,网站将向用户发送文件 目前,似乎所有人都可以访问所有文件,尽管这个桶不是公共的。在访问控制列表中,我只授予网站使用的用户与API通信的权利 但是如果你有直接的URL,匿名用户可以看到和下载文件。我觉得这很奇怪,但对公共

我试图为AmazonS3的权限做一些详细的配置,但它不起作用

我使用一个bucket来存储网站的文件。有些文件是公开的,所以每个人都可以看到它们。但是这些文件的一部分应该是私有的,并且存储在特定的目录中。这些私人文件应根据某些条件(如果用户购买了图像)提供给网站用户。在这种情况下,网站将向用户发送文件

目前,似乎所有人都可以访问所有文件,尽管这个桶不是公共的。在访问控制列表中,我只授予网站使用的用户与API通信的权利

但是如果你有直接的URL,匿名用户可以看到和下载文件。我觉得这很奇怪,但对公共文件来说这不是问题,我认为这很正常,我更改了私有目录的Bucket策略,如下所示:

{
        "Sid": "Stmt1538509082866",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": [
            "arn:aws:s3:::bucket-name/private/*"
        ]
 }
但这条规则剥夺了我的特定用户查看和下载文件的权利。我试着把许可证给他,但这样不行。我想我可以使用一个条件,但是,显然不是针对特定的用户

我最近一直在做这个项目,我没有初始化bucket,所以,也许我看到了一个错误的配置


谢谢。

您要做的第一件事是理解为什么这并没有像预期的那样起作用——S3中的所有内容默认都是私有的,因此必须有一些东西使内容公开。检查单个对象权限。如果他们是公开的,那么解决这个问题比试图用一个不必要的政策声明来修补它更符合你的最大利益。非常感谢你的回复。我验证了,事实上,我的文件拥有匿名个人的所有读取权限。。。。。。。现在,我需要找到如何在不手动更改每个文件的权限的情况下轻松修复这些文件。这些文件必须单独修复,但不一定是手动修复。。。应该可以使用aws cli编写此脚本。