Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

示例:使用自定义域设置静态网站

假设您需要在 Amazon Simple Storage Service (Amazon S3) 上托管静态网站。您注册了一个域 (如 example.com),希望从 Amazon S3 内容响应对 http://www.example.comhttp://example.com 的请求。您无论是想在 Amazon S3 上托管现有静态网站还是从头开始创建网站,都可以使用此示例了解如何在 Amazon S3 上托管网站。

开始前的准备工作

在演练此示例中的步骤时,您将使用以下服务:

所选的域注册商 – 如果您还没有已注册的域名,例如 example.com,则需要使用所选的注册商创建并注册一个域名。通常,只需少量年费,即可注册域。有关注册域名的程序信息,请参阅注册商的网站。

Amazon S3 – 您将使用 Amazon S3 创建存储桶,上传示例网页,配置权限以允许每个人查看内容,然后为网站托管配置存储桶。在本示例中,由于要允许对 http://www.example.comhttp://example.com 的请求,因此您将创建两个存储桶;但您仅能在一个存储桶中托管内容。您将配置另一个 Amazon S3 存储桶,以便将请求重定向到托管内容的存储桶。

Amazon Route 53 – 您将配置 Amazon Route 53 作为 DNS 提供商。您将在 Amazon Route 53 中为您的域创建一个托管区域,并配置适用的 DNS 记录。如果您要从现有 DNS 提供商转换,则需要确保已转移了域的所有 DNS 记录。

我们建议您对域、域名系统 (DNS)、别名记录和 A 记录有基本的了解。对这些概念的详细说明不在本指南的范围内。您的域注册商应该会提供您所需要的任何基本信息。

在本例中,我们使用 Amazon Route 53,不过大多数注册商都可用于定义指向 Amazon S3 存储桶的别名记录。

注意

本示例中的所有步骤都使用 example.com 作为域名。您需要使用您已注册的一个域名替换此域名。

步骤 1:注册域

如果您已有已注册域,可跳过本步骤。如果您第一次托管网站,第一步是通过所选的注册商注册域,例如 example.com

选择注册商后,您将根据注册商网站上的说明注册域名。有关可用于注册域名的注册商网站的列表,请参阅 ICANN.org 网站上的注册商和注册者的信息

注册域名之后,下一个任务是为网站托管创建和配置 Amazon S3 存储桶并上传网站内容。

步骤 2:创建和配置存储桶并上传数据

要支持来自根域 (例如 example.com) 和子域 (例如 www.example.com) 的请求,需要创建两个存储桶。一个存储桶包含内容。另一个存储桶用来重定向请求。

步骤 2.1:创建两个存储桶

存储桶名称必须与您托管的网站名称匹配。例如,要在 Amazon S3 上托管 example.com 网站,请创建名为 example.com 的存储桶。要在 www.example.com 下托管网站,您应将该存储桶命名为 www.example.com。在此示例中,您的网站将支持来自 example.comwww.example.com 的请求。

在此步骤中,您将使用 AWS 账户凭证登录 Amazon S3 控制台并创建以下两个存储桶。

  • example.com

  • www.example.com

注意

与域一样,子域也必须有它们自己的 S3 存储桶,且存储桶必须具有与子域完全一样的名称。在此示例中,我们创建了 www.example.com 子域,因此,我们需要将 S3 存储桶也命名为 www.example.com。

创建存储桶并上传要托管的网站内容

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 创建两个与您的域名和子域相匹配的存储桶。例如,example.comwww.example.com

    有关分步说明,请参阅如何创建 S3 存储桶? (在 Amazon Simple Storage Service 控制台用户指南 中)。

  3. 将您的网站数据上传到 example.com 存储桶。

    您将在根域存储桶 (example.com) 之外托管您的内容,并且可以将对 www.example.com 的请求重定向到根域存储桶。您可以在任意一个存储桶中存储内容。对于此示例,您将在 example.com 存储桶中托管内容。该内容可以是文本文件、家人的照片、视频 – 任何您想要托管的内容。如果您还未创建网站,则只需为此示例创建一个文件。您可以上传任何文件。例如,您可以使用以下 HTML 创建文件,并将其上传到存储桶。网站主页的文件名通常为 index.html,但也可以命名为其他任何名称。在下一个步骤中,您将提供此文件名作为网站的索引文档名。

    Copy
    <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>

    有关分步说明,请参阅如何将对象上传到 S3 存储桶? (在 Amazon Simple Storage Service 控制台用户指南 中)。

  4. 为您的对象配置权限,使它们可被公开访问。

    将以下存储桶策略附加到 example.com 存储桶,从而替换用于 example.com 的存储桶名称。有关附加存储桶策略的分步说明,请参阅如何添加 S3 存储桶策略? (在 Amazon Simple Storage Service 控制台用户指南 中)。

    Copy
    { "Version":"2012-10-17", "Statement":[{ "Sid":"PublicReadGetObject", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws-cn:s3:::example.com/*" ] } ] }

    现在,您拥有两个存储桶:example.comwww.example.com,并且您已将您的网站内容上传到了 example.com 存储桶。在下一步中,您将配置 www.example.com,以将请求重定向到 example.com 存储桶。通过重定向请求,您可以仅维护网站内容的一个副本。在其浏览器中键入 www 的访问者和仅指定根域的访问者都将路由到您的 example.com 存储桶中的相同网站内容。

步骤 2.2:为网站托管配置存储桶

在为网站托管配置存储桶时,您可以使用 Amazon S3 分配的存储桶网站终端节点来访问网站。

在此步骤中,您将为网站托管配置这两个存储桶。首先,您将 example.com 配置为网站,然后配置 www.example.com,以将所有请求重定向到 example.com 存储桶。

为网站托管配置您的存储桶

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. Bucket name 列表中,选择要为其启用静态网站托管的存储桶的名称。

  3. 选择 Properties.

  4. 选择 Static website hosting

  5. 为网站托管配置 example.com 存储桶。在 Index Document 框中,键入您提供给索引页面的名称。

  6. 选择 Save

步骤 2.3:配置网站重定向

您已经配置用于网站托管的存储桶,接下来将配置 www.example.com 存储桶以便将对 www.example.com 所有请求重定向至 example.com

将请求从 www.example.com 重定向到 example.com 的步骤

  1. 在 Amazon S3 控制台中的“存储桶”列表中,选择您的存储桶 (如本示例中的 www.example.com)。

  2. 选择 Properties.

  3. 选择 Static website hosting

  4. 选择 Redirect requests。在 Target bucket or domain 框中,键入 example.com

步骤 2.4:配置网站流量的日志记录

(可选) 您可以配置日志记录以跟踪访问您的网站的访问者数量。为此,应对根域存储桶启用日志记录。有关更多信息,请参阅 (可选) 配置 Web 流量日志记录

步骤 2.5:测试您的终端节点和重定向

要测试网站,请在您的浏览器中键入终端节点的 URL。您的请求将被重定向,浏览器将显示 example.com 的索引文档。

您现在已成功将请求从一个存储桶重定向到另一个存储桶,而且任何 Internet 用户都可以访问以下 Amazon S3 存储桶网站终端节点:

  • example.com.s3-website-us-east-1.amazonaws.com

  • http://www.example.com.s3-website-us-east-1.amazonaws.com

执行其他配置任务,以响应来自上一步中注册的域的请求。例如,如果您已注册域 example.com,您将要响应来自以下 URL 的请求:

  • http://example.com

  • http://www.example.com

接下来,我们使用 Amazon Route 53 使客户能够使用所有这些 URL 导航到您的站点。

步骤 3:创建和配置 Amazon Route 53 托管区域

将 Amazon Route 53 配置为您的域名系统 (DNS) 提供商。如果需要从根域 (如 example.com) 提供内容,则必须使用 Amazon Route 53。您将创建托管区域,该区域将保留与您的域相关联的 DNS 记录:

  • 一个将域 example.com 映射到 example.com 存储桶的别名记录。这是您在步骤 2.2 中配置为网站终端节点的存储桶。

  • 将子域 www.example.com 映射到 www.example.com 存储桶的另一个别名记录。您在步骤 2.2 中将此存储桶配置为将请求重定向到 example.com 存储桶。

步骤 3.1:为您的域创建托管区域

转到 https://console.amazonaws.cn/route53 上的 Amazon Route 53 控制台,然后为您的域创建托管区域。有关说明,请转到 http://docs.amazonaws.cn/Route53/latest/DeveloperGuide/ 中的创建托管区域

以下示例显示了为 example.com 域创建的托管区域。记下此域的 Amazon Route 53 名称服务器 (NS)。您将在以后需要它们。

步骤 3.2:为 example.com 和 www.example.com 添加别名记录

添加到您的域的托管区域的别名记录将 example.comwww.example.com 映射到相应的 S3 存储桶。别名记录使用 Amazon S3 网站终端节点,而不使用 IP 地址。Amazon Route 53 维持该别名记录与 S3 存储桶所在的 IP 地址之间的映射。

有关分步说明,请参阅 Amazon Route 53 开发人员指南 中的使用 Amazon Route 53 控制台创建资源记录集

以下屏幕截图显示 example.com 的别名记录作为演示示例。您还需要为 www.example.com 创建别名记录。

要启用此托管区域,您必须将 Amazon Route 53 用作域 example.com 的 DNS 服务器。如果要将现有网站移入 Amazon S3,则必须先将与您的域 example.com 关联的 DNS 记录传输至您在 Amazon Route 53 中为该域创建的托管区域。如果您已创建了新网站,则可以直接执行步骤 4。

注意

创建、更改和删除资源记录集需要一定时间才会传播到 Route 53 DNS 服务器。所做的更改通常在几分钟内传播到所有 Route 53 名称服务器。在极少的情况下,传播可能要用长达 30 分钟的时间。

步骤 3.3:将当前 DNS 提供商的其他 DNS 记录传输至 Amazon Route 53

在切换到作为您的 DNS 提供商的 Amazon Route 53 之前,必须将剩余 DNS 记录 (包括 MX 记录、别名记录和 A 记录) 从 DNS 提供商传输至 Amazon Route 53。您无需转移以下记录:

  • NS 记录 – 您可以不传输这些记录,而是将这些记录的值替换为 Amazon Route 53 提供的名称服务器值。

  • SOA 记录 – Amazon Route 53 为托管区域中的此记录提供默认值。

迁移所需的 DNS 记录是一个关键步骤,可确保在该域名下托管的所有现有服务的连续可用性。

步骤 3.4:创建 A 类型 DNS 记录类型

如果您想从另一个现有网站传输您的网站数据,则需要创建新的 A 类型 DNS 记录。

注意

如果您已从其他 DNS 提供商传输此网站的 A 类型记录,则可跳过此步骤的剩余部分。

在 Amazon Route 53 控制台中创建 A 类型 DNS 记录

  1. 在您的 Web 浏览器中打开 Amazon Route 53 控制台。

  2. Dashboard 上,选择 Hosted zones

  3. 在托管区域表中,选择您的域名。

  4. 选择 Create Record Set

  5. 在右侧显示的 Create Record Set 窗体中,对于 Alias,选择 Yes

  6. Alias Target 中,提供 Amazon S3 网站终端节点 - 例如,example.com.s3-website-us-west-2.amazonaws.com。

  7. 选择 Save Record Set

既然您已向您的记录集添加 A 类型 DNS 记录,它将按以下示例中所示出现在表中。

 显示 Route 53 控制台中的表和记录集的屏幕截图

步骤 4:切换到作为您的 DNS 提供商的 Amazon Route 53

要切换到作为您的 DNS 提供商的 Amazon Route 53,必须联系 DNS 提供商,并更新名称服务器 (NS) 记录,以便在您使用 Amazon Route 53 设置的委托中使用这些名称服务器。

在 DNS 提供商的站点上,用托管区域的委托集值更新该 NS 记录,如下面的 Amazon Route 53 控制台屏幕快照所示。有关更多信息,请参阅 Amazon Route 53 开发人员指南 中的更新 DNS 服务的名称服务器记录

向 Amazon Route 53 的传输完成后,验证您的域的名称服务器是否确实已更改。在 Linux 计算机上,可以使用 dig DNS 查找实用程序。例如,使用此 dig 命令:

Copy
dig +recurse +trace www.example.com any

它会返回以下输出 (仅显示部分输出)。此输出显示了您为 example.com 域创建的 Amazon Route 53 托管区域上的相同名称服务器。

Copy
... example.com. 172800 IN NS ns-9999.awsdns-99.com. example.com. 172800 IN NS ns-9999.awsdns-99.org. example.com. 172800 IN NS ns-9999.awsdns-99.co.uk. example.com. 172800 IN NS ns-9999.awsdns-99.net. www.example.com. 300 IN CNAME www.example.com.s3-website-us-east-1.amazonaws.com. ...

步骤 5:测试

要验证该网站可以在您的浏览器中正常工作,请尝试以下 URL:

  • http://example.com – 显示 example.com 存储桶中的索引文档。

  • http://www.example.com – 将您的请求重定向到 http://example.com

在某些情况下,您可能需要清除 Web 浏览器的缓存才能看到预期行为。