【问题标题】:Best way to retrieve files from AWS S3 with Spring Boot?使用 Spring Boot 从 AWS S3 检索文件的最佳方法?
【发布时间】:2017-08-18 15:40:16
【问题描述】:

我正在开发使用 PostgreSQL 作为数据库和 S3 存储桶作为图像存储的 Spring Boot 应用程序。保存新条目时,我将图像上传到 S3 存储桶并将其名称保存到数据库。要从 S3 存储桶中检索图像,我需要在视图中添加 URL 模式,如下所示:

<img th:src="@{'https://s3.us-east-2.amazonaws.com/MYBUCKETNAME/test/'+${entry.image}}" height="256" width="256"/>

但是,要查看图像,我需要通过向 S3 存储桶添加新策略来公开“测试”文件夹的所有传入文件,如下所示:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "AllowPublicRead",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::MYBUCKETNAME/test/*"
    }
]

}

问题:

  1. 这是一种保存方法吗?
  2. 能否以其他方式检索文件?

【问题讨论】:

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


    【解决方案1】:

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

    正如莫汉所说;您还可以配置一个 CDN(在您的 s3 存储桶前面)来检索您的文件;但这只是为了改善您的客户的加载时间.. 但这涉及额外的配置和成本,并且仅在您有很多地理分布的客户时才有用。

    【讨论】:

    【解决方案2】:

    您可以为您的 S3 存储桶配置 CDN 并直接从边缘位置提供图像。

    了解 AWS CDN

    https://aws.amazon.com/caching/cdn/

    当您创建 CloudFront 分配并将 MYBUCKETNAME.s3.amazonaws.com 指定为此分配的源服务器时。 CloudFront 返回 d111111abcdef8.cloudfront.net 作为 s3 存储桶的 url。

    您可以从以下链接获取更多信息

    http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LinkFormat.html#Format_BasicLinks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 2012-12-17
      • 2020-06-07
      相关资源
      最近更新 更多