You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

S3网站Endpoint无法正常打开,访问触发文件下载问题排查

S3静态网站访问触发文件下载的排查与修复

核心问题

访问S3静态网站时触发文件下载,最主要的原因是上传的文件未设置正确的Content-Type元数据。S3默认会将未指定Content-Type的文件标记为binary/octet-stream,浏览器识别到这个类型时会直接触发下载,而非解析为网页内容。

脚本中的具体问题

  1. 缺少Content-Type配置:你的aws_s3_object资源没有指定content_type参数,导致所有文件(包括HTML、CSS、JS等)都使用默认的二进制类型。
  2. 目录结构丢失:key = basename(each.value)会把所有子目录下的文件都放到S3根目录,不仅会导致网页引用的相对路径失效,还可能出现重名文件覆盖的问题。

修复方案

修改aws_s3_object资源,添加Content-Type自动识别并保留原文件目录结构:

resource "aws_s3_object" "object" {
  for_each = fileset("${path.module}/travel-agency-html-template", "**/*")

  bucket      = aws_s3_bucket.My_bucket.bucket
  key         = each.value  # 保留原文件的目录结构
  source      = "${path.module}/travel-agency-html-template/${each.value}"
  etag        = filemd5("${path.module}/travel-agency-html-template/${each.value}")
  content_type = filetype("${path.module}/travel-agency-html-template/${each.value}")  # 自动识别并设置MIME类型
}

说明

  • filetype函数会根据文件后缀自动返回对应的MIME类型,比如.html文件会被设置为text/html,.css文件设置为text/css,浏览器就能正确解析这些文件。
  • 保留原目录结构后,网页中的相对路径(如./images/banner.jpg)能正确匹配S3中的文件路径,避免资源加载失败。

内容的提问来源于stack exchange,提问作者charles uneze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:55:29