2016-03-22 15 views
0

目前重命名現有S3鬥,我有一個S3桶設置有網址:啓用虛擬主機,爲了得到正確的URL

https://s3-us-west-2.amazonaws.com/<BucketName>/<Filename>

我想這樣做是加載從這個桶文件來自:

https://images.mysite.com/<Filename>

This AWS documentation page說:

存儲桶名稱必須與CNAME相同。因此, http://images.johnsmith.net/filename將與 相同,如果CNAME爲 ,則會將images.johnsmith.net映射到 images.johnsmith.net.s3.amazonaws.com。

  • 這是否意味着我必須重新命名我鬥?

  • 如果我要重新命名桶,我是否首先需要「啓用網站 託管」以重命名它?

  • 如果我要重命名我的存儲桶,那麼以前的存儲桶名稱引用的文件是 會發生什麼情況?

回答

1

如果你不真的想逃離你的S3存儲一個網站,而是隻是希望服務與自定義域(這似乎是從你的問題)的圖像,那麼你可以使用一個與CloudFront的分發自定義域,你會不會有移動或重命名任何東西(和舊鏈接將繼續工作還是):

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html

問題的答案,但:

  • 舊的鏈接將不再工作,但文件本身不會丟失。
+0

唯一的缺點到CloudFront的是,如果你有頻繁的變化,需要緩存失效。 ..但是..這比我的代理解決方案更加優雅。 –

+0

任何潛在的頻繁失效需求都不是真的即使是一個問題@MichaelBissell ...... CloudFront除了作爲拉通式CDN的刻板印象外還做了其他許多事情......如果需要,緩存功能實際上可以完全禁用,用於分發中的某些或全部路徑模式。 –

0

如果您不想更改存儲桶名稱,那麼您需要通過Amazon Cloudfront代理資源(當您更改存儲桶內容時需要緩存失效),或者您可以啓動一個小型EC2例如與Apache Web代理

ServerName yourdomain.com 
<Proxy *> 
    Order allow,deny 
    Allow from all 
    SetEnv proxy-chain-auth 
</Proxy> 

SSLProxyEngine On 
ProxyRequests On 
ProxyPreserveHost Off 
SSLProxyVerify none 
SSLProxyCheckPeerCN off 
SSLProxyCheckPeerName off 
SSLProxyCheckPeerExpire off 

ProxyPass/http://your-bucket.s3-website-us-west-2.amazonaws.com/ 
ProxyPassReverse/http://your-bucket.s3-website-us-west-2.amazonaws.com/ 

注意ProxyPreserveHost關閉指令,這意味着S3名字仍然傳遞到目標。缺點Apache代理的是,它成爲一個瓶頸,但你可以在自由層使用了t2.smalls,然後將其添加到自動縮放組

+0

*如果您使用Amazon Route 53 DNS,那麼您可以將您的域指向您的存儲桶* ...如果您要說明您似乎在說什麼,那麼不,這仍然需要存儲桶名稱與所需的主機名匹配。除非存儲桶名稱與完全限定的主機名完全匹配,否則不能在存儲桶上使用Route 53別名。 –

+0

啊......真的。所以唯一的選擇是代理或Cloud Front。更正我的答案以刪除路由53註釋 - 但是,如果您要使用該別名進行設置,請參閱參考正確配置的aws文檔 http://docs.aws.amazon.com/AmazonS3/latest/dev /website-hosting-custom-domain-walkthrough.html –