Domain-Name-System

帶有 S3 儲存桶的 CNAME

  • November 9, 2020

我有一個 Web,我想將其圖像移動到 AWS S3。假設它被呼叫mypage.com,我可以訪問這樣的圖像:

https://mypage.com/pics/one.jpg

我創建了一個儲存桶static.mypage.com來放置所有圖像,所以現在我可以像這樣訪問圖像:

https://static.mypage.com.s3.eu-west-1.amazonaws.com/pics/one.jpg

由於它是一個很長的名稱,我想使用 DNS 的“縮短器”。

所以,我想知道如何在我的 DNS 提供商中設置 CNAME,以便如果我去…

https://static.mypage.com/pics/one.jpg

…我會從桶中獲取圖像。

謝謝!

在過去,S3 支持FQDN 儲存桶名稱- 即正是您所需要的。其中 FQDN = 完全限定域名,即完整的主機名,如static.mypage.com。問題是這僅適用於 HTTP 而不適用於 HTTPS,因為無法讓 S3 使用帶有您的儲存桶名稱/主機名 ( static.mypage.com ) 的 SSL 證書。

如果您對僅 HTTP 的流量感到滿意,您仍然可以這樣做。只需在您的註冊商處創建一個static.mypage.com指向s3.eu-west-1.amazonaws.com. S3 將辨識Host:請求中的標頭並查看正確的 S3 儲存桶。如果儲存桶中的對象可以公開訪問,那麼 URL http://static.mypage.com/pics/one.jpg應該可以正常工作。

但是,一旦您通過 HTTPS 訪問相同內容,您將收到 SSL 證書驗證錯誤,因為 S3 證書 * .s3.eu-west-1.amazonaws.com中的主機名與預期的static.mysite.com不匹配。

解決方案是 CloudFront,它可以位於您的 S3 前面並為其處理正確的 SSL 證書:

  1. 在*Amazon Certificate Manager**中為static.mysite.com*創建一個免費的 SSL 證書(或將您的第 3 方頒發的 SSL 證書上傳到 ACM)。
  2. 設置*CloudFront 分配*,將 SSL 證書附加到它
  3. 配置 CloudFront 分配以使用您的 S3 儲存桶作為
  4. 在您的 DNS 提供商處配置static.mysite.com CNAME 以指向 CF 分發名稱,例如d123456abcdef.cloudfront.net
  5. 有了你想要的URL https://static.mypage.com/pics/one.jpg應該終於可以工作了。

另請查看將流量路由到託管在 Amazon S3 儲存桶中的網站

希望有幫助:)

引用自:https://serverfault.com/questions/1041756