如何在不使用签名URL的情况下安全地提供S3文件?

时间:2018-05-24 09:08:30

标签: amazon-s3 amazon-cloudfront

我不是AWS专家所以我希望有人能指出我正确的方向。

我有一个存储在S3存储桶中的文件(具体图像),我需要将这些图像显示在KML文件中,该文件将传递给客户端。图像URL将进入HTML标记。 (KML允许嵌入HTML代码作为其内容的一部分,仅供参考。)但是,这些图像不能公开访问(因为它是机密项目的一部分),并且只能使用特殊URL访问。

我已经深入探讨了Cloudfront选项,根据我的理解,带有Cloudfront的签名URL将无效,因为它有一个过期日期,由于最大过期日期为7天,因此无法与客户端一起使用我听说。此外,甚至可以使用签名的URL作为src的src吗?

由于Google地球(打开KML文件)在呈现HTML代码时实际上并未使用集成的Web浏览器,因此签名的Cookie也无法正常工作。

我确实运行了一个Python脚本来生成这个KML文件,所以我可以创建签名的URL,但不幸的是我不认为签名的URL会帮助解决上面描述的问题。

关于如何解决这个问题的任何想法或建议?有没有办法让S3或Cloudfront文件URL包含一个不会过期的密钥?

谢谢!

1 个答案:

答案 0 :(得分:1)

CloudFront可用于生成签名网址,您可以设置自己的截止日期,该截止日期可延长至数年。

  

您还可以使用签名的URL分发私人内容   有效期较长,可能持续数年。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html#private-content-overview-choosing-duration

根据AWS,最好允许通过CloudFront访问S3中的资源,而不是直接公开S3网址。您可以阅读本文档以获取更多信息。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

最后回答你的问题

甚至可以使用签名的URL作为src的

是的,毕竟它只是一个带有一些额外字符的网址。