AWS 亚马逊云 16 次浏览 Fri, 21 Au TG @yunshuguoji

亚马逊云服务代理商:2026实战 S3 与 CloudFront 部署全球加速静态网站指南

本文详细介绍如何利用 AWS S3 与 CloudFront 架构部署全球加速的静态网站。重点讲解 2026 年安全标准下的 OAC 源站保护配置、SPA 路由处理及计费维度拆解,帮助开发者实现高可用、免运维的 Serverless 网站部署。

本文由『云枢国际/TG @yunshuguoji-亚马逊云代理商 撰写』如需转载请注明!

通过 Amazon S3 配合 Amazon CloudFront 部署静态资源(HTML、JS、图片等),是目前实现高可用、免运维网站的主流方案。这种架构利用边缘节点降低全球访问延迟,且无需管理服务器。

本文将基于 2026 年的安全标准,重点介绍如何使用 OAC(Origin Access Control)保护源站,并解决单页应用(SPA)的路由与计费配置问题。

一、 方案逻辑:为何弃用传统服务器

相比于在 EC2 或其他云服务器上运行 Nginx,S3 + CloudFront 架构具有以下特征:
1. 全托管服务:无需处理系统补丁或环境维护,属于 Serverless 架构。
2. 边缘加速:CloudFront 将内容缓存至全球边缘站点,用户就近获取,减少物理距离带来的延迟。
3. 源站加固:通过 OAC 彻底关闭 S3 的公网访问,仅允许来自 CloudFront 的合法请求,规避源站被直接攻击或盗刷的风险。

二、 部署前准备

  1. AWS 账号:需拥有已激活的 AWS 国际区账号。若在注册开户、绑定外币卡或支付充值时遇到困难,可咨询云枢国际/yunshuguoji 获取开户协助与支付支持(支持对公转账、微信、支付宝等方式)。
  2. 域名与文件:准备好已管理的域名,以及前端打包后的静态文件(如 dist 目录)。

三、 配置 S3 私有存储桶

在 2026 年的规范中,建议将 S3 保持为私有状态,不开启“静态网站托管”功能。

  1. 创建存储桶:在 S3 控制台创建桶,名称建议与域名一致。选择靠近核心用户群的区域。
  2. 权限控制:在设置中勾选“阻止所有公开访问”
  3. 上传资源:将 index.html 及相关资源上传至根目录。如需自动化部署,可使用 AWS CLI 的 aws s3 sync 命令。

四、 配置 CloudFront 全球分发

  1. 创建分发:在 CloudFront 控制台选择“创建分发”。
  2. 设置源访问 (OAC)
      * 源域:选择上述 S3 存储桶。
      * 源访问:务必选择“Origin access control settings (recommended)”。
      * 创建新的控制设置并保存。系统会提示稍后更新存储桶策略。
  3. 缓存与协议
      * 查看器协议策略:勾选“Redirect HTTP to HTTPS”。
      * 缓存策略:推荐选择 CachingOptimized 以提升命中率。
  4. 更新 S3 策略:分发创建后,复制控制台提供的 JSON 策略,粘贴至 S3 存储桶的“权限-存储桶策略”中,允许 CloudFront 读取私有文件。

五、 域名绑定与 HTTPS 加密

  1. 证书申请:在 ACM (AWS Certificate Manager) 中申请证书。注意:CloudFront 关联的证书必须在 us-east-1 (弗吉尼亚北部) 区域申请。
  2. 关联域名:在 CloudFront 的“备用域名 (CNAME)”中填入自定义域名,并选择对应的 SSL 证书。
  3. DNS 解析:在域名解析商处添加 CNAME 记录,将域名指向 CloudFront 提供的 .cloudfront.net 地址。

六、 进阶配置与成本维度

1. SPA 路由处理

React/Vue 等单页应用在访问非根路径时易出现 403/404 错误。
解决方法:在 CloudFront 的“错误页面”中,将 403 和 404 错误重定向至 /index.html,响应码设为 200。

2. 缓存刷新

更新代码后,需在 CloudFront 的“失效 (Invalidation)”选项卡中创建路径为 /* 的请求,强制更新边缘节点缓存。

3. 计费项拆解 (Pricing Dimensions)

该架构的费用主要由以下维度构成,具体费率请参考 AWS 官网定价页:

服务核心计费项说明
S3存储容量费按每月存储的 GB 数计费。
请求费CloudFront 回源拉取文件时产生的 GET 请求费。
CloudFront数据传出费从边缘节点流向互联网的流量费,按区域计费。
请求费HTTP/HTTPS 请求次数费。
缓存失效费每月前 1000 个路径免费,超出后按次计费。

七、 资源清理

若仅为测试使用,请务必按以下顺序删除资源以停止计费:
1. 禁用并删除 CloudFront 分发。
2. 清空并删除 S3 存储桶。

常见问题 (FAQ)

Q1:AWS 对象存储与其他方案怎么比较,选型时应看哪些指标?
比较时应综合考量区域与产品可用性、规格性能、网络与存储表现、数据库和安全配套、计费结构、技术生态及支持方式。建议建立涵盖业务适配、网络体验和可靠性的对比表,先进行小规模验证,避免仅凭单一实例标价做决策。

Q2:AWS 对象存储与云硬盘有什么区别,费用和场景怎么比较?
对象存储(如 S3)适合海量图片、备份和静态资源,通过 API 访问,按容量、请求数和出网流量计费;云硬盘(EBS)是挂载到实例的块设备,适合系统盘和数据库,主要按预置容量和 IOPS 计费。

Q3:AWS CloudFront 是什么,适合哪些场景,选型时要确认什么?
CloudFront 是全球 CDN 服务,用于加速分发静态和动态内容。采购前需核对地域覆盖、资源配额、依赖服务及迁移方案。费用通常按下行流量、请求次数和回源流量计费,不同地域的计费口径存在差异。

Q4:如何配置 CloudFront OAC 以限制只能通过 CDN 访问 S3?
在 CloudFront 源设置中选择“Origin access control settings”,创建 OAC 后,将系统生成的 JSON 策略添加到 S3 存储桶策略中。同时确保存储桶开启“阻止所有公开访问”,这样 S3 就会拒绝除 CloudFront 之外的所有直接访问请求。