將您的網域用於 Amazon S3 儲存貯體中的靜態網站 - Amazon Route 53

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將您的網域用於 Amazon S3 儲存貯體中的靜態網站

此入門教學課程說明如何執行以下任務:

  • 註冊網域名稱,例如 example.com。

  • 建立 Amazon S3 儲存貯體,並設定它來託管網站

  • 建立範例網站,並將檔案儲存在 S3 儲存貯體

  • 設定 Amazon Route 53 將流量路由到您的新網站

完成後,您將能夠開啟瀏覽器,輸入網域名稱,並檢視您的網站。

注意

您也可以將現有網域轉移到 Route 53,但比起註冊新的網域,此程序更複雜且耗時。如需詳細資訊,請參閱 將網域註冊轉移到 Amazon Route 53

必要條件

開始之前,請務必先完成 設定 Amazon Route 53 中的步驟。

步驟 1:註冊網域

若要使用網域名稱 (例如 example.com),您必須找到一個未被使用的網域名稱並註冊該網域。當您註冊網域名稱,即表示您要保留它以供您在網際網路上的任何位置獨佔使用,通常為期一年。在預設情況下,我們會在每年年底自動續約您的網域,但您可以關閉自動續約。如需詳細資訊,請參閱 註冊新網域

步驟 2:為根網域建立 S3 儲存貯體

Amazon S3 可讓您從網際網路上的任何位置儲存和擷取您的資料。若要組織您的資料,可以使用 AWS Management Console建立儲存貯體並將資料上傳到儲存貯體。可以使用 Amazon S3 在儲存貯體中託管靜態網站。下列程序說明如何建立儲存貯體。

若要為根網域建立一個 S3 儲存貯體
  1. 前往 https://console.aws.amazon.com/s3/ 開啟 Amazon S3 主控台。

  2. 選擇建立儲存貯體

  3. 輸入下列值:

    儲存貯體名稱

    輸入您的網域名稱,例如 example.com

    區域

    選擇最接近大多數使用者的區域。

    記下所選擇的區域,在稍後的程序中您需要此資訊。

  4. 若要接受預設設定並建立儲存貯體,請選擇 Create bucket (建立儲存貯體)

步驟 3 (選用):為根網域建立另一個 S3 儲存貯體

在之前程序中,您為網域名稱 (例如 example.com) 建立儲存貯體。這樣您的使用者就可以使用您的網域名稱 (例如 example.com) 存取您的網站。

如果您也希望使用者能夠使用 www.your-domain-name (如 www.example.com) 存取您的範例網站,請建立第二個 S3 儲存貯體。設定第二個儲存貯體,將流量路由到第一個儲存貯體。

為 www.your-domain-name 建立一個 S3 儲存貯體
  1. 選擇建立儲存貯體

  2. 輸入下列值:

    儲存貯體名稱

    輸入 www.your-domain-name。例如,如已註冊網域名稱 example.com,請輸入 www.example.com

    區域

    選擇建立第一個儲存貯體的區域。

  3. 若要接受預設設定並建立儲存貯體,請選擇 Create (建立)

步驟 4:設定網站託管的根網域儲存貯體

現在您已有一個 S3 儲存貯體,可以為網站託管設定該儲存貯體。

若要允許在您的 S3 儲存貯體上託管網站
  1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  2. 儲存貯體名稱清單中,選擇希望為靜態網站託管啟用的儲存貯體名稱。

  3. 選擇 Properties (屬性)

  4. Static website hosting (靜態網站託管)下,選擇 Enable (啟用)

  5. 選擇 Use this bucket to host a website (使用此儲存貯體來託管網站)。

  6. Static website hosting (靜態網站託管) 下,選擇Enable (啟用)。

  7. 索引文件中,輸入索引文件的名稱,通常是 index.html

    索引文件名稱區分大小寫,而且必須完全符合您計畫上傳至 S3 儲存貯體的 HTML 索引文件檔案名稱。當您為網站託管設定儲存貯體時,必須指定索引文件。在對根網域或任何子資料夾提出請求時,Amazon S3 會傳回此索引文件。

  8. (選用) 若要為 4XX 類別錯誤提供自己的自訂錯誤文件,請在 Error document (錯誤文件)中輸入自訂錯誤文件檔案名稱。

    如果您未指定自訂錯誤文件且發生錯誤,則 Amazon S3 會傳回預設的 HTML 錯誤文件。

  9. (選用) 如果您要指定進階重新引導規則,請在 Redirection rules (重新引導規則) 中輸入 XML 來描述規則。

    如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的設定進階條件式重新引導

  10. 選擇儲存變更

  11. Static website hosting 下,請記下 Endpoint (端點)

    Endpoint (端點) 是儲存貯體的 Amazon S3 網站端點。將儲存貯體設為靜態網站之後,您可以使用此端點來測試您的網站,如 步驟 9:測試您的網域端點 中所示。

    使用如下步驟編輯公有存取設定並新增允許公有讀取存取權的設定之後,您可以使用網站端點存取您的網站。

步驟 5:(選用):設定用於網站重新引導的子網域儲存貯體

設定用於網站託管的根網域儲存貯體之後,您可以選擇設定子網域儲存貯體,以將所有請求重新引導至根網域。例如,您可以設定 www.example.com 的所有要求以重新引導至 example.com

若要設定重新引導
  1. 在 Amazon S3 主控台中,於儲存貯體清單中選擇子網域儲存貯體名稱 (例如 www.example.com)。

  2. 選擇 Properties (屬性)。

  3. Static website hosting (靜態網站託管) 下,選擇 Edit (編輯)。

  4. 選擇 Redirect requests for an object (重新引導物件請求)

  5. Target bucket (目標儲存貯體) 方塊中,輸入您的根網域,例如 example.com

  6. Protocol (通訊協定)中,選擇 http

  7. 選擇 Save changes (儲存變更)。

步驟 6:上傳索引以建立網站內容

當您為儲存貯體允許靜態網站託管時,請輸入索引文件的名稱 (例如,index.html)。為儲存貯體允許靜態網站託管後,您可以將含有索引文件名稱的 HTML 檔案上傳到儲存貯體。

若要上傳索引檔案
  1. 複製可將其作為本教學課程的簡單單頁網站的下列範例文字,將其貼到文字編輯器中,然後將其儲存為 index.html:

    <html> <head> <title>Amazon Route 53 Getting Started</title> </head> <body> <h1>Routing Internet Traffic to an Amazon S3 Bucket for Your Website</h1> <p>For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html">Getting Started with Amazon Route 53</a> in the <emphasis>Amazon Route 53 Developer Guide</emphasis>.</p> </body> </html>
  2. Buckets (儲存貯體名稱) 清單中,選擇希望為其啟用靜態網站託管的儲存貯體名稱。

  3. 在 Amazon S3 主控台,選擇您在 若要允許在您的 S3 儲存貯體上託管網站 程序中建立的儲存貯體名稱 (按一下連結的儲存貯體名稱)。

  4. 選擇 Upload (上傳)Add Files (新增檔案),從您儲存的位置選取 index.html,然後選取 Upload (上傳)

  5. 如果您建立並新增文件,例如 404.html,請依照步驟 3 至 5 來上傳。

步驟 7:編輯 S3 封鎖公有存取設定

根據預設,Amazon S3 會封鎖對帳戶和儲存貯體的公開存取。如想要使用儲存貯體託管靜態網站,請使用這些步驟編輯公有存取設定:

警告

在完成此步驟之前,請檢閱封鎖對 Amazon S3 儲存的公開存取,以確保您了解並接受允許公開存取所涉及的風險。當您關閉封鎖公開存取設定以公開儲存貯體時,網際網路上的任何人都可以存取您的儲存貯體。我們建議您封鎖對儲存貯體的所有公用存取權。

若要將流量路由到您的網站
  1. 開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon S3 主控台。

  2. 選擇已設定為靜態網站的儲存貯體名稱。

  3. 選擇 Permissions (許可)。

  4. Block public access (bucket settings) (封鎖公開存取 (儲存貯體設定)) (封鎖公開存取 (儲存貯體設定)) 下,選擇 Edit (編輯)。

  5. 清除 Block all public access (封鎖所有公開存取),然後選擇 Save changes (儲存變更)

Amazon S3 會關閉儲存貯體的封鎖公開存取設定。若要建立公開的靜態網站,在新增儲存貯體原則之前,可能還需要針對您的帳戶編輯封鎖公開存取設定。如果帳戶的封鎖公開存取設定目前已開啟,您在 封鎖公開存取 (儲存貯體設定) 下會看到附註。

步驟 8:連接儲存貯體政策

編輯 Amazon S3 封鎖公開存取設定之後,您可以新增儲存貯體政策,以授予儲存貯體物件的公用讀取權限。當您授予公有讀取權限時,網際網路上的任何人都可以存取您的儲存貯體。

警告

在完成此步驟之前,請檢閱封鎖對 Amazon S3 儲存的公開存取,以確保您了解並接受允許公開存取所涉及的風險。當您關閉封鎖公開存取設定以公開儲存貯體時,網際網路上的任何人都可以存取您的儲存貯體。我們建議您封鎖對儲存貯體的所有公用存取權。

若要將流量路由到您的網站
  1. 前往 https://console.aws.amazon.com/s3/ 開啟的 Amazon Simple Storage Service (Amazon S3) 主控台。

  2. Buckets(儲存貯體) 下方,選擇儲存貯體的名稱。

  3. 選擇 Permissions (許可)。

  4. Bucket Policy (儲存貯體政策) 下,選擇 Edit (編輯)

  5. 複製下列儲存貯體政策並貼至文字編輯器。此政策授與網際網路上的每個人許可權 ("Principal":"*"),以取得與您的網域名稱相關聯的 S3 儲存貯體 ("Action":["s3:GetObject"]) 中的檔案 ("arn:aws:s3:::your-domain-name/*"):

    { "Version":"2012-10-17", "Statement":[{ "Sid":"AddPerm", "Effect":"Allow", "Principal":"*", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::your-domain-name/*" ] }] }
  6. 更新 Resource 的值為 your-domain-name,例如 example.com

  7. 選擇儲存變更

步驟 9:測試您的網域端點

將網域儲存貯體設定為託管公有網站後,您就可以測試自己的端點。您只能測試網域儲存貯體的端點,因為子網域儲存貯體已設置為網站重新引導,且不是靜態網站託管。

注意

Amazon S3 不支援使用 HTTPS 存取網站。如果您想使用 HTTPS,則可以使用 Amazon CloudFront 為 Amazon S3 上託管的靜態網站提供服務。

如需詳細資訊,請參閱 < 在檢視者之間需要 HTTPS 進行通訊 > 和CloudFront

  1. Buckets (儲存貯體) 下方,選擇儲存貯體的名稱。

  2. 選擇 Properties (屬性)。

  3. 在頁面底部的 Static website hosting (靜態網站託管) 下,選擇您的 Bucket website endpoint (儲存貯體網站端點)

    您的索引文件會在不同的瀏覽器視窗中開啟。

步驟 10:將您網域的 DNS 流量路由到您的網站儲存貯體

您的 S3 儲存貯體中現在有單頁網站。若要開始將網域的網際網路流量路由到您的 S3 儲存貯體,請執行以下程序。

若要將流量路由到您的網站
  1. 請在 https://console.aws.amazon.com/route53/ 開啟 Route 53 主控台。

  2. 在導覽窗格中,選擇 Hosted zones (託管區域)

    注意

    當您註冊網域時,Amazon Route 53 自動建立同名的託管區域。託管區域包含有關您希望 Route 53 如何路由網域流量的資訊。

  3. 在託管區域清單,請選擇您的網域名稱。

  4. 選擇 Create record (建立記錄)

    注意

    每個記錄包含有關您希望如何路由某個網域 (如 example.com) 或一個子網域 (例如 www.example.com 或 test.example.com) 流量的資訊。記錄儲存在網域的託管區域中。

  5. 選擇 Switch to wizard (切換至精靈)。

  6. 選擇 Simple routing (簡易路由),然後選擇 Next (下一步)

  7. 選擇 Define simple record (定義簡易記錄)

  8. Record name (記錄名稱) 中,接受預設值,這是您的託管區域與網域的名稱。

  9. 在 [記錄類型] 中,選擇 [A]-將流量路由至 IPv4 位址和某些 AWS 資源

  10. Value/Route traffic to (值/路由傳送流量至) 中,選擇 Alias to S3 website endpoint (連至 S3 網站端點的別名)

  11. 選擇 區域。

  12. 選擇 S3 儲存貯體。

    儲存貯體名稱應與 Name (名稱) 方塊中顯示的名稱相符。在 Choose S3 bucket (選擇 S3 儲存貯體) 清單中,儲存貯體名稱會與建立儲存貯體之區域的 Amazon S3 網站端點一起顯示,例如 s3-website-us-west-1.amazonaws.com (example.com)

    如果以下條件之一為真,則 Choose S3 bucket (選擇 S3 儲存貯體) 會列出儲存貯體:

    • 您將儲存貯體設定為靜態網站。

    • 儲存貯體與您要建立的記錄同名。

    • 目前 AWS 帳戶已建立值區。

    如果您的儲存貯體未出現在 Choose S3 bucket (選擇 S3 儲存貯體) 清單中,請輸入建立儲存貯體之區域的 Amazon S3 網站端點,例如 s3-website-us-west-2.amazonaws.com。如需 Amazon S3 網站端點的完整清單,請參閱 Amazon S3 網站端點。如需別名目標的詳細資訊,請參閱 簡單別名記錄的專用值 中的「值/路由傳送流量至」。

  13. Evaluate target health (評估目標運作狀態) 中,選擇 No (否)

  14. 選擇 Define simple record (定義簡易記錄)

(選用) 若要新增子網域 (www.example.com) 的別名記錄

如果您為子網域建立儲存貯體,請同時為其新增別名記錄。

  1. Configure records (設定記錄) 下,選擇 Define simple record (定義簡易記錄)。

  2. 在子網域的 Record name (記錄名稱) 中,輸入 www

  3. 在 [記錄類型] 中,選擇 [A]-將流量路由至 IPv4 位址和某些 AWS 資源

  4. Value/Route traffic to (值/路由傳送流量至) 中,選擇 Alias to S3 website endpoint (連至 S3 網站端點的別名)

  5. 選擇區域。

  6. 選擇 S3 儲存貯體,例如 s3-website-us-west-2.amazonaws.com (example.com)

    如果您的儲存貯體未出現在 Choose S3 bucket (選擇 S3 儲存貯體) 清單中,請輸入建立儲存貯體之區域的 Amazon S3 網站端點,例如 s3-website-us-west-2.amazonaws.com

  7. Evaluate target health (評估目標運作狀態) 中,選擇 No (否)

  8. 選擇 Define simple record (定義簡易記錄)

  9. Configure records (設定記錄) 頁面上,選擇 Create records (建立記錄)。

步驟 11:測試您的網站

若要確認網站正常運作,請開啟 Web 瀏覽器並瀏覽到下列 URL:

  • http://your-domain-name,例如 example.com – 在 your-domain-name 儲存貯體中顯示索引文件

  • http://www.your-domain-name,例如 www.example.com – 將您的請求重新引導到 your-domain-name 儲存貯體

在某些情況下,您可能需要清除快取,才能看到預期的行為。

如需路由網際網路流量的進階資訊,請參閱將 Amazon Route 53 設定為 DNS 服務。如需將網際網路流量路由至 AWS 資源的相關資訊,請參閱將互聯網流量路由到您的 AWS 資源

步驟 12(可選):使用 Amazon CloudFront 加快內容的分發

CloudFront 是一種 Web 服務,可以加快向用戶分發靜態和動態 Web 內容(例如 .html,.css,.js 和圖像文件)的速度。 CloudFront 透過稱為節點位置的全球資料中心網路傳遞您的內容。當使用者要求您提供服務的內容時 CloudFront,會將使用者路由至提供最低延遲 (時間延遲) 的節點,以便以最佳效能傳遞內容。

  • 如果內容已經位於延遲最低的節點位置,請立即 CloudFront 傳送。

  • 如果內容不在該節點,請從 Amazon S3 儲存貯體或 HTTP 伺服器 (例如 Web 伺服器) CloudFront 擷取該內容,該伺服器是您已識別為內容最終版本的來源。

如需使用將內容分發 CloudFront 到 Amazon S3 儲存貯體的相關資訊,請參閱 Amazon CloudFront 開發人員指南中的從 Amazon S3 分發內容 CloudFront 時新增