从网站主域上的URL提供AWS S3图像

时间:2018-08-11 18:04:31

标签: node.js amazon-web-services express amazon-s3

是否可以从网站主域上的URL提供AWS S3图像?

我的网站是一个运行在https://example.com之类的URL上的Express应用程序。我正在使用AWS S3托管网站的图像。但是,我不想使用原始的S3 URL,而是要使用位于我的主域中的URL,如下所示:

https://example.com/image/imagename.jpg

我读过的大多数文章都涉及为子域使用CNAME记录,或将整个站点托管在S3上,而这些都不是我想要做的。

2 个答案:

答案 0 :(得分:0)

您可以使用AWS Cloudfront和AWS Route 53与AWS S3结合创建DNS记录。

在这里我附上了一个教程来做:

https://www.maketecheasier.com/configure-amazon-s3-as-a-content-delivery-network/

https://reidweb.com/2017/02/06/cloudfront-cdn-tutorial/

https://adefy.com/2016/04/25/setting-up-amazon-s3-cloudfront-route53/

如果您有疑问,可以告诉我问题所在,因为本教程很旧,我可以为您提供帮助。

答案 1 :(得分:0)

据我了解,您想要的网址是:

https://example.com/image/imagename.jpg

,并且不想使用S3来托管您的网站,那么在这种情况下,您可以使用s3:GetObject键创建一个存储桶策略AWS:refer许可,条件为条件,该条件告诉GetObject请求必须来自特定网站。

以下是示例存储桶策略:

{
  "Version":"2012-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests originating from www.example.com and example.com.",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
      }
    }
  ]
}

有关更多信息,您可以阅读this document

希望这会有所帮助。

谢谢!