gpt4 book ai didi

java - 从 s3 java SDK 创建时,s3 对象未应用正确的权限

转载 作者:行者123 更新时间:2023-11-30 07:22:44 26 4
gpt4 key购买 nike

我有一个 java/playframework 应用程序,它使用以下代码将文件放入定义的 S3 存储桶:

    PutObjectRequest putObjectRequest = new PutObjectRequest(s3Bucket, filePath, file);
putObjectRequest.withCannedAcl(CannedAccessControlList.PublicRead);
amazonS3.putObject(putObjectRequest);

(其中 s3Bucket 和 filePath 是字符串,文件是 File 类型。)

这工作正常(对象以正确的名称到达正确的存储桶等),并且通过声明 CannedAccessControlList.PublicRead 我希望它 - 显然 - 公开可读(公众没有查看/编辑权限)。

但是,存储桶中的对象具有受让人“任何经过身份验证的 AWS 用户”的OPEN/DOWNLOAD权限。我本以为这是我设置 CannedAccessControlList.AuthenticatedRead 时的权限,但不是 PublicRead 的权限?

In the documentation据称,任何省略 AWS key 和签名的用户都可以访问。也许我误解了这一点。我可以将单个对象的“打开/下载”权限授予“所有人”,当我在浏览器中输入对象 URL 时,该权限工作得非常好。这也是我读完this SO question后的想法。 .

所以我的问题是:我可以通过 Java SDK 将 S3 对象放入存储桶并授予其公共(public)读取权限,这意味着可以通过其 url 访问该文件吗?

最佳答案

如果您的整个存储桶将公开,您可以定义存储桶策略以公开所有新上传的文件:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket-name]/*"
}
]
}

转到您的存储桶,单击“属性”,然后单击“权限”。应该有一个选项来添加或编辑存储桶策略。

关于java - 从 s3 java SDK 创建时,s3 对象未应用正确的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com