本文由『云枢国际/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 的合法请求,规避源站被直接攻击或盗刷的风险。
二、 部署前准备
- AWS 账号:需拥有已激活的 AWS 国际区账号。若在注册开户、绑定外币卡或支付充值时遇到困难,可咨询云枢国际/yunshuguoji 获取开户协助与支付支持(支持对公转账、微信、支付宝等方式)。
- 域名与文件:准备好已管理的域名,以及前端打包后的静态文件(如
dist目录)。
三、 配置 S3 私有存储桶
在 2026 年的规范中,建议将 S3 保持为私有状态,不开启“静态网站托管”功能。
- 创建存储桶:在 S3 控制台创建桶,名称建议与域名一致。选择靠近核心用户群的区域。
- 权限控制:在设置中勾选“阻止所有公开访问”。
- 上传资源:将
index.html及相关资源上传至根目录。如需自动化部署,可使用 AWS CLI 的aws s3 sync命令。
四、 配置 CloudFront 全球分发
- 创建分发:在 CloudFront 控制台选择“创建分发”。
- 设置源访问 (OAC):
* 源域:选择上述 S3 存储桶。
* 源访问:务必选择“Origin access control settings (recommended)”。
* 创建新的控制设置并保存。系统会提示稍后更新存储桶策略。 - 缓存与协议:
* 查看器协议策略:勾选“Redirect HTTP to HTTPS”。
* 缓存策略:推荐选择CachingOptimized以提升命中率。 - 更新 S3 策略:分发创建后,复制控制台提供的 JSON 策略,粘贴至 S3 存储桶的“权限-存储桶策略”中,允许 CloudFront 读取私有文件。
五、 域名绑定与 HTTPS 加密
- 证书申请:在 ACM (AWS Certificate Manager) 中申请证书。注意:CloudFront 关联的证书必须在 us-east-1 (弗吉尼亚北部) 区域申请。
- 关联域名:在 CloudFront 的“备用域名 (CNAME)”中填入自定义域名,并选择对应的 SSL 证书。
- 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 之外的所有直接访问请求。