S3 Bucket Policy 冗余优化

导出时间:2026/5/27 20:12:19

来源地址:https://www.doubao.com/chat/38413288453079810

消息数量:4

可是你说的跟我看到的完全不一样啊。我在创建这个 CloudFront 的 Distribution 的时候,它就不允许我使用 HTTPS 啊,只能使用 HTTP 啊,就那个 Origin 它只能使用 HTTP, 那个 Origin Access 是要 Business Plan 才行啊。我不知道你是不是搞混掉了,这个非常的让我感到混乱。
搜索 3 个关键词,参考 17 篇资料
你完全没看错,你遇到的是 S3 网站端点 vs REST API 端点的核心区别,不是免费版限制,也不是 Business Plan 要求。我把真相一次性说透👇

一、你现在的配置为什么只能用 HTTP(关键)

你现在 Origin 选的是: staroceans.org.s3-website-us-east-1.amazonaws.com 这是 S3 静态网站托管端点
  • S3 网站端点只支持 HTTP,不支持 HTTPS(AWS 设计如此)
  • 所以 CloudFront 回源只能走 HTTP,你在控制台看到的 “只能选 HTTP” 是对的
  • 这和免费版、Business Plan 半毛钱关系都没有

二、OAC/OAI 为什么你用不了(你没搞混)

  • OAC(Origin Access Control)/OAI 是给 S3 REST API 端点 用的,不是给网站端点用的
  • 网站端点 = 公开 HTTP 服务,不支持 OAC/OAI,也不支持 HTTPS 回源
  • 你看到 “Origin Access 需要 Business Plan” 是界面误导:免费版完全能用 OAC,只是你当前源类型不支持

三、免费版 CloudFront 到底能不能 HTTPS(结论)

能,而且完全免费(自定义域名 + 证书也免费)
  • 免费版限制:1TB 流量 + 1000 万请求 / 月,协议不限
  • 证书(ACM)永久免费(SNI 方式,无月费)
  • 自定义域名 HTTPS:只有请求 / 流量费,无月费,免费额度内 0 元

四、立刻解决:让 CloudFront 回源用 HTTPS(3 步)

1. 关闭 S3 静态网站托管(必须)

  • 进入 S3 → 你的桶 → 属性 → 静态网站托管 → 关闭
  • 删掉桶策略里所有 Amplify 相关语句(你已经删了,很好)

2. 重建 CloudFront 分发(关键改法)

  • Origin domain:不要选网站端点,直接选桶:staroceans.org.s3.amazonaws.com(REST API 端点)
  • Origin access:选 Origin access control settings (OAC) → 创建新 OAC(免费)
  • 保存后,AWS 会给你一段桶策略,直接复制到 S3 桶策略(替换现有)
  • Viewer protocol policy:选 Redirect HTTP to HTTPS(强制用户 HTTPS)
  • 默认根对象:填 index.htm

3. 绑定自定义域名 + 证书(免费)

  • ACM 申请证书(免费),验证域名
  • CloudFront → 分发 → 设置 → 自定义 SSL 证书 → 选刚申请的证书
  • Route 53 把 staroceans.org 指向 CloudFront 域名

五、两种源的对比(一眼看懂)

表格
源类型回源协议OAC/OAIHTTPS 回源适用场景
S3 网站端点仅 HTTP❌ 不支持❌ 不行仅简单 HTTP 站
S3 REST API 端点HTTPS/HTTP✅ 支持✅ 可以安全 + HTTPS+CDN 加速

六、费用再确认(你最关心)

  • 无月费,只有按使用量收费
  • 免费额度内:0 元
  • 超出:流量 $0.085/GB,HTTPS 请求 $0.01 / 万次(个人站几乎可忽略)
  • S3→CloudFront 回源流量免费,只收 CloudFront→用户流量

七、你现在的最佳方案(一步到位)

  1. 关闭 S3 静态网站托管
  2. 用 S3 REST API 端点 + OAC 重建 CloudFront
  3. 开启强制 HTTPS + 绑定自定义域名 + 免费证书
  4. 删掉 Amplify 相关配置(彻底告别冲突)
这样配置后:
  • 用户访问 https://staroceans.org完全正常、免费、安全
  • CloudFront 回源 S3:走 HTTPS
  • 没有任何冲突,也不需要 Business Plan
要不要我给你一份可直接复制的 S3 桶策略(适配 OAC+CloudFront),你直接粘贴就能用?
那你帮我看一下,如果我使用我自己的域名的话,要 HTTPS 的话,那么一个月的月费要增加多少?它这个流量好像也要额外算钱,是不是?因为流量本来 bucket 这个就是已经算钱了,就 S3 bucket 已经流量算钱了,那它这个 HTTPS 是不是要额外算钱?还是说它仅仅是个文件头,就是这个 HTTPS 的这个头。真正的 bucket 还是真正的流量还是 S3 bucket 的流量?意思就是说,因为你使用 HTTPS 的这个流量跟 S3 bucket 的这个流量,实际上是不一样的,它有去包裹一层 HTTPS 的。它有加密的,所以我不知道这个是不是要额外收费呢?
搜索 3 个关键词,参考 17 篇资料
先给你最关键结论:
  • 没有月费,只有按使用量收费(流量 + 请求)
  • HTTPS 不是额外包裹收费,而是请求单价更高
  • S3→CloudFront 回源流量免费,只收 CloudFront→用户的流量

一、你最关心的:自定义域名 + HTTPS 要多花多少钱?

1. 证书本身:完全免费

  • ACM 申请证书:0 元
  • SNI 自定义 SSL:无月费、无额外费
  • 只有专用 IP SSL 才收 $600 / 月(你用不到)

2. CloudFront 收费项(2026 美东 / 全球)

  • 免费额度(永久)
    • 每月:1TB 出站流量 + 1000 万次 HTTP/HTTPS 请求
  • 超出后计费(美东)
    • 流量:$0.085/GB(全球统一阶梯)
    • HTTP 请求:$0.0075 / 万次
    • HTTPS 请求:$0.010 / 万次(比 HTTP 贵 33%)
  • S3 只收:GET 请求费($0.0004 / 万次),S3→CloudFront 回源流量免费

3. 你的个人站预估(每月)

假设:10GB 流量 + 10 万次 HTTPS 请求
  • 流量:10GB × $0.085 = **$0.85**
  • HTTPS 请求:10 万 × $0.010 / 万 = **$0.10**
  • 合计:≈ $0.95 / 月(不到 7 元)
  • 若在免费额度内:$0

二、HTTPS 到底怎么收费?(不是 “额外包裹”)

  • 不是:HTTP 流量 + HTTPS 加密层 = 双重收费
  • 请求类型不同,单价不同
    • HTTPS 只是请求单价更高,流量单价和 HTTP 一样
  • S3 流量只算一次
    • S3→CloudFront:免费
    • CloudFront→用户:按 CloudFront 流量计费(不再收 S3 出网费)

三、S3 静态网站 vs CloudFront(自定义域名 HTTPS)对比

表格
方案HTTPS自定义域名费用加速
S3 静态网站❌ 只有 HTTP✅ 可用S3 流量 + 请求❌ 无
CloudFront(默认域名)✅ 免费 HTTPScloudfront.net免费额度内 0 元✅ 全球加速
CloudFront(自定义域名)✅ 免费证书 + HTTPS✅ 你的域名按流量 + 请求(很低)✅ 全球加速

四、你现在的最佳方案(最省钱 + HTTPS)

  1. 保留 CloudFront,关闭 S3 静态网站托管(避免冲突)
  2. 用自定义域名 + SNI SSL(证书免费,无月费)
  3. 流量 / 请求在免费额度内:0 元;超出也极便宜

五、快速验证(你现在就能做)

  1. 去 ACM 申请证书(免费
  2. CloudFront 绑定证书 + 自定义域名
  3. 访问 https://staroceans.org完全免费,无月费
要不要我给你一份极简的 CloudFront 配置清单(源设置、缓存、SSL、默认根对象),你照着点就能上线 HTTPS?