我正在开发 Spring Boot 应用程序,该应用程序使用 PostgreSQL 作为数据库,使用 S3 存储桶作为图像存储。保存新条目时,我将图像上传到 S3 存储桶并将其名称保存到数据库。要从 S3 存储桶检索图像,我需要在 View 中添加 URL 模式,如下所示:
<img th:src="@{'https://s3.us-east-2.amazonaws.com/MYBUCKETNAME/test/'+${entry.image}}" height="256" width="256"/>
但是,要查看图像,我需要通过向 S3 存储桶添加新策略来公开“test”文件夹的所有传入文件,如下所示:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::MYBUCKETNAME/test/*"
}
]
}
问题:
- 这是一种保存方法吗?
- 我可以用不同的方式检索文件吗?
最佳答案
你做得很好。您需要确保的是不要授予列出存储桶内容的权限。如果我们输入 https://s3.us-east-2.amazonaws.com/MYBUCKETNAME/test/ 在浏览器上,它不应列出此文件夹中的所有文件名。
正如莫汉所提到的;您还可以配置 CDN(在 s3 存储桶前面)来检索文件;但这只是为了缩短客户的加载时间。但这会涉及额外的配置和成本,并且仅在您拥有大量地理分布的客户时才有用。
关于spring - 使用 Spring Boot 从 AWS S3 检索文件的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45748048/