2016-11-04 62 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。 –