

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

# 教學課程：在 Amazon S3 上設定靜態網站
<a name="HostingWebsiteOnS3Setup"></a>

**重要**  
Amazon S3 現在將伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 套用為 Amazon S3 中每個儲存貯體的基本加密層級。從 2023 年 1 月 5 日起，所有上傳到 Amazon S3 的新物件都會自動加密，無需額外費用，也不會影響效能。S3 儲存貯體預設加密組態和新物件上傳的自動加密狀態可在 CloudTrail 日誌、S3 庫存、S3 Storage Lens、Amazon S3 主控台，以及 AWS CLI 和 AWS SDKs 中的其他 Amazon S3 API 回應標頭中使用。如需詳細資訊，請參閱[預設加密常見問答集](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)。

您可以配置 Amazon S3 儲存貯體配置成網站一般地運作。此範例會演練如何在 Amazon S3 上託管網站的步驟。

**重要**  
下列教學課程需要停用「封鎖公開存取」。我們建議將「封鎖公開存取」保持啟用狀態。如果想要將全部四個「封鎖公開存取」設定保持啟用狀態，並託管靜態網站，您可以使用 Amazon CloudFront 原始存取控制 (OAC)。Amazon CloudFront 提供建立安全靜態網站所需的功能。Amazon S3 靜態網站只支援 HTTP 端點。Amazon CloudFront 使用 Amazon S3 的耐久性儲存體，同時提供額外的安全標頭，例如 HTTPS。HTTPS 透過加密一般 HTTP 請求並防止常見的網路攻擊來增加安全性。如需詳細資訊，請參閱《Amazon CloudFront 開發人員指南》**中的[安全靜態網站入門](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)。

**Topics**
+ [步驟 1：建立儲存貯體](#step1-create-bucket-config-as-website)
+ [步驟 2：啟用靜態網站託管](#step2-create-bucket-config-as-website)
+ [步驟 3：編輯封鎖公開存取設定](#step3-edit-block-public-access)
+ [步驟 4：新增儲存貯體政策，將儲存貯體內容設為可供大眾讀取](#step4-add-bucket-policy-make-content-public)
+ [步驟 5：設定索引文件](#step5-upload-index-doc)
+ [步驟 6：設定錯誤文件](#step6-upload-error-doc)
+ [步驟 7：測試您的網站端點](#step7-test-web-site)
+ [步驟 8：清除](#getting-started-cleanup-s3-website-overview)

## 步驟 1：建立儲存貯體
<a name="step1-create-bucket-config-as-website"></a>

以下指示提供如何為網站託管建立儲存貯體的概觀。如需建立儲存貯體的詳細逐步說明，請參閱「[建立一般用途儲存貯體](create-bucket-overview.md)」。

**建立儲存貯體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 選擇 **Create bucket** (建立儲存貯體)。

1. 輸入 **Bucket name** (儲存貯體名稱) (例如，**example.com**)。

1. ​選擇您要在其中建立儲存貯體的區域。

   建議您選擇接近您地理位置的區域以充分降低延遲及成本，或因應法規要求。您選擇的區域會決定您的 Amazon S3 網站端點。如需詳細資訊，請參閱「[網站端點](WebsiteEndpoints.md)」。

1. 若要接受預設設定並建立儲存貯體，請選擇 **Create (建立)**。

## 步驟 2：啟用靜態網站託管
<a name="step2-create-bucket-config-as-website"></a>

建立儲存貯體後，您就可以為儲存貯體啟用靜態網站託管。您可以建立新的儲存貯體，或使用現有的儲存貯體。

**啟用靜態網站託管**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在儲存貯體清單中，選擇您要為其啟用靜態網站託管的儲存貯體名稱。

1. 選擇 **Properties** (屬性)。

1. 在 **Static website hosting** (靜態網站託管) 下，選擇 **Edit** (編輯)。

1. 選擇**使用此儲存貯體來託管網站**。

1. 在**靜態網站託管**下，選擇**啟用**。

1. 在**索引文件**中，輸入索引文件的名稱，通常是 `index.html`。

   索引文件名稱區分大小寫，而且必須完全符合您計畫上傳至 S3 儲存貯體的 HTML 索引文件檔案名稱。當您為網站託管設定儲存貯體時，必須指定索引文件。在對根網域或任何子資料夾提出請求時，Amazon S3 會傳回此索引文件。如需詳細資訊，請參閱「[設定索引文件](IndexDocumentSupport.md)」。

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

   錯誤文件名稱區分大小寫，而且必須完全符合您計畫上傳至 S3 儲存貯體的 HTML 錯誤文件檔案名稱。如果您未指定自訂錯誤文件且發生錯誤，則 Amazon S3 會傳回預設的 HTML 錯誤文件。如需詳細資訊，請參閱[設定自訂錯誤文件](CustomErrorDocSupport.md)。

1. (選用) 如果您要指定進階重新導向規則，請在 **Redirection rules (重新導向規則)** 中輸入 JSON 來描述規則。

   例如，您可依據要求中特定的物件金鑰名稱或字首，依條件路由要求。如需詳細資訊，請參閱「[配置重新引導規則以使用進階條件重新引導](how-to-page-redirect.md#advanced-conditional-redirects)」。

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

   Amazon S3 會為您的儲存貯體啟用靜態網站託管。在頁面底部的**靜態網站託管**下，您會看到儲存貯體的網站端點。

1. 在 **Static website hosting** 下，請記下 **Endpoint (端點)**。

   **端點**是儲存貯體的 Amazon S3 網站端點。將儲存貯體設為靜態網站之後，您可以使用此端點來測試您的網站。

## 步驟 3：編輯封鎖公開存取設定
<a name="step3-edit-block-public-access"></a>

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

**警告**  
完成這些步驟之前，請檢閱[封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)以確保您了解並接受允許公開存取所涉及的風險。當您關閉封鎖公開存取設定以公開儲存貯體時，網際網路上的任何人都可以存取您的儲存貯體。我們建議您封鎖對儲存貯體的所有公用存取權。

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

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

1. 選擇 **Permissions** (許可)。

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

1. 清除 **Block *all* public access** (封鎖所有公開存取)，然後選擇 **Save changes** (儲存變更)。  
![Amazon S3 主控台，顯示封鎖公開存取儲存貯體設定。](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   Amazon S3 會關閉儲存貯體的封鎖公開存取設定。若要建立公有靜態網站，在新增儲存貯體原則之前，可能還需要針對您的帳戶[編輯封鎖公開存取設定](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html)。如果目前已開啟帳戶的封鎖公開存取設定，您會在**封鎖公開存取 (儲存貯體設定)** 下看到附註。

## 步驟 4：新增儲存貯體政策，將儲存貯體內容設為可供大眾讀取
<a name="step4-add-bucket-policy-make-content-public"></a>

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

**重要**  
以下政策僅為範例，允許完整存取您儲存貯體的內容。繼續執行此步驟之前，請檢閱[如何保護 Amazon S3 儲存貯體中的檔案？](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)，以確保您瞭解 S3 儲存貯體中檔案保護的最佳實務，以及授予公開存取權所涉及的風險。

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

1. 選擇 **Permissions** (許可)。

1. 在 **Bucket Policy** (儲存貯體政策) 下方，選擇 **Edit** (編輯)。

1. 若要授予您網站的公開讀取存取權，請複製以下儲存貯體政策，並將它貼上至 **Bucket policy editor (儲存貯體政策編輯器)**。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PublicReadGetObject",
               "Effect": "Allow",
               "Principal": "*",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::{{Bucket-Name}}/*"
               ]
           }
       ]
   }
   ```

1. 將 `Resource` 更新為您的儲存貯體名稱。

   在上述範例儲存貯體政策中，{{Bucket-Name}} 是儲存貯體名稱的預留位置。若要使用此儲存貯體策略與您自己的儲存貯體搭配，您必須更新此名稱以符合您的儲存貯體名稱。

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

   顯示的訊息指出已成功新增儲存貯體原則。

   如果您看到指出 `Policy has invalid resource` 的錯誤，請確認儲存貯體政策中的儲存貯體名稱與您的儲存貯體名稱相符。如需有關新增儲存貯體原則的資訊，請參閱[如何新增 S3 儲存貯體原則？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html)

   如果您收到錯誤訊息且無法儲存貯體原則，請檢查您的帳戶和儲存貯體的封鎖公開存取設定，以確認您允許公開存取儲存貯體。

## 步驟 5：設定索引文件
<a name="step5-upload-index-doc"></a>

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

**設定索引文件**

1. 建立 `index.html` 檔案。

   如果您還沒有 `index.html` 檔案，您可以使用下列HTML 建立一個檔案。

   ```
   <html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
       <title>My Website Home Page</title>
   </head>
   <body>
     <h1>Welcome to my website</h1>
     <p>Now hosted on Amazon S3!</p>
   </body>
   </html>
   ```

1. 在本機儲存索引檔案。

   索引文件檔案名稱必須完全符合您在 **Static website hosting** (靜態網站託管) 對話方塊中輸入的索引文件名稱。索引文件名稱有區分大小寫。例如，如果您在 **Static website hosting** (靜態網站託管) 對話方塊的 **Index document** (索引文件) 名稱中輸入 `index.html`，您的索引文件檔案名稱也必須是 `index.html` 而非 `Index.html`。

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在儲存貯體清單中，選擇您要用於託管靜態網站的儲存貯體名稱。

1. 為您的儲存貯體啟用靜態網站，然後輸入索引文件的確切名稱 (例如，`index.html`)。如需詳細資訊，請參閱「[啟用網站託管](EnableWebsiteHosting.md)」。

   啟用靜態網路託管之後，請繼續執行步驟 6。

1. 若要將索引文件上傳至您的儲存貯體，請執行下列其中一項：
   + 將索引檔拖放到主控台儲存貯體清單中。
   + 選擇 **Upload** (上傳)，然後依照提示選擇並上傳索引檔案。

   如需逐步說明，請參閱「[上傳物件](upload-objects.md)」。

1. (選用) 將其他網站內容上傳到您的儲存貯體。

## 步驟 6：設定錯誤文件
<a name="step6-upload-error-doc"></a>

當您為儲存貯體啟用靜態網站託管時，請輸入錯誤文件的名稱 (例如 **404.html**)。為儲存貯體啟用靜態網站託管後，您可以將含有錯誤引文件名稱的 HTML 檔案上傳到儲存貯體。

**設定錯誤文件**

1. 建立錯誤文件，例如 `404.html`。

1. 將錯誤文件檔案儲存在本機。

   錯誤文件名稱區分大小寫，且須完全符合您在啟用靜態網站託管時所輸入的名稱。例如，如果您在 **Static website hosting** (靜態網站託管) 對話方塊的 **Error document** (錯誤文件) 名稱中輸入 `404.html`，您的錯誤文件檔案名稱也必須是 `404.html`。

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在儲存貯體清單中，選擇您要用於託管靜態網站的儲存貯體名稱。

1. 為您的儲存貯體啟用靜態網站託管，並輸入錯誤文件的確切名稱 (例如 `404.html`)。如需詳細資訊，請參閱[啟用網站託管](EnableWebsiteHosting.md)及[設定自訂錯誤文件](CustomErrorDocSupport.md)。

   啟用靜態網路託管之後，請繼續執行步驟 6。

1. 若要將錯誤文件上傳至您的儲存貯體，請執行下列其中一項：
   + 將錯誤文件檔案拖放至主控台儲存貯體清單中。
   + 選擇 **Upload** (上傳)，然後依照提示選擇並上傳索引檔案。

   如需逐步說明，請參閱「[上傳物件](upload-objects.md)」。

## 步驟 7：測試您的網站端點
<a name="step7-test-web-site"></a>

在設定儲存貯體的靜態網站託管後，您就可以測試網站端點。

**注意**  
Amazon S3 不支援使用 HTTPS 存取網站。若要使用 HTTPS，您可以使用 Amazon CloudFront，為 Amazon S3 上託管的靜態網站提供服務。  
如需詳細資訊，請參閱[如何使用 CloudFront 為 Amazon S3 上託管的靜態網站提供服務？](https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-serve-static-website/)和[要求在檢視者與 CloudFront 間，使用 HTTPS 來進行通訊](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html)。

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

1. 選擇 **Properties** (屬性)。

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

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

您已在 Amazon S3 上完成網站託管。此網站已可在 Amazon S3 網站端點上使用。但您可能有像 `example.com` 的網域，想要將其用來提供所建立之網站的內容。您也可能想要使用 Amazon S3 根網域支援來自 `http://www.example.com` 及 `http://example.com` 的請求。這需要額外的步驟。如需範例，請參閱 [教學課程：使用向 Route 53 註冊的自訂網域設定靜態網站](website-hosting-custom-domain-walkthrough.md)。

## 步驟 8：清除
<a name="getting-started-cleanup-s3-website-overview"></a>

若建立的靜態網站僅供學習練習之用，請先刪除已配置的 AWS 資源，如此即不會再產生費用。刪除 AWS 資源後，您的網站將無法再使用。如需詳細資訊，請參閱[刪除一般用途儲存貯體](delete-bucket.md)。