2016-11-04 64 views
0

我想通过在Heroku上托管的Rails 4.2应用程序上的cloudfront服务所有资产。在使用具有somename.herokuapp.com的heroku应用程序之前,我已成功使用了cloudfront,但是这个应用程序具有自定义域和通配符SSL。我无法获得任何资产服务,他们都有403Heroku SSL Cloudfront缺少密钥对-Id 403错误

我已尝试上传我的SSL在AWS &也尝试使用默认CloudFront证书(* .cloudfront.net)(它适用于我的非自定义域应用)。

我已经确认我的SSL位于AWS想要的AWS区域(N.Virginia)。

我确定我只使用HTTP/1.1,HTTP/1.0。

我已确定我的发行版已启用。

我的SSL是一个通配符,所以它看起来像这样“* .mydomain.com来”

当我上传到AWS,并把它添加到我的分布,我看到它正在使用中。

我确定我的aws_id/aws_key是有效的。但是,有一些Cloudfront密钥/对,但我不知道我将该位置放在我的网站上,我只有ENV变量aws_id/aws_secret_key。

Request URL:https://mycloudfrontdistn.cloudfront.net/assets/subfolder/secondfolder/gift-52db27eb2ced10800db38fbd74ec2ef40704d8c55d49b2654f7fe014e4bd1eff.png 
Request Method:GET 
Status Code:403 Forbidden 
Remote Address:REDACTED (I don't know if this is sensitive) 
Response Headers 
view source 
Connection:keep-alive 
Content-Length:146 
Content-Type:text/xml 
Date:Fri, 04 Nov 2016 23:06:47 GMT 
Server:CloudFront 
Via:1.1 somebignumber.cloudfront.net (CloudFront) 
X-Amz-Cf-Id:myAmazonKey== 
X-Cache:Error from cloudfront 

Request Headers 
view source 
Accept:image/webp,image/*,*/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en-US,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
Host:mycloudfrontdist.cloudfront.net 
Referer:https: https//www.mysite.com 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36 

回答

0

这个错误发生,如果您启用Restrict Viewer Access上的分布cache的行为,但你实际上并没有使用CloudFront的签署网址,因为它的内容是公开的。

如果你想为匹配PathPattern这个缓存行为的对象使用公共URL的请求,选择否

+0

如果我有公共和私人用户的内容 – NothingToSeeHere

+0

你必须隔离的内容在不同的路径下,并创建一个匹配每个路径的缓存行为,并为每个路径设置适当的限制查看器访问 - 例如您可能会将'/ asset/*'行为的属性设置为No并将属性设置为Yes - **或**的/ private/*模式,您的应用程序需要对所有CloudFront URL进行签名在你的应用程序。请参阅[通过CloudFront提供私人内容](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)了解如何将授权信息共同呈现给CloudFront。 –