在 Amazon S3 中将在 aws3 存储桶中创建的文件夹设为公共或私有文件夹

Posted

技术标签:

【中文标题】在 Amazon S3 中将在 aws3 存储桶中创建的文件夹设为公共或私有文件夹【英文标题】:Make folders created in aws3 bucket public or private in Amazon S3 【发布时间】:2018-12-19 09:50:12 【问题描述】:

我已创建 aws3 存储桶并成功将文件上传到其中。我想在存储桶中创建两个文件夹(一个用于存储公共文件,另一个用于存储私有文件)。如何设置文件夹访问私有或公共。

【问题讨论】:

【参考方案1】:

我假设您正在从 AWS 控制台尝试。在这种情况下,只需右键单击要公开的文件夹。在右键单击时,应该有一个“公开”选项,应该将其公开。

使用 Java 以编程方式: 如果要制作文件夹(这是 S3 技术术语中的关键),您需要使用“Canned ACL。

因此,您的代码应如下所示: s3client.putObject(...).withCannedAcl(CannedAccessControlList.PublicRead)

参见参考文献https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl

正如您在评论中提到的,每个人都应该对公用文件夹具有读取权限,在这种情况下,有一个存储桶级别的策略,授予每个人“公用”命名文件夹访问权限。

政策示例: 示例:

    
    "Version":"2012-10-17",
    "Statement": [
        
            "Effect":"Allow",
            "Principal": "*",
            "Action":["s3:GetObject"],
            "Resource":["arn:aws:s3:::test-b11/public/*"]
        
    ]
 

其中存储桶名称为“test-b11”且公用文件夹为“public”

在控制台中,单击一个存储桶,进入“权限”选项卡,然后单击需要上传策略的“存储桶策略”。

【讨论】:

即使我将文件夹设为“公共”,我也无法公开访问文件夹中上传的文件。我应该将该文件夹中的单个文件公开。所以我该怎么办? 请参考,通过应用“桶策略”解决您的问题的编辑答案 thnq Tejas。能否请您发送代码以将文件夹文件设为私有。 默认情况下,对象是私有的。即期望在存储桶策略定义的公共文件夹中,其余内容保持私有。 Java 代码 private void uploadFileTos3bucket(String fileName, File file) s3client.putObject(new PutObjectRequest(bucketName, fileName, file); // 注释它 .withCannedAcl(CannedAccessControlList.PublicRead));

以上是关于在 Amazon S3 中将在 aws3 存储桶中创建的文件夹设为公共或私有文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node JS 从 Amazon S3 私有存储桶中检索图像

Amazon S3 存储:可以在私有存储桶中列出公用文件夹吗?

如何在 Amazon S3 存储桶中回滚到以前的版本?

复制同一 Amazon S3 存储桶中的文件

如何重命名 Amazon S3 存储桶中的文件? [复制]

列出 Amazon S3 存储桶中所有文件的快速方法?