使用 Amazon CloudFront 分配为静态网站提供服务 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon CloudFront 分配为静态网站提供服务

此入门教程演示如何执行以下任务:

  • 注册一个域名,如 example.com。

  • 为域创建证书。

  • 创建两个 Amazon S3 存储桶,并将一个存储桶配置为托管网站,另一个配置为重新导向到子域。

  • 创建一个示例网站,并将文件保存到 S3 存储桶中。

  • 为两个 S3 存储桶创建 CloudFront 分配。

  • 配置 Amazon Route 53 将流量路由到 CloudFront 分配。

完成后,您将能够打开一个浏览器,输入您的域名并安全地查看您的网站。

先决条件

开始之前,请确保您已完成 设置 Amazon Route 53 中的步骤。

步骤 1:注册域

要使用某个域名(如 example.com),您必须找到一个尚未被使用的域名并注册该域名。当您注册域名时,即表示您要保留它以供您在 Internet 上的任何位置独占使用,通常为期一年。默认情况下,我们会在每年年底自动续订您的域名,但您可以关闭自动续订。有关详细信息,请参阅 注册新域

步骤 2:请求公有证书

您需要一个公有证书来将 Amazon CloudFront 分配配置为要求查看器使用 HTTPS,以便在 CloudFront 与查看器通信时加密连接。

要请求 Amazon Certificate Manager (ACM) 公有证书(控制台)
  1. 登录Amazon管理控制台并从以下位置打开 ACM 控制台:https://console.aws.amazon.com/acm/home

    注意

    请确保您在美国东部(弗吉尼亚北部)区域创建证书。这是 Amazon CloudFront 的必需条件。

    在左导航中,选择请求证书,在请求证书页面上,选择请求公有证书,然后选择下一步

  2. 域名部分中,输入您的域,例如 example.com

    选择为此证书添加另一个名称,在域名前面输入星号,以便为所有子域申请通配符证书,例如 *.example.com

  3. 验证方法部分中,选择 DNS 验证

  4. 密钥算法部分中,选择 RSA 2048

  5. 添加标签部分中,您可以选择为证书添加标签。标签是键值对,用作标识和组织Amazon资源的元数据。

    选择请求进入证书页面。

  6. 当您的新证书显示为待处理状态后,选择证书 ID,然后选择在 Route 53 中创建记录,为您的域自动添加 CNAME 记录,然后选择创建记录

    此时会打开 Certificate status(证书状态)页面,状态横幅将报告 Successfully created DNS records(已成功创建 DNS 记录)。

    您的新证书可能会继续显示 Pending validation(等待验证)最多 30 分钟。

步骤 3:创建 S3 存储桶来托管子域

为 www.your-domain-name 创建一个 S3 存储桶

Amazon S3 允许您从互联网上的任何位置存储和检索您的数据。在此步骤中,您将创建一个 S3 存储桶来存储您网站的所有文件。

  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. 选择创建存储桶

  3. 输入以下值:

    Bucket name(存储桶名称)

    输入 www.your-domain-name。例如,如果您注册了域名 example.com,则输入 www.example.com

    区域

    为您的存储桶选择一个区域。

  4. 要接受原定设置并创建存储桶,请选择 Create bucket(创建存储桶)。

    有关 S3 存储桶设置的更多信息,请参阅 Amazon S3 用户指南中的查看存储桶属性

步骤 4:为根域创建另一个 S3 存储桶

如果您还希望用户能够使用根域 your-domain-name(如 www.example.com)来访问您的示例网站,则需要创建另一个 S3 存储桶。在本教程中,之后对第二个存储桶(根域)进行配置,将流量路由至第一个存储桶。

要为 your-domain-name 创建一个 S3 存储桶
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. 选择创建存储桶

  3. 输入以下值:

    Bucket name(存储桶名称)

    输入 your-domain-name。例如,如果您注册了域名 example.com,则输入 example.com

    区域

    选择创建第一个存储桶时所在的同一区域。

  4. 要接受原定设置并创建存储桶,请选择 Create bucket(创建存储桶)。

步骤 5:将网站文件上载到您的子域存储桶

现在您有了 S3 存储桶,可以上载您的网站文件。在本教程中,您只需上传一个简单的 index.html 文件,以在页面上显示文本。

要为 S3 存储桶启用网站托管
  1. 通过以下网址打开 Simple Storage Service(Amazon S3)控制台:https://console.aws.amazon.com/s3/

  2. Buckets(存储桶)列表中,选择要将网站文件上载到的存储桶的链接名称,例如 www.example.com

  3. 复制创建简单单页网站的示例文本,将其粘贴到文本编辑器中,并将其保存为 index.html:

    <html> <head> <title>Amazon Route 53 Getting Started</title> </head> <body> <h1>Routing Internet traffic to Cloudfront distributions for your website stored in an S3 bucket</h1> <p>For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html">Getting Started with Amazon Route 53</a> in the <emphasis>Amazon Route 53 Developer Guide</emphasis>.</p> </body> </html>
  4. Objects(对象)选项卡中,选择 Upload(上载)。

  5. Files and folders(文件和文件夹)中,选择 Add files(添加文件)并上载您的网站文件。对于本教程,请上传您在本程序步骤 3 中保存的 index.html 文件。

步骤 6:为网站重新导向设置根域存储桶

在为网站托管配置了根域存储桶后,可以选择将根域存储桶配置为将所有请求重新导向到该子域。例如,您可以为 example.com 配置所有要重新导向到 www.example.com 的请求。

要配置重新导向
  1. 在 Amazon S3 控制台上的 Buckets(存储桶)列表中,选择您的存储桶名称(在本例中为 example.com)。

  2. 选择属性

  3. 静态网站托管下,选择编辑

  4. Static website hosting(静态网站托管)下,选择 Enable(启用)。

  5. 请选择 Redirect requests for an object(重定向对于对象的请求)。

  6. Host name(主机名称)框中,输入您的子域(例如 www.example.com)。

  7. 对于协议,选择 HTTPS

  8. 选择 Save changes(保存更改)

  9. Static website hosting(静态网站托管)下,记下 Endpoint(端点)。

    端点是存储桶的 Amazon S3 网站端点。您将使用此端点设置 Amazon CloudFront 分配。

步骤 7:为您的子域创建 Amazon CloudFront 分配

在此步骤中,您将为您的子域创建一个 CloudFront 分配,例如 www.example.com,以使您的网站能够使用 HTTPS,从而让人们可以安全地查看该网站。

创建 CloudFront 分配
  1. 通过 打开 CloudFront 控制台https://console.amazonaws.cn/cloudfront/v4/home

  2. 选择 Create Distribution(创建分配)。

  3. 对于源设置下的源域名,选择您之前创建的 Amazon S3 存储桶。格式将类似于 www.example.com.s3.<Region>.amazonaws.com

    对于来源访问,请选择遗留访问身份。对于 Origin access identity(来源访问标识(OAI)),您可以从列表中选择,或选择 Create new OAI(创建新的 OAI),两种选择都有效。

    对于 Bucket policy(存储桶策略),选择 Yes, update the bucket policy(是,更新存储桶策略)。

  4. 对于 Default Cache Behavior Settings(默认缓存行为设置),在 Viewer(查看器)下,将 Viewer protocol policy(查看器协议策略)设置为 Redirect HTTP to HTTPS(将 HTTP 重定向到 HTTPS)并接受其余部分的默认值。

    有关缓存行为的更多信息,请参阅 Amazon CloudFront 开发人员指南中的缓存行为设置

  5. Web 应用程序防火墙(WAF)部分中,您可以选择启用或禁用 Amazon WAF 安全保护。

  6. 对于 Settings(设置)项下的字段,执行以下操作:

    • 对于 Alternate domain name (CNAME)(备用域名(别名记录)- 可选)选择 Add item(添加项目),然后输入您的子域,例如 www.example.com

    • 对于 Custom SSL Certificate(自定义 SSL 证书),选择您以前创建的证书。

    • Default root object(默认根对象)文本框中,键入 index.html

    • 对于其余字段,接受默认值,然后选择创建分配

      有关分配选项的更多信息,请参阅分配设置

  7. 在CloudFront 创建了分配后,分配的状态列的值将从进行中更改为已部署。这通常需要花费几分钟的时间。

    记录 CloudFront 指派给分配的域名,这些域名会出现在分配列表中。您可以使用此域名来测试分配。

步骤 8:为您的根域创建 Amazon CloudFront 分配

在此步骤中,您将为您的根域创建 CloudFront 分配,以便在其 URL 重新导向到子域时使用 HTTPS。

创建 CloudFront 分配
  1. 通过 打开 CloudFront 控制台https://console.amazonaws.cn/cloudfront/v4/home

  2. 选择 Create Distribution(创建分配)。

  3. Origin Settings(源设置)项下,对于 Origin Domain Name(源域名),输入存储桶网站端点。您可以从以前创建的 Amazon S3 存储桶的 Properties(属性)中的 Static website hosting(静态网站托管)部分获得此信息。

    对于其余部分,请接受默认值。

  4. Web 应用程序防火墙(WAF)部分中,您可以选择启用或禁用 Amazon WAF 安全保护。

  5. 对于缓存密钥和源请求下的字段,选择缓存策略和源请求策略(推荐),然后在缓存策略下拉列表中选择 CachingDisabled

    对于其余部分,请接受默认值。

    有关缓存行为的更多信息,请参阅 Amazon CloudFront 开发人员指南中的缓存行为设置

  6. 对于 Settings(设置)项下的字段,执行以下操作:

    • 对于 Alternate domain name (CNAME)(备用域名(别名记录)- 可选)选择 Add item(添加项目),然后输入您的根域,例如 example.com

    • 对于 Custom SSL Certificate(自定义 SSL 证书),选择您以前创建的证书。

    • 对于其余部分,请接受默认值。

    有关分配选项的更多信息,请参阅分配设置

  7. 在页面底部,选择创建分配

  8. 在CloudFront 创建了分配后,分配的状态列的值将从进行中更改为已部署。这通常需要花费几分钟的时间。

    记录 CloudFront 指派给分配的域名,这些域名会出现在分配列表中。您可以使用此域名来测试分配,

步骤 9:将域的 DNS 流量路由到您的 CloudFront 分配

现在,您的 S3 存储桶中有使用了 CloudFront 分配的单页网站。要开始将域的互联网流量路由到 CloudFront 分配,请执行以下过程。

有关将流量路由到 CloudFront 分配的更多信息,请参阅 使用您的域名将流量路由到 Amazon CloudFront 分配

将流量路由到您的网站
  1. 通过以下网址打开 Route 53 控制台:https://console.aws.amazon.com/route53/

  2. 在导航窗格中,选择 Hosted zones(托管区域)

    注意

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

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

  4. 选择创建记录

    如果您位于 Quick create record(快速创建记录)视图中,请选择 Switch to wizard(切换到向导)。

    注意

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

  5. 选择 Simple routing(简单路由),然后选择 Next(下一步)。

  6. 请选择定义简单记录

  7. Record name(记录名称)中,在默认值前键入 www,该值为您的托管区域和域的名称。

  8. Record type(记录类型)中,选择 A – Routes traffic to an IPv4 address and some Amazon resources(A – 将流量路由到 IPv4 地址和某些亚马逊云科技资源)。

  9. Value Route traffic to(值路由流量至)项下,选择 Alias to CloudFront distribution((别名到 CloudFront 分配))。

  10. 选择分配。

    分配名称应与 Distributions(分配)列表中的 Domain name(域名)中出现的名称相匹配,例如 dddjjjkkk.cloudfront.net

  11. 对于评估目标运行状况,请选择

  12. 请选择定义简单记录

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

同时为根域添加别名记录,以便它指向将流量重新导向到 www.example.com 的 S3 存储桶。有关将流量路由到 CloudFront 分配的更多信息,请参阅 使用您的域名将流量路由到 Amazon CloudFront 分配

  1. 在导航窗格中,选择 Hosted zones(托管区域)

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

  3. 选择创建记录

    如果您位于 Quick create record(快速创建记录)视图中,请选择 Switch to wizard(切换到向导)。

    注意

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

  4. 选择 Simple routing(简单路由),然后选择 Next(下一步)。

  5. 请选择定义简单记录

  6. Record name(记录名称)中,请接受默认值。

  7. Record type(记录类型)中,选择 A – Routes traffic to an IPv4 address and some Amazon resources(A – 将流量路由到 IPv4 地址和某些亚马逊云科技资源)。

  8. Value Route traffic to(值路由流量至)项下,选择 Alias to CloudFront distribution((别名到 CloudFront 分配))。

  9. 选择分配。

    分配名称应与 Distributions(分配)列表中的 Domain name(域名)中出现的名称相匹配,例如 dddjjjkkk.cloudfront.net

  10. 对于评估目标运行状况,请选择

  11. 请选择定义简单记录

  12. 配置记录页面上,请选择创建记录

步骤 10:测试您的网站

要验证您的网站是否工作正常,请打开一个 Web 浏览器并浏览到下列 URL:

  • http://www.your-domain-name,例如 www.example.com — 显示 www.your-domain-name 存储桶中的索引文档

  • http://www.your-domain-name,例如 example.com — 将您的请求重新导向至 www.your-domain-name 存储桶

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

有关路由 Internet 流量的更多高级信息,请参阅 将 Amazon Route 53 配置为 DNS 服务。有关将互联网流量路由到 Amazon 资源的更多信息,请参阅 将互联网流量路由到您的 Amazon 资源