如何为 Amazon S3 设置 Amazon CloudFront 分配
Amazon CloudFront 可与 Amazon Simple Storage Service(Amazon S3)无缝协作,以加快您的 Web 内容分发速度并减轻原始服务器的负载。对于希望将数据存储在云中并将其作为 Web 内容交付的用户来说,Amazon S3 是一个绝佳的选择。如果您倾向于提供功能或动态内容,请查看如何为 Amazon Elastic Compute Cloud(Amazon EC2)设置 Amazon CloudFront 分配。
为 Amazon S3 设置 Amazon CloudFront 分配有什么好处?
Amazon CloudFront 内容分发网络(CDN)分发可为 S3 用户带来许多好处。
快速的数据传输速度
CloudFront 可让您快速向世界各地的观众提供内容。许多 CloudFront 边缘站点可以缓存您的内容,并将您的内容传送到离用户更近的地方,从而减少延迟,并减轻原始服务器的容量压力。
提高安全性,改善性能
CloudFront 还限制对您的 S3 存储桶的访问权限。仅允许 CloudFront 端点访问您的内容,这样您的应用程序将更安全、响应速度更快。
经济高效的数据传输
CloudFront 定价允许您根据自己的预算自定义分发。AWS 不收取 AWS 托管来源(如 S3 和 CloudFront)之间的数据传输费用,这使得来源获取成为一种经济高效的选择。
如何使用 CloudFront 和 S3 加快动态内容的加载速度
观看视频,了解如何配置您的来源,并进行一个 15 分钟的 CloudFront CDN 分配测试。
第 1 步:转至 AWS 管理控制台 | 第 2 步:创建 Amazon S3 存储桶 | 第 3 步:创建一个 CloudFront 分配 | 第 4 步:指定您的分配设置 | 第 5 步:配置您的来源 | 第 6 步:配置来源访问身份 | 第 7 步:配置默认缓存行为 | 第 8 步:配置您的 TTL | 第 9 步:配置其他功能 | 第 10 步:测试您的 CloudFront 分配
第 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 提供视频点播(VOD),则可以选择平滑流。
- 如果用户要访问 CloudFront 中的私有内容,则可以选择限制观众访问。
- 如果您的 CloudFront 将提供压缩文件,则可以选择自动压缩对象。
- 您可以使用 Lambda@Edge 事件部分创建要调用的各种函数。有关更多信息,请参阅使用 Lambda@Edge 在边缘进行自定义。
在分配设置下,您可以指定要使用 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 资源