Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

开始前的准备工作

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

Amazon Route 53 – 您使用 Route 53 注册域,并定义要将您的域的 Internet 流量路由到何处。我们将介绍如何创建 Route 53 别名记录,以便将您的域 (example.com) 和子域 (www.example.com) 的流量路由到包含 HTML 文件的 Amazon S3 存储桶。

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

步骤 1:注册域

如果您还没有已注册的域名(如 example.com),则可向 Route 53 注册一个域名。有关更多信息,请参阅 Amazon Route 53 开发人员指南 中的注册新域。注册域名之后,接下来的任务是创建和配置 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

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

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

    您将在根域存储桶 (example.com) 之外托管您的内容,并且可以将对 www.example.com 的请求重定向到根域存储桶。您可以在任意一个存储桶中存储内容。在此示例中,您将在 example.com 存储桶中托管内容。该内容可以是文本文件、家人的照片、视频 – 任何您想要托管的内容。如果您还未创建网站,则只需为此示例创建一个文件。您可以上传任何文件。例如,您可以使用以下 HTML 创建文件,并将它上传到存储桶。网站主页的文件名通常为 index.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>

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

  4. 若要托管网站,您的存储桶必须具有公共读取访问权限。全世界的任何人都将可以读取此存储桶是刻意的设置。要授予公共读取访问权限,将以下存储桶策略附加到 example.com 存储桶,并将 example.com 替换为您的存储桶的名称。有关附加存储桶策略的分步说明,请参阅 Amazon Simple Storage Service 控制台用户指南 中的如何添加 S3 存储桶策略?

    { "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. 选择属性

  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 控制台中的 Buckets (存储桶) 列表中,选择您的存储桶(如本示例中的 www.example.com)。

  2. 选择属性

  3. 选择 Static website hosting

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

  5. 选择 Save

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

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

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

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

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

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

在此步骤中,您创建别名记录并将其添加到您的域的托管区域,而这些别名记录将 example.comwww.example.com 映射到相应的 S3 存储桶。该别名记录使用 Amazon S3 网站终端节点,而不使用 IP 地址。Amazon Route 53 在该别名记录与 Amazon S3 存储桶所在的 IP 地址之间保持一种映射。

将流量路由到您的网站

  1. 通过以下网址打开 Route 53 控制台:https://console.amazonaws.cn/route53/

    注意

    如果您尚未使用 Amazon Route 53,您可以在此处开始。 完成设置后,您可以恢复以下说明。

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

  3. 选择 Create Record Set

    注意

    每个记录都包含有关您希望如何路由一个域 (example.com) 或子域 (www.example.com) 的流量的信息。记录存储在域的托管区域中。

  4. 指定以下值:

    名称

    对于您将创建的第一个记录,接受默认值,该值为您的托管区域和您的域的名称。这会将 Internet 流量路由到与您的域同名的存储桶。

    重复此步骤为子域创建第二条记录。对于第二个记录,键入 www。这会将 Internet 流量路由至 www.example.com 存储桶。

    类型

    选择 A – IPv4 地址

    别名

    选择

    别名目标

    键入 Amazon S3 存储桶终端节点的名称,例如 example.com (s3-website-us-west-2)

    注意

    对于别名目标,为两个记录指定相同的值。Route 53 会根据记录的名称确定将流量路由到哪个存储桶。

    路由策略

    接受默认值 Simple

    Evaluate Target Health

    接受默认值 No

  5. 选择 Create (创建)

  6. 对于 www.example.com,重复步骤 3 到步骤 5 以创建记录。

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

注意

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

步骤 4:测试

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

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

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

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