在 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 私有存储桶中检索图像