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

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

  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>

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

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

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

  2. 选择 Properties.

  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/

  2. 在导航窗格中,选择 Hosted zones

    注意

    当您注册域时,Amazon Route 53 将自动使用相同的名称创建一个托管区域。托管区域包含有关您希望 Route 53 如何路由域流量的信息。

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

  4. 选择 Create Record Set

    注意

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

  5. 指定以下值:

    Name

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

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

    类型

    选择 A – IPv4 address

    别名

    选择

    别名目标

    键入您创建 Amazon S3 存储桶所在的区域名称。使用 Amazon Web Services 一般参考AWS 区域和终端节点一章的表 Amazon Simple Storage Service 网站终端节点中的 Website Endpoint 列的适用值。

    注意

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

    路由策略

    接受默认值 Simple

    Evaluate Target Health

    接受默认值 No

  6. 选择 Create

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

以下屏幕截图显示 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 浏览器的缓存才能看到预期行为。