

# 教程：使用注册到 Route 53 的自定义域配置静态网站
使用自定义域配置静态网站

假设您要在 Amazon S3 上托管静态网站。您向 Amazon Route 53 注册了一个域（如 `example.com`），希望从 Amazon S3 内容响应对 `http://www.example.com` 和 `http://example.com` 的请求。您可以使用本演练了解如何托管静态网站以及在 Amazon S3 上为具有注册到 Route 53 的自定义域名的网站创建重定向。您可以使用要在 Amazon S3 上托管的现有网站，也可以使用本演练从头开始。

完成本演练后，您可以选择使用 Amazon CloudFront 来提高网站的性能。有关更多信息，请参阅 [使用 Amazon CloudFront 为网站提速](website-hosting-cloudfront-walkthrough.md)。

**注意**  
Amazon S3 网站端点不支持 HTTPS 或接入点。如果要使用 HTTPS，则可以使用 Amazon CloudFront 为 Amazon S3 上托管的静态网站提供服务。  
有关如何使用 CloudFront 和 Amazon S3 安全地托管内容的教程，请参阅[教程：使用 Amazon S3、Amazon CloudFront 和 Amazon Route 53 托管点播流视频](tutorial-s3-cloudfront-route53-video-streaming.md)。有关更多信息，请参阅[如何使用 CloudFront 为 Amazon S3 上托管的静态网站提供服务？](https://www.amazonaws.cn/premiumsupport/knowledge-center/cloudfront-serve-static-website/)以及[要求在查看器和 CloudFront 之间使用 HTTPS 进行通信](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html)。

**使用 Amazon CloudFormation 模板自动设置静态网站**  
可以使用 Amazon CloudFormation 模板自动设置静态网站。Amazon CloudFormation 模板设置托管安全静态网站所需的组件，这样您便能更多地关注网站内容而不是配置组件。

Amazon CloudFormation 模板包含以下组件：
+ Amazon S3 – 创建一个 Amazon S3 存储桶来托管静态网站。
+ CloudFront – 创建 CloudFront 分配来为静态网站提速。
+ Lambda@Edge – 使用 [Lambda@Edge](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) 向每个服务器响应添加安全标头。安全标头是 Web 服务器响应中的一组标头，它们告诉 Web 浏览器采取额外的安全预防措施。有关更多信息，请参阅博客文章：[使用 Lambda@Edge 和 Amazon CloudFront 添加 HTTP 安全标头](https://www.amazonaws.cn/blogs/networking-and-content-delivery/adding-http-security-headers-using-lambdaedge-and-amazon-cloudfront/)。

此 Amazon CloudFormation 模板可供您下载和使用。有关信息和说明，请参阅《Amazon CloudFront 开发人员指南》**中的[安全静态网站入门](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)。

**Topics**
+ [

## 开始前的准备工作
](#root-domain-walkthrough-before-you-begin)
+ [

## 步骤 1：将自定义域注册到 Route 53
](#website-hosting-custom-domain-walkthrough-domain-registry)
+ [

## 步骤 2：创建两个存储桶
](#root-domain-walkthrough-create-buckets)
+ [

## 步骤 3：为网站托管配置根域存储桶
](#root-domain-walkthrough-configure-bucket-aswebsite)
+ [

## 步骤 4：为网站重定向配置子域存储桶
](#root-domain-walkthrough-configure-redirect)
+ [

## 步骤 5：配置网站流量的日志记录
](#root-domain-walkthrough-configure-logging)
+ [

## 步骤 6：上传索引和网站内容
](#upload-website-content)
+ [

## 步骤 7：上传错误文档
](#configure-error-document-root-domain)
+ [

## 步骤 8：编辑 S3 屏蔽公共访问权限设置
](#root-domain-walkthrough-configure-bucket-permissions)
+ [

## 步骤 9：附加存储桶策略
](#add-bucket-policy-root-domain)
+ [

## 步骤 10：测试您的域端点
](#root-domain-walkthrough-test-website)
+ [

## 步骤 11：为您的域和子域添加别名记录
](#root-domain-walkthrough-add-record-to-hostedzone)
+ [

## 步骤 12：测试网站
](#root-domain-testing)
+ [

# 使用 Amazon CloudFront 为网站提速
](website-hosting-cloudfront-walkthrough.md)
+ [

# 清理示例资源
](getting-started-cleanup.md)

## 开始前的准备工作


在按照此示例中的步骤操作时，您将使用以下服务：

**Amazon Route 53** – 您使用 Route 53 注册域，并定义要将您的域的 Internet 流量路由到何处。此示例介绍如何创建 Route 53 别名记录，以便将您的域（`example.com`）和子域（`www.example.com`）的流量路由到包含 HTML 文件的 Amazon S3 存储桶。

**Amazon S3** – 您将使用 Amazon S3 创建存储桶、上传示例网站页面、配置权限以便每个人都可以查看内容，然后为网站托管配置存储桶。

## 步骤 1：将自定义域注册到 Route 53


如果您还没有已注册的域名（如 `example.com`），则可向 Route 53 注册一个域名。有关更多信息，请参阅 *Amazon Route 53 开发人员指南*中的[注册新域](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/domain-register.html)。注册您的域名后，您可以为网站托管创建并配置 Amazon S3 存储桶。

## 步骤 2：创建两个存储桶


要同时支持来自根域和子域的请求，您需要创建以下两个存储桶。
+ **域存储桶** – `example.com`
+ **子域存储桶** – `www.example.com` 

这两个存储桶的名称必须与您的域名完全匹配。在此示例中，域名为 `example.com`。您将您的内容托管在根域存储桶（`example.com`）之外。您为子域存储桶（`www.example.com`）创建重定向请求。如果有人在其浏览器中输入 `www.example.com`，他们将重定向到 `example.com` 并看到该名称的 Amazon S3 存储桶中托管的内容。

**为网站托管创建存储桶**

以下说明概述了如何创建存储桶以用于网站托管。有关创建存储桶的详细分步说明，请参阅[创建通用存储桶](create-bucket-overview.md)。

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 选择根域存储桶：

   1. 在页面顶部的导航栏中，选择当前所显示 Amazon Web Services 区域的名称。接下来，选择要在其中创建存储桶的区域。
**注意**  
要最大程度地减少延迟和成本以及满足法规要求，请选择一个靠近您的区域。在某一区域存储的对象将一直留在该区域，除非您特意将其转移到其他区域。有关 Amazon S3 Amazon Web Services 区域的列表，请参阅《Amazon Web Services 一般参考》**中的 [Amazon Web Services 服务 端点](https://docs.amazonaws.cn/general/latest/gr/rande.html#s3_region)。

   1. 在左侧导航窗格中，选择**通用存储桶**。

   1. 选择**创建存储桶**。此时将打开**创建存储桶**页面。

   1. 输入 **Bucket name（存储桶名称）**（例如 **example.com**）。

   1. 请选择要在其中创建存储桶的区域。

      请选择一个在地理上靠近您的区域可最大程度地减少延迟和成本，或满足法规要求。您选择的区域决定了您的 Amazon S3 网站端点。有关更多信息，请参阅 [网站端点](WebsiteEndpoints.md)。

   1. 要接受默认设置并创建存储桶，请选择 **Create（创建）**。

1. 创建您的子域存储桶：

   1. 请选择 **Create bucket（创建存储桶）**。

   1. 输入 **Bucket name（存储桶名称）**（例如 **www.example.com**）。

   1. 请选择要在其中创建存储桶的区域。

      请选择一个在地理上靠近您的区域可最大程度地减少延迟和成本，或满足法规要求。您选择的区域决定了您的 Amazon S3 网站端点。有关更多信息，请参阅 [网站端点](WebsiteEndpoints.md)。

   1. 要接受默认设置并创建存储桶，请选择 **Create（创建）**。

在下一步中，您配置 `example.com` 进行网站托管。

## 步骤 3：为网站托管配置根域存储桶
步骤 3：配置根域存储桶

在此步骤中，您将根域存储桶（`example.com`）配置为网站。该存储桶将包含您的网站内容。为网站托管配置存储桶时，您可以使用[网站端点](WebsiteEndpoints.md)访问网站。

**启用静态网站托管**

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**。

1. 在存储桶列表中，选择要为其启用静态网站托管的存储桶的名称。

1. 选择**属性**。

1. 在**静态网站托管**下，请选择**编辑**。

1. 请选择**使用此存储桶托管网站**。

1. 在**静态网站托管**下，请选择**启用**。

1. 在 **Index document (索引文档)** 中，输入索引文档的文件名，通常为 `index.html`。

   索引文档名称区分大小写，并且必须与您计划上传到 S3 存储桶的 HTML 索引文档的文件名完全匹配。当您为网站托管配置存储桶时，您必须指定索引文档。当对根域或任何子文件夹发出请求时，Amazon S3 将返回此索引文档。有关更多信息，请参阅 [配置索引文档](IndexDocumentSupport.md)。

1. 要为 4XX 类错误提供您自己的自定义错误文档，请在**错误文档**中输入自定义错误文档文件名。

   错误文档名称区分大小写，并且必须与您计划上传到 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. 在**静态网站托管**下，记下**端点**。

   **端点**是存储桶的 Amazon S3 网站端点。将存储桶配置为静态网站后，您可以使用此端点来测试您的网站。

在[编辑屏蔽公共访问权限设置](https://docs.amazonaws.cn/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html#root-domain-walkthrough-configure-bucket-permissions)并[添加允许公有读取访问的存储桶策略](https://docs.amazonaws.cn/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html#add-bucket-policy-root-domain)后，您可以使用网站端点访问您的网站。

在下一步中，您将子域 (`www.example.com`) 配置为将请求重定向到您的域 (`example.com`)。

## 步骤 4：为网站重定向配置子域存储桶
步骤 4：为重定向配置子域存储桶

在为网站托管配置了根域存储桶后，可以将子域存储桶配置为将所有请求重定向到该域。在此示例中，对 `www.example.com` 的所有请求都重定向到 `example.com`。

**配置重定向请求**

1. 在 Amazon S3 控制台上的**通用存储桶**列表中，选择子域存储桶名称（在本例中为 `www.example.com`）。

1. 选择**属性**。

1. 在**静态网站托管**下，选择**编辑**。

1. 请选择 **Redirect requests for an object**（重新导向对于对象的请求）。

1. 在 **Target bucket（目标存储桶）**框中，输入您的根域（例如 **example.com**）。

1. 对于 **Protocol**（协议），请选择 **http**。

1. 选择**保存更改**。

## 步骤 5：配置网站流量的日志记录
步骤 5：配置日志记录

如果想要跟踪访问您的网站的访问者人数，则可以选择对根域存储桶启用日志记录。有关更多信息，请参阅 [使用服务器访问日志记录来记录请求](ServerLogs.md)。如果您计划使用 Amazon CloudFront 来为网站提速，也可以使用 CloudFront 日志记录。

**为根域存储桶启用服务器访问日志记录**

1. 通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 例如，在您创建存储桶（配置为静态网站）的同一区域中，创建用于日志记录的存储桶（例如 `logs.example.com`）。

1. 为服务器访问日志记录日志文件创建文件夹（例如，`logs`）。

1. （可选）如果要使用 CloudFront 提高网站性能，请为 CloudFront 日志文件创建一个文件夹（例如，`cdn`）。
**重要**  
当您创建或更新分配并启用 CloudFront 日志记录时，CloudFront 会更新存储桶访问控制列表（ACL），以提供 `awslogsdelivery` 账户授予将日志写入存储桶的 `FULL_CONTROL` 权限。有关更多信息，请参阅 *Amazon CloudFront Developer Guide*（Amazon CloudFront 开发人员指南）中的 [Permissions required to configure standard logging and to access your log files](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#AccessLogsBucketAndFileOwnership)（配置标准日志和访问日志文件所需的权限）。如果存储日志的存储桶使用 S3 对象所有权的强制存储桶拥有者设置来禁用 ACL，则 CloudFront 无法将日志写入存储桶。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

1. 在 **Buckets**（存储桶）列表中，请选择您的根域存储桶。

1. 请选择**属性**。

1. 在 **Server access logging**（服务器访问日志记录）下，请选择 **Edit**（编辑）。

1. 请选择 **Enable**。

1. 在 **Target bucket**（目标存储桶）下，请选择服务器访问日志的存储桶和文件夹目标：
   + 浏览到文件夹和存储桶位置：

     1. 请选择 **Browse S3**（浏览 S3）。

     1. 请选择存储桶名称，然后选择日志文件夹。

     1. 请选择 **Choose path**（选择路径）。
   + 输入 S3 存储桶路径，例如 `s3://logs.example.com/logs/`。

1. 选择**保存更改**。

   在日志存储桶中，您现在可以访问日志。Amazon S3 每 2 小时将网站访问日志写入您的日志存储桶一次。

## 步骤 6：上传索引和网站内容


在此步骤中，您可以将索引文档和可选网站内容上传到您的根域存储桶。

当您为存储桶启用静态网站托管时，您可以输入索引文档的名称（例如，**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. 将索引文件保存在本地。

   索引文档文件名必须与您在**静态网站托管**对话框中输入的索引文档名称完全匹配。索引文档名称区分大小写。例如，如果在**静态网站托管**对话框中为**索引文档**名称输入 `index.html`，则索引文档文件名也必须是 `index.html`，而不是 `Index.html`。

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**。

1. 在存储桶列表中，选择要用于托管静态网站的存储桶的名称。

1. 为您的存储桶启用静态网站托管，并输入索引文档的确切名称（例如 `index.html`）。有关更多信息，请参阅 [启用网站托管](EnableWebsiteHosting.md)。

   启用静态网站托管后，继续执行步骤 6。

1. 要将索引文档上传到存储桶，请执行以下操作之一：
   + 将索引文件拖放到控制台存储桶列表中。
   + 选择**上传**，然后按照提示选择并上传索引文件。

   如需分步指导，请参阅 [上传对象](upload-objects.md)。

1. （可选）将其他网站内容上传到您的存储桶。

## 步骤 7：上传错误文档


当您为存储桶启用静态网站托管时，请输入错误文档的名称（例如，**404.html**）。为存储桶启用静态网站托管后，您可以将具有此错误文档名称的 HTML 文件上传到存储桶。

**要配置错误文档**

1. 创建错误文档，例如 `404.html`。

1. 将错误文档文件保存在本地。

   错误文档名称区分大小写，必须与启用静态网站托管时输入的名称完全匹配。例如，如果在**静态网站托管**对话框中为**错误文档**名称输入 `404.html`，则错误文档文件名也必须是 `404.html`。

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**。

1. 在存储桶列表中，选择要用于托管静态网站的存储桶的名称。

1. 为您的存储桶启用静态网站托管，并输入错误文档的确切名称（例如 `404.html`）。有关更多信息，请参阅[启用网站托管](EnableWebsiteHosting.md)和[配置自定义错误文档](CustomErrorDocSupport.md)。

   启用静态网站托管后，继续执行步骤 6。

1. 要将错误文档上传到存储桶，请执行以下操作之一：
   + 将错误文档文件拖放到控制台存储桶列表中。
   + 选择**上传**，然后按照提示选择并上传索引文件。

   如需分步指导，请参阅 [上传对象](upload-objects.md)。

## 步骤 8：编辑 S3 屏蔽公共访问权限设置
步骤 8：编辑屏蔽公共访问权限

在此示例中，您编辑域存储桶（`example.com`）的屏蔽公共访问权限设置以允许公有访问。

默认情况下，Amazon S3 阻止对您的账户和存储桶的公有访问权限。如果要使用存储桶托管静态网站，您可以使用以下步骤编辑您的屏蔽公共访问权限设置。

**警告**  
在完成这些步骤之前，请查看[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)，来确保您了解并接受支持公共访问权限所涉及的风险。当您关闭屏蔽公共访问权限设置以使您的存储桶变为公有时，Internet 上的任何人都可以访问您的存储桶。我们建议您阻止对存储桶的所有公有访问。

1. 通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 请选择已配置为静态网站的存储桶的名称。

1. 选择**权限**。

1. 在**屏蔽公共访问权限（存储桶设置）**下，请选择**编辑**。

1. 清除**阻止*所有*公有访问**，然后选择**保存更改**。  
![\[Amazon S3 控制台，显示屏蔽公共访问权限存储桶设置。\]](http://docs.amazonaws.cn/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   Amazon S3 关闭了存储桶的屏蔽公共访问权限设置。要创建公有静态网站，可能还必须[为您的账户配置屏蔽公共访问权限设置](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/block-public-access-account.html)，然后再添加存储桶策略。如果当前已开启账户的屏蔽公共访问权限设置，您将在**屏蔽公共访问权限（存储桶设置）**下看到一条备注。

## 步骤 9：附加存储桶策略


在此示例中，您将存储桶策略附加到域存储桶（`example.com`）以允许进行公有读取访问。例如，您可以将示例存储桶策略中的 *Bucket-Name* 替换为域存储桶的名称，例如 `example.com`。

在编辑 S3 屏蔽公共访问权限设置后，您可以添加存储桶策略以授予对存储桶的公有读取访问权限。当您授予公有读取访问权限时，Internet 上的任何人都可以访问您的存储桶。

**重要**  
下面的策略仅供举例说明，仍允许完全访问您存储桶的内容。在继续执行此步骤之前，请查看[如何保护 Amazon S3 存储桶中的文件？](https://www.amazonaws.cn/premiumsupport/knowledge-center/secure-s3-resources/)，以确保您了解保护 S3 存储桶中文件的最佳实践以及授予公有访问权限所涉及的风险。

1. 在**存储桶** 下，请选择存储桶的名称。

1. 选择**权限**。

1. 在**存储桶策略**下，请选择**编辑**。

1. 要授予对网站的公有读取访问权限，请复制以下存储桶策略，将其粘贴到**存储桶策略编辑器**中。

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

1. 将 `Resource` 更新为您的存储桶名称。

   在上述示例存储桶策略中，*Bucket-Name* 是存储桶名称的占位符。要将此存储桶策略用于您自己的存储桶，您必须更新此名称以匹配您的存储桶名称。

1. 选择**保存更改**。

   此时将显示一条消息，指示存储桶策略已成功添加。

   如果您看到显示 `Policy has invalid resource` 的错误，请确认存储桶策略中的存储桶名称与您的存储桶名称匹配。有关添加存储桶策略的信息，请参阅[如何添加 S3 存储桶策略？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/add-bucket-policy.html)

   如果您收到错误消息且无法保存存储桶策略，请检查您的账户和存储桶的屏蔽公共访问权限设置以确认您允许对存储桶进行公有访问。

在下一步中，您可以找出您的网站端点并测试您的域端点。

## 步骤 10：测试您的域端点


在将您的域存储桶配置为托管公有网站之后，可以测试您的端点。有关更多信息，请参阅 [网站端点](WebsiteEndpoints.md)。您只能测试域存储桶的端点，因为您的子域存储桶是为网站重定向设置的，而不是静态网络托管。

**注意**  
Amazon S3 不支持对该网站进行 HTTPS 访问。如果要使用 HTTPS，则可以使用 Amazon CloudFront 为 Amazon S3 上托管的静态网站提供服务。  
有关更多信息，请参阅[如何使用 CloudFront 为 Amazon S3 上托管的静态网站提供服务？](https://www.amazonaws.cn/premiumsupport/knowledge-center/cloudfront-serve-static-website/)以及[要求在查看器和 CloudFront 之间使用 HTTPS 进行通信](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html)。

1. 在 **Buckets（存储桶）**下，请选择存储桶的名称。

1. 请选择**属性**。

1. 在页面底部的 **Static website hosting（静态网站托管）**下，请选择 **Bucket website endpoint（存储桶网站端点）**。

   您的索引文档将在单独的浏览器窗口中打开。

接下来，您使用 Amazon Route 53 使客户能够使用这两个自定义 URL 导航到您的站点。

## 步骤 11：为您的域和子域添加别名记录
步骤 11：添加别名记录

在此步骤中，您创建别名记录并将其添加到您的域的托管区域，而这些别名记录将映射 `example.com` 和 `www.example.com`。别名记录使用 Amazon S3 网站端点，而不使用 IP 地址。Amazon Route 53 保留了别名记录和 Amazon S3 存储桶所在的 IP 地址之间的映射。您创建两个别名记录，一个用于根域，一个用于子域。

### 为根域和子域添加别名记录


**为您的根域 (`example.com`) 添加别名记录**

1. 通过以下网址打开 Route 53 控制台：[https://console.aws.amazon.com/route53/](https://console.amazonaws.cn/route53/)。
**注意**  
如果您尚未使用 Route 53，请参阅 *Amazon Route 53 开发人员指南*中的[步骤 1：注册域](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/getting-started.html#getting-started-find-domain-name)。完成设置后，可继续按说明操作。

1. 请选择**托管区域**。

1. 在托管区域列表中，请选择与您的域名匹配的托管区域的名称。

1. 请选择**创建记录**。

1. 请选择**切换到向导**。
**注意**  
如果要使用快速创建来创建别名记录，请参阅[配置 Route 53 以将流量路由到 S3 存储桶](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/RoutingToS3Bucket.html#routing-to-s3-bucket-configuring)。

1. 请选择**简单路由**，然后选择**下一步**。

1. 请选择**定义简单记录**。

1. 在**记录名称**中，接受默认值，该值为您的托管区域和您的域的名称。

1. 在**值/流量路由至**中，请选择**向 S3 网站端点添加别名**。

1. 请选择区域。

1. 请选择 S3 存储桶。

   存储桶名称应与 **Name（名称）**框中显示的名称相匹配。例如，在**选择 S3 存储桶**列表中，存储桶名称将与创建存储桶所在区域的 Amazon S3 网站端点一起显示 `s3-website-us-west-1.amazonaws.com (example.com)`。

   如果出现以下情况，请选择** S3 存储桶**将列出一个存储桶：
   + 您已将存储桶配置为静态网站。
   + 存储桶名称与您正在创建的记录的名称相同。
   + 当前 Amazon Web Services 账户 创建了存储桶。

   如果您的存储桶未显示在**选择 S3 存储桶**列表中，请输入在其中创建存储桶的区域的 Amazon S3 网站端点，例如 **s3-website-us-west-2.amazonaws.com**。有关 Amazon S3 网站端点的完整列表，请参阅 [Amazon S3 网站端点](https://docs.amazonaws.cn/general/latest/gr/s3.html#s3_website_region_endpoints)。有关别名目标的更多信息，请参阅 * Amazon Route 53 开发人员指南*中的[ 值/路由流量至](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/resource-record-sets-values-alias.html#rrsets-values-alias-alias-target)。

1. 在**记录类型**中，请选择** A- 将流量路由到 IPv4 地址和某些 Amazon 资源**。

1. 对于**评估目标运行状况**，请选择**否**。

1. 请选择**定义简单记录**。

**为您的子域添加别名记录 (`www.example.com`)**

1. 在**配置记录**下，请选择**定义简单记录**。

1. 在子域的**记录名称**中，键入 `www`。

1. 在**值/流量路由至**中，请选择**向 S3 网站端点添加别名**。

1. 请选择区域。

1. 请选择 S3 存储桶，例如 `s3-website-us-west-2.amazonaws.com (www.example.com)`。

   如果您的存储桶未显示在**选择 S3 存储桶**列表中，请输入在其中创建存储桶的区域的 Amazon S3 网站端点，例如 **s3-website-us-west-2.amazonaws.com**。有关 Amazon S3 网站端点的完整列表，请参阅 [Amazon S3 网站端点](https://docs.amazonaws.cn/general/latest/gr/s3.html#s3_website_region_endpoints)。有关别名目标的更多信息，请参阅 * Amazon Route 53 开发人员指南*中的[ 值/路由流量至](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/resource-record-sets-values-alias.html#rrsets-values-alias-alias-target)。

1. 在**记录类型**中，请选择** A- 将流量路由到 IPv4 地址和某些 Amazon 资源**。

1. 对于**评估目标运行状况**，请选择**否**。

1. 请选择**定义简单记录**。

1. 在**配置记录**页面上，请选择**创建记录**。

**注意**  
更改通常在 60 秒内传播到所有 Route 53 服务器。传播完成后，您可以使用在此步骤中创建的别名记录的名称将流量路由到 Amazon S3 存储桶。

### 为根域和子域添加别名记录（旧 Route 53 控制台）


**为您的根域 (`example.com`) 添加别名记录**

Route 53 控制台进行了重新设计。在 Route 53 控制台中，您可以暂时使用旧控制台。如果您选择使用旧 Route 53 控制台，请使用以下过程。

1. 通过以下网址打开 Route 53 控制台：[https://console.aws.amazon.com/route53/](https://console.amazonaws.cn/route53/)。
**注意**  
如果您尚未使用 Route 53，请参阅 *Amazon Route 53 开发人员指南*中的[步骤 1：注册域](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/getting-started.html#getting-started-find-domain-name)。完成设置后，可继续按说明操作。

1. 请选择 **Hosted Zones (托管区域)**。

1. 在托管区域列表中，请选择与您的域名匹配的托管区域的名称。

1. 请选择 **Create Record Set**。

1. 指定以下值：  
**名称**  
接受默认值，该值为您的托管区域和您的域的名称。  
对于根域，您不需要在 **Name (名称)** 字段中输入任何其他信息。  
**类型**  
请选择 **A – IPv4 address（A – IPv4 地址）**。  
**别名**  
请选择**是**。  
**别名目标**  
在列表的 **S3 website endpoints（S3 网站端点）**部分，请选择您的存储桶名称。  
存储桶名称应与 **Name（名称）**框中显示的名称相匹配。在 **Alias Target（别名目标）**列表中，存储桶名称后跟在其中创建存储桶的区域的 Amazon S3 网站端点，例如 `example.com (s3-website-us-west-2.amazonaws.com)`。**Alias Target（别名目标）**会在以下情况下列出存储桶：  
   + 您已将存储桶配置为静态网站。
   + 存储桶名称与您正在创建的记录的名称相同。
   + 当前 Amazon Web Services 账户 创建了存储桶。
如果您的存储桶未显示在 **Alias Target**（别名目标）列表中，请输入在其中创建存储桶的区域的 Amazon S3 网站端点，例如 `s3-website-us-west-2`。有关 Amazon S3 网站端点的完整列表，请参阅 [Amazon S3 网站端点](https://docs.amazonaws.cn/general/latest/gr/s3.html#s3_website_region_endpoints)。有关别名目标的更多信息，请参阅 * Amazon Route 53 开发人员指南*中的[ 值/路由流量至](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/resource-record-sets-values-alias.html#rrsets-values-alias-alias-target)。  
**路由策略**  
接受默认值 **Simple**。  
**Evaluate Target Health**  
接受默认值 **No**。

1. 请选择**创建**。

**为您的子域添加别名记录 (`www.example.com`)**

1. 在您的根域 (`example.com`) 的托管区域中，请选择 **Create Record Set (创建记录集)**。

1. 指定以下值：  
**名称**  
对于子域，在框中输入 `www`。  
**类型**  
请选择 **A – IPv4 address（A – IPv4 地址）**。  
**别名**  
请选择**是**。  
**别名目标**  
在列表的 **S3 website endpoints（S3 网站端点）**部分中，请选择 **Name（名称）**字段中显示的相同存储桶名称，例如 `www.example.com (s3-website-us-west-2.amazonaws.com)`。  
**路由策略**  
接受默认值 **Simple**。  
**Evaluate Target Health**  
接受默认值 **No**。

1. 请选择**创建**。

**注意**  
更改通常在 60 秒内传播到所有 Route 53 服务器。传播完成后，您可以使用在此步骤中创建的别名记录的名称将流量路由到 Amazon S3 存储桶。

## 步骤 12：测试网站


验证网站和重定向正常工作。在浏览器中，输入 URL。在本示例中，可以尝试以下 URL：
+ **域**（`http://example.com`）– 显示 `example.com` 存储桶中的索引文档。
+ **子域** (`http://www.example.com`) – 将您的请求重定向到 `http://example.com`。您会在 `example.com` 存储桶中看到索引文档。

如果您的网站或重定向链接不起作用，则可以尝试以下操作：
+ **清除缓存** – 清除 Web 浏览器缓存。
+ **检查名称服务器** – 如果在清除缓存后，您的网页和重定向链接无法正常工作，则可以比较域的名称服务器和托管区域的名称服务器。如果名称服务器不匹配，您可能需要更新域名服务器，以便匹配在托管区域下方列出的服务器。有关更多信息，请参阅[为域添加或更改名称服务器和粘附记录](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/domain-name-servers-glue-records.html)。

在成功测试根域和子域后，您可以设置 [Amazon CloudFront](https://www.amazonaws.cn/cloudfront) 分配以提高网站的性能，并提供可用于查看网站流量的日志。有关更多信息，请参阅 [使用 Amazon CloudFront 为网站提速](website-hosting-cloudfront-walkthrough.md)。

# 使用 Amazon CloudFront 为网站提速


您可以使用 [Amazon CloudFront](https://www.amazonaws.cn/cloudfront) 来提高 Amazon S3 网站的性能。CloudFront 可将您的网站文件（如 HTML、图像和视频）提供给全球各地的数据中心（称为*边缘站点*）使用。当访问者从您的网站请求文件时，CloudFront 会自动将请求重定向到最近边缘站点上的文件副本。这时的下载速度会比访问者从更远的数据中心请求该内容更快。

CloudFront 会将内容在边缘站点上缓存您指定的时间。如果访问者请求已过期的缓存内容，CloudFront 会检查来源服务器，确定该内容是否有更新的版本可用。如果有更新的版本，则 CloudFront 将新版本复制到该边缘站点。当访问者请求内容时，您对原始内容所做的更改便会复制到边缘站点。

**在没有 Route 53 的情况下使用 CloudFront**  
本页面上的教程使用 Route 53 来指向您的 CloudFront 分配。但是，如果您想在不使用 Route 53 的情况下使用 CloudFront 提供托管在 Amazon S3 存储桶中的内容，请参阅 [Amazon CloudFront Tutorials: Setting up a Dynamic Content Distribution for Amazon S3](https://www.amazonaws.cn/cloudfront/getting-started/S3/)。在使用 CloudFront 提供托管在 Amazon S3 存储桶中的内容时，您可以使用任何存储桶名称，并且同时支持 HTTP 和 HTTPS。

**使用 Amazon CloudFormation 模板自动执行设置过程**  
有关使用 Amazon CloudFormation 模板配置安全静态网站以创建 CloudFront 分配来为您的网站提供服务的更多信息，请参阅《*Amazon CloudFront 开发人员指南*》中的[安全静态网站入门](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)。

**Topics**
+ [

## 步骤 1：创建 CloudFront 分配
](#create-distribution)
+ [

## 步骤 2：更新域和子域的记录集
](#update-record-sets)
+ [

## （可选）步骤 3：检查日志文件
](#check-log-files)

## 步骤 1：创建 CloudFront 分配


首先，创建 CloudFront 分配。这将使您的网站可供全球各地的数据中心使用。

**使用 Amazon S3 源创建分配**

1. 通过 打开 CloudFront 控制台[https://console.amazonaws.cn/cloudfront/v4/home](https://console.amazonaws.cn/cloudfront/v4/home)

1. 选择 **Create Distribution**。

1. 在 **Create Distribution**（创建分配）页面上的 **Origin Settings**（源设置）部分中，对于 **Origin Domain Name**（源域名），输入您的存储桶的 Amazon S3 网站端点，例如 **example.com.s3-website.us-west-1.amazonaws.com**。

   CloudFront 将为您填写 **Origin ID (源 ID)**。

1. 对于 **Default Cache Behavior Settings (默认缓存行为设置)**，将值保留设置为默认值。

   当为**查看器协议策略**使用默认设置时，您可以为静态网站使用 HTTPS。有关这些配置选项的更多信息，请参阅《Amazon CloudFront 开发人员指南》**中的[您创建或更新 Web 分配时指定的值](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/WorkingWithDownloadDistributions.html#DownloadDistValuesYouSpecify)。

1. 对于 **Distribution Settings**，执行以下操作：

   1. 将 **Price Class (价格级别)** 的设置保留为 **Use All Edge Locations (Best Performance) (使用所有节点 (最佳性能))**。

   1. 将 **Alternate Domain Names (CNAMEs)**（备用域名(CNAME)） 设置为根域和 `www` 子域。在本教程中，它们是 `example.com` 和 `www.example.com`。
**重要**  
在执行该步骤之前，请注意[使用备用域名的要求](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-requirements)，尤其是需要使用有效的 SSL/TLS 证书。

   1. 对于 **SSL 证书**，选择**自定义 SSL 证书 (example.com)**，然后选择涵盖域名和子域名的自定义证书。

      有关更多信息，请参阅《Amazon CloudFront 开发人员指南》**中的 [SSL 证书](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesSSLCertificate)。

   1. 在 **Default Root Object (默认根对象)** 中，输入索引文档的名称，例如 `index.html`。

      如果用于访问分配的 URL 不包含文件名，CloudFront 分配将返回索引文档。**Default Root Object (默认根对象)** 应该与静态网站的索引文档的名称完全匹配。有关更多信息，请参阅 [配置索引文档](IndexDocumentSupport.md)。

   1. 将 **Logging (日志记录)** 设置为 **On (打开)**。
**重要**  
当您创建或更新分配并启用 CloudFront 日志记录时，CloudFront 会更新存储桶访问控制列表（ACL），以提供 `awslogsdelivery` 账户 `FULL_CONTROL` 权限，从而将日志写入您的存储桶。有关更多信息，请参阅 *Amazon CloudFront Developer Guide*（Amazon CloudFront 开发人员指南）中的 [Permissions required to configure standard logging and to access your log files](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#AccessLogsBucketAndFileOwnership)（配置标准日志和访问日志文件所需的权限）。如果存储日志的存储桶使用 S3 对象所有权的强制存储桶拥有者设置来禁用 ACL，则 CloudFront 无法将日志写入存储桶。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

   1. 对于 **Bucket for Logs**，选择您创建的日志记录存储桶。

      有关配置日志记录存储桶的更多信息，请参阅[（可选）记录 Web 流量](LoggingWebsiteTraffic.md)。

   1. 如果您要将由流量生成的日志存储到文件夹中的 CloudFront 分配，请在 **Log Prefix (日志前缀)** 中键入文件夹名称。

   1. 将所有其他设置保留为默认值。

1. 选择 **Create Distribution**。

1. 要查看分配的状态，请在控制台中找到该分配，然后检查 **Status** 列。

   `InProgress` (进行中) 状态表示分配尚未完成部署。

   分配部署完毕后，您可以使用新的 CloudFront 域名来引用您的内容。

1. 记录 CloudFront 控制台中显示的 **Domain Name (域名)** 值，例如 `dj4p1rv6mvubz.cloudfront.net`。

1. 要验证您的 CloudFront 分配是否正常运行，请在 Web 浏览器中输入该分配的域名。

   如果您的网站是可见的，则 CloudFront 分配正常工作。如果您的网站具有向 Amazon Route 53 注册的自定义域，您将需要 CloudFront 域名来在下一步更新记录集。

## 步骤 2：更新域和子域的记录集


现在您已成功地创建 CloudFront 分配，请更新 Route 53 中的别名记录以指向新的 CloudFront 分配。

**更新别名记录以指向 CloudFront 分配**

1. 通过以下网址打开 Route 53 控制台：[https://console.aws.amazon.com/route53/](https://console.amazonaws.cn/route53/)。

1. 在左侧导航中，选择 **Hosted zones（托管区）**。

1. 在 **Hosted Zones（托管区）**页上，选择为您的子域创建的托管区域，例如 `www.example.com`。

1. 在 **Records（记录）**下，选择您为子域创建的 *A* 记录。

1. 在 **Record details（记录详细信息）**下，选择 **Edit record（编辑记录）**。

1. 在 **Route traffic to（将流量路由至）**下，选择 **Alias to CloudFront distribution（别名到 CloudFront 分配）**。

1. 在 **Choose distribution（选择分配）**下，选择 CloudFront 分配。

1. 选择 **Save**。

1. 要将根域的 *A* 记录重定向到 CloudFront 分配，请对根域重复此过程，例如 `example.com`。

   记录集的更新需要 2 – 48 小时才能生效。

1. 要查看新的 *A* 记录是否已生效，请在 Web 浏览器中输入您的子域 URL，例如 `http://www.example.com`。

   如果您的浏览器不再重定向至根域（例如，`http://example.com`），则说明新的 A 记录已生效。当新 *A* 记录生效时，由新 *A* 记录路由到 CloudFront 分配的流量不会重定向到根域。任何使用 `http://example.com` 或 `http://www.example.com` 引用站点的访问者都会重定向到最近的 CloudFront 边缘站点，在这里可体验更快速的下载。
**提示**  
浏览器可以缓存重定向设置。如果您认为新的 *A* 记录设置应该已经生效，但是您的浏览器仍然将 `http://www.example.com` 重定向至 `http://example.com`，请尝试清除浏览器的历史记录和缓存，然后关闭再重新打开浏览器应用程序，或使用其他 Web 浏览器。

## （可选）步骤 3：检查日志文件


访问日志会告诉您有多少人正在访问网站。它们还包含有价值的业务数据，您可以使用 [Amazon EMR](https://docs.amazonaws.cn/emr/latest/DeveloperGuide/) 等其他服务分析这些数据。

CloudFront 日志存储在您在创建 CloudFront 分配并启用日志记录时所选择的存储桶和文件夹中。CloudFront 将在相应请求提出后的 24 小时内将日志写入您的日志存储桶。

**查看网站的日志文件**

1. 通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 为网站选择日志记录存储桶的名称。

1. 选择 CloudFront 日志文件夹。

1. 先下载由 CloudFront 编写的 `.gzip` 文件，然后再打开这些文件。

   如果您仅出于练习目的创建网站，则可以删除您所分配的资源，使其不再产生费用。为此，请参阅 [清理示例资源](getting-started-cleanup.md)。删除 Amazon 资源后，您的网站将不再可用。

# 清理示例资源
清理示例资源

如果您出于学习目的创建静态网站，应删除您分配的 Amazon 资源，使其不再产生费用。删除 Amazon 资源后，您的网站将不再可用。

**Topics**
+ [

## 步骤 1：删除 Amazon CloudFront 分配
](#getting-started-cleanup-cloudfront)
+ [

## 步骤 2：删除 Route 53 托管区域
](#getting-started-cleanup-route53)
+ [

## 步骤 3：禁用日志记录并删除 S3 存储桶
](#getting-started-cleanup-s3)

## 步骤 1：删除 Amazon CloudFront 分配


在删除 Amazon CloudFront 分配之前，您必须先将其禁用。已禁用的分发不再起作用，并且不会产生费用。您可以随时启用已禁用的分发。已禁用的分发在删除后将不再可用。

**禁用并删除 CloudFront 分配**

1. 通过 打开 CloudFront 控制台[https://console.amazonaws.cn/cloudfront/v4/home](https://console.amazonaws.cn/cloudfront/v4/home)

1. 选择要禁用的分配，然后选择**禁用**。

1. 当系统提示确认时，选择**是，禁用**。

1. 选择禁用的分配，然后选择**删除**。

1. 当系统提示进行确认时，选择 **Yes, Delete**。

## 步骤 2：删除 Route 53 托管区域


在删除托管区域之前，您必须先删除已创建的记录集。您不需要删除 NS 和 SOA 记录；删除托管区域时，会自动删除这些记录。

**删除记录集**

1. 通过以下网址打开 Route 53 控制台：[https://console.aws.amazon.com/route53/](https://console.amazonaws.cn/route53/)。

1.  在域名列表中，选择您的域名，然后选择 **Go to Record Sets**。

1. 在记录集列表中，选择您创建的 *A* 记录。

   每个记录集的类型均列在 **Type (类型)** 列中。

1. 选择 **Delete Record Set**。

1. 当系统提示进行确认时，选择 **Confirm**。

**删除 Route 53 托管区域**

1.  紧接上一个步骤，选择 **Back to Hosted Zones**。

1.  选择您的域名，然后选择 **Delete Hosted Zone**。

1.  当系统提示进行确认时，选择 **Confirm**。

## 步骤 3：禁用日志记录并删除 S3 存储桶


在删除您的 S3 存储桶之前，请确保已禁用该存储桶的日志记录。否则，在您删除存储桶时，Amazon会继续将日志写入其中。

**禁用存储桶的日志记录**

1. 通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在 **Buckets（存储桶）**下，选择存储桶名称，然后选择 **Properties（属性）**。

1. 从 **Properties** 中选择 **Logging**。

1. 取消选中**启用**复选框。

1. 选择**保存**。

现在您可以删除存储桶。有关更多信息，请参阅 [删除通用存储桶](delete-bucket.md)。