Amazon CloudFront 教程:为 Amazon S3 设置动态内容分配

如何为 Amazon S3 设置 Amazon CloudFront 分配

Amazon CloudFront 可与 Amazon Simple Storage Service(Amazon S3)无缝协作,以加快您的 Web 内容分发速度并减轻原始服务器的负载。对于希望将数据存储在云中并将其作为 Web 内容交付的用户来说,Amazon S3 是一个绝佳的选择。如果您倾向于提供功能或动态内容,请查看如何为 Amazon Elastic Compute Cloud(Amazon EC2)设置 Amazon CloudFront 分配

观看该 AWS TechTips 演示,了解如何使用您的设备设置 Amazon CloudFront CDN 分配

为 Amazon S3 设置 Amazon CloudFront 分配有什么好处?

Amazon CloudFront 内容分发网络(CDN)分发可为 S3 用户带来许多好处。

快速的数据传输速度

CloudFront 可让您快速向世界各地的观众提供内容。许多 CloudFront 边缘站点可以缓存您的内容,并将您的内容传送到离用户更近的地方,从而减少延迟,并减轻原始服务器的容量压力。

提高安全性,改善性能

CloudFront 还限制对您的 S3 存储桶的访问权限。仅允许 CloudFront 端点访问您的内容,这样您的应用程序将更安全、响应速度更快。

经济高效的数据传输

CloudFront 定价允许您根据自己的预算自定义分发。AWS 不收取 AWS 托管来源(如 S3 和 CloudFront)之间的数据传输费用,这使得来源获取成为一种经济高效的选择。

如何使用 CloudFront 和 S3 加快动态内容的加载速度

第 1 步:请转至 AWS 管理控制台

首先,请登录您的 AWS 管理控制台,并从服务列表中选择 Amazon S3。 

第 2 步:创建 Amazon S3 存储桶

在此,您可以:

  • 如果您还没有 S3 存储桶,请选择“创建存储桶”来创建。
  • 指定符合 DNS 的存储桶名称。
  • 选择您希望存储桶所在的区域。

然后,创建存储桶。使用控制台或 S3 API,可以根据需要向存储桶添加更多文件或创建新的存储桶。刚开始创建 S3 存储桶时,传播 DNS 名称更改需要一些时间,通常最长可达 15 分钟。

第 3 步:创建 CloudFront 分发

接下来,从 AWS 管理控制台服务列表的网络和内容分发部分转到 CloudFront。如果您已经打开 CloudFront,它也会出现在您的历史记录中,以便更快地访问。在此,您可以单击创建分配以创建新的 Web 分配。  

第 4 步:指定您的分配设置

现在,您可以开始输入分配设置。首先,在来源域名字段中指定您创建的 S3 域。  

第 5 步:配置来源

输入您的来源域名。如果您在同一 AWS 账户中创建了 S3 存储桶,则它应显示在该字段的下拉列表中。如果是在不同的账户中,请查看存储桶设置,以授予 CloudFront 访问权限。

授予访问权限使 CloudFront 能够从存储桶读取对象。如果将所有对象放在子文件夹中,也可以指定来源路径。

第 6 步:配置来源访问身份

在此,您可以限制对 Amazon S3 来源的访问权限。如果选择“是”,则系统将要求您创建来源访问身份或选择现有的来源访问身份,从而使 CloudFront 能够从存储桶读取对象。您还可以选择允许 CloudFront 为您更新存储桶策略。

如果您选择不限制访问权限,则用户可以绕过您的 CloudFront 直接通过 S3 存储桶 URL 访问您的内容。对于任何私人或敏感内容,设置正确的访问限制条件非常重要。

在本部分中,如果您将所有对象存储在子文件夹中,则还可以指定来源路径。您可以提供具有特定值的来源自定义标头,CloudFront 会在每次请求时将其转发给来源。这对于自定义来源很有用,因为它显示了请求是来自 CloudFront 而不是来自另一个客户端。

第 7 步:配置默认缓存行为

然后,您可以在“默认缓存行为设置”下使用各种选项。

查看器协议策略允许您选择处理 HTTP 和 HTTPS 协议的方式。例如,您可以选择将 HTTP 请求重定向到 HTTPS,使您能够使用任一协议支持请求。您也可以指定仅支持 HTTPS,在这种情况下,HTTP 流量将被断开。这可确保您符合 Web 安全性方面的最佳实践。

CloudFront 允许您指定您希望它接受哪些 HTTP 方法。默认设置为 GET、HEAD。选择其他任一选项(GET、HEAD、OPTIONS 或 GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE)将允许您配置 CloudFront 如何缓存选项方法。

然后,您可以指定要将哪些 HTTP 标头转发到您的来源。通常建议根据您的 Amazon S3 来源的相关请求和响应行为来允许标头。特别是,如果您的源正在查看特定的 HTTP 标头来决定返回哪个对象,那您应该允许这些标头。如果您转发所有 HTTP 标头,CloudFront 实际上会绕过缓存层,根本不会尝试缓存对象。

第 8 步:配置 TTL

在下一部分中,您可以指定生存时间(TTL),管理内容在过期之前可以在缓存中停留多长时间。默认情况下,将选择使用来源缓存标头。或者,您可以自定义存储在 CloudFront 缓存中的对象的时间上限和下限。

如果您选择编辑这些设置,系统将提示您以秒为单位输入最小和最大 TTL。然后,如果您的标头返回的值超出最小值或最大值,CloudFront 将使用最小或最大 TTL。如果在范围内,则 CloudFront 将使用从您的来源返回的值。

如果您的来源没有返回缓存控制标头,则将改用默认 TTL。在我们的示例视频中,默认值设置为 86400 秒,即 24 小时。

第 9 步:配置其他功能

在下一部分中,您可以选择基于 Cookie查询字符串参数来缓存内容。

与 HTTP 标头一样,建议仅允许使用与您的来源相关的 Cookie 或查询字符串值。您也可以转发这些信息,CDN 仍会尝试缓存它们。如果选择全部转发,请务必小心,因为如果 CloudFront 转发所有内容,可能会大大降低缓存命中率。因此,由于查询和 Cookie 值可能存在不同的变体,所以您可能需要多次缓存大量对象。

然后,您将在以下字段中获得更多选项:

分配设置下,您可以指定要使用 CloudFront 网络的哪些部分。默认情况下,CloudFront 使用所有边缘站点,以获得最佳性能。这将有助于您在全球范围内快速提供内容。

如果您期望仅面向特定地区的观众,例如美国、加拿大和欧洲,则只能将这些区域指定为较低的价格级别。这并不意味着这些区域以外的观众无法访问您的内容,CloudFront 只会将这些观众路由到离他们最近的边缘站点。如果您要将 AWS Web Application Firewall(AWS WAF)与 CloudFront 一起使用,则还可以在此处配置这些设置。

在保存分配之前,务必要管理安全套接字层(SSL)证书。这里有两个选项:

  • 使用默认 CloudFront 证书
  • AWS Certificate Manager(ACM)上传或请求自定义 SSL 证书,并将其关联到您的 CloudFront 分配;如果您使用自定义域,则此方法很合适您。

最后,可以使用其余的设置来指定:

  • 要使用哪个支持的 HTTP 版本
  • 是否要使用日志记录,以及 CloudFront 应使用哪个日志存储桶来存储访问日志。
  • Cookie 日志记录是否处于活动状态。

在此,您可以输入描述并创建分配。保存后,您的分配大约需要 15 分钟才能在全球范围内部署。

第 10 步:测试您的 CloudFront 分配

分配准备就绪后,您可以点击它来查看设置。第一个屏幕将显示许多选项卡和您指定的配置设置。如果需要,您可以从此处添加其他来源和多个缓存行为。

CloudFront 还允许您创建自定义错误页面,或通过选择创建客户错误响应来更改错误响应在缓存中的停留时间。您可以为每个 HTTP 错误代码调整这些设置。假设您想针对每个 403 错误代码进行重试,则可以将最低 TTL 指定为 0 秒。默认情况下,CloudFront 会将所有内容缓存 300 秒,以减轻来源上的部分负载。如果需要,您还可以为每个错误代码创建自定义错误响应。

限制选项卡中,您可以启用地理限制,以允许或禁止特定位置的观众看到您的内容。失效选项卡将允许您从 CloudFront 边缘缓存中删除自定义对象。最后,可以使用标签选项卡来应用自定义标签,帮助整理和标识分配。

完成后,复制域并将其粘贴到浏览器中,以查看分配的运行情况。您还可以了解如何使用 CloudFront 与 Amazon EC2 Web 服务器实例来分发应用程序的动态内容

Amazon CloudFormation 模板可帮助您开始使用 CloudFront

Amazon CloudFormation 模板还可帮助您开始使用 CloudFront。 此模板将启动 S3 存储桶,大规模存储静态文件,然后通过 CloudFront CDN 将该内容分发给您的用户。

要了解更多信息,请阅读标题为 Amazon S3 + Amazon CloudFront:云配对的博客文章,并获取 CloudFormation 模板。

有关使用 CloudFront 进行内容分发的其他资源

不确定如何开始使用 CloudFront? 请参阅我们的内容分发网络入门指南,或前往 Amazon Web Services 内容分发网络文档中心

在我们的高级支持知识中心查看这些有关在 S3 上管理 CloudFront 分配的资源:

发现更多 Amazon CloudFront 资源

访问资源页面
准备好构建了吗?
开始免费使用 Amazon CloudFront
还有更多问题?
联系我们