

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

# 啟用網站託管
<a name="EnableWebsiteHosting"></a>

將儲存貯體設定為靜態網站時，您必須啟用靜態網站託管、設定索引文件，以及設定許可。

您可以使用 Amazon S3 主控台、REST API、 AWS SDKs AWS CLI、 或 啟用靜態網站託管 CloudFormation。

若要使用自訂網域來設定您的網站，請參閱 [教學課程：使用向 Route 53 註冊的自訂網域設定靜態網站](website-hosting-custom-domain-walkthrough.md)。

## 使用 S3 主控台
<a name="HowDoIWebsiteConfiguration"></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 網站端點。將儲存貯體設為靜態網站之後，您可以使用此端點來測試您的網站。

## 使用 REST API
<a name="ConfigWebSiteREST"></a>

如需有關直接傳送 REST 請求以啟用靜態網站託管的詳細資訊，請參閱《Amazon Simple Storage Service API 參考》中的下列章節：
+ [PUT 儲存貯體網站](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html)
+ [GET 儲存貯體網站](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETwebsite.html)
+ [DELETE 儲存貯體網站](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETEwebsite.html)

## 使用 AWS SDKs
<a name="ManagingBucketWebsiteConfig"></a>

若要在 Amazon S3 託管靜態網站，可以設定網站託管用的 Amazon S3 儲存貯體，然後將網站內容上傳至儲存貯體。您也可以使用 AWS SDK，以程式設計方式建立、更新及刪除網站組態。SDK 提供 Amazon S3 REST API 的包裝函式類別。您也可以視應用程式之需要，直接從應用程式傳送 REST API 要求。

------
#### [ .NET ]

下列範例示範如何使用 適用於 .NET 的 AWS SDK 來管理儲存貯體的網站組態。若要為儲存貯體新增網站組態，請您提供儲存貯體名稱和網站組態。網站組態資訊必須含有索引文件，且包含選擇性錯誤文件。這些文件必須存放在儲存貯體中。如需詳細資訊，請參閱 [PUT 儲存貯體網站](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html)。如需 Amazon S3 網站功能的詳細資訊，請參閱 [使用 Amazon S3 託管靜態網站](WebsiteHosting.md)。

下列 C\$1 程式碼範例會將網站組態新增至指定的儲存貯體。組態會同時指定索引文件及錯誤文件名稱。如需有關設定和執行程式碼範例的資訊，請參閱《[適用於 .NET 的 AWS SDK 開發人員指南》中的適用於 .NET 的 SDK 入門](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)。 *AWS *

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class WebsiteConfigTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string indexDocumentSuffix = "*** index object key ***"; // For example, index.html.
        private const string errorDocument = "*** error object key ***"; // For example, error.html.
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;
        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            AddWebsiteConfigurationAsync(bucketName, indexDocumentSuffix, errorDocument).Wait();
        }

        static async Task AddWebsiteConfigurationAsync(string bucketName,
                                            string indexDocumentSuffix,
                                            string errorDocument)
        {
            try
            {
                // 1. Put the website configuration.
                PutBucketWebsiteRequest putRequest = new PutBucketWebsiteRequest()
                {
                    BucketName = bucketName,
                    WebsiteConfiguration = new WebsiteConfiguration()
                    {
                        IndexDocumentSuffix = indexDocumentSuffix,
                        ErrorDocument = errorDocument
                    }
                };
                PutBucketWebsiteResponse response = await client.PutBucketWebsiteAsync(putRequest);

                // 2. Get the website configuration.
                GetBucketWebsiteRequest getRequest = new GetBucketWebsiteRequest()
                {
                    BucketName = bucketName
                };
                GetBucketWebsiteResponse getResponse = await client.GetBucketWebsiteAsync(getRequest);
                Console.WriteLine("Index document: {0}", getResponse.WebsiteConfiguration.IndexDocumentSuffix);
                Console.WriteLine("Error document: {0}", getResponse.WebsiteConfiguration.ErrorDocument);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

下列 PHP 範例會將網站組態新增至指定的儲存貯體。`create_website_config` 方法明確地提供了索引文件及錯誤文件名稱。此範例同時也擷取網站組態，並會印出回應。如需 Amazon S3 網站功能的詳細資訊，請參閱 [使用 Amazon S3 託管靜態網站](WebsiteHosting.md)。

如需適用於 Ruby 的 AWS SDK API 的詳細資訊，請前往[AWS 適用於 Ruby 的 SDK - 第 2 版](https://docs.aws.amazon.com/sdkforruby/api/index.html)。

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);


// Add the website configuration.
$s3->putBucketWebsite([
    'Bucket'                => $bucket,
    'WebsiteConfiguration'  => [
        'IndexDocument' => ['Suffix' => 'index.html'],
        'ErrorDocument' => ['Key' => 'error.html']
    ]
]);

// Retrieve the website configuration.
$result = $s3->getBucketWebsite([
    'Bucket' => $bucket
]);
echo $result->getPath('IndexDocument/Suffix');

// Delete the website configuration.
$s3->deleteBucketWebsite([
    'Bucket' => $bucket
]);
```

------

## 使用 AWS CLI
<a name="enabling-website-cli"></a>

如需使用 AWS CLI 將 S3 儲存貯體設定為靜態網站的詳細資訊，請參閱《 *AWS CLI 命令參考*》中的[網站](https://docs.aws.amazon.com/cli/latest/reference/s3/website.html)。

接下來，您必須設定索引文件並設定許可。如需詳細資訊，請參閱 [設定索引文件](IndexDocumentSupport.md) 及 [設定網站存取許可](WebsiteAccessPermissionsReqd.md)。

您也可以選擇性地設定[錯誤文件](CustomErrorDocSupport.md)、[Web 流量記錄](LoggingWebsiteTraffic.md)或[重新導向](how-to-page-redirect.md)。