spring - 使用 Spring Boot 从 AWS S3 检索文件的最佳方式?

标签 spring amazon-web-services spring-boot amazon-s3

我正在开发 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/*"
    }
]

}

问题:

  1. 这是一种保存方法吗?
  2. 我可以用不同的方式检索文件吗?

最佳答案

你做得很好。您需要确保的是不要授予列出存储桶内容的权限。如果我们输入 https://s3.us-east-2.amazonaws.com/MYBUCKETNAME/test/ 在浏览器上,它不应列出此文件夹中的所有文件名。

正如莫汉所提到的;您还可以配置 CDN(在 s3 存储桶前面)来检索文件;但这只是为了缩短客户的加载时间。但这会涉及额外的配置和成本,并且仅在您拥有大量地理分布的客户时才有用。

关于spring - 使用 Spring Boot 从 AWS S3 检索文件的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45748048/

相关文章:

java - 自定义 XA 资源 (JTA)

amazon-web-services - 使用多个键更新 dynamodb golang

python - 如何从 Catch 状态的前一个函数访问 Step Function 中的错误信息

amazon-web-services - 如何拒绝 AWS 账户的 s3 存储桶访问

spring-boot - 如何在 Visual Studio 代码中运行 Spring Boot 应用程序?有可能吗?

Spring Boot Multitenancy - Hibernate - 使用ddl-auto在实体结构改变时更新所有模式

java - 没有为带有 URI Spring MVC 的 HTTP 请求找到映射

java.lang.IllegalArgumentException : The character [_] is never valid in a domain name

java - 如何处理RequestMapping中的@Valid违规?

java - SpringBoot @WebMvcTest 和 @MockBean 没有按预期工作