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

Terraform配置S3静态网站无法自动加载index.html问题排查

问题分析与解决

你的aws_s3_bucket_website_configuration配置本身没问题,问题出在访问的URL类型错误。

  • S3有两种不同的端点:
    • REST API端点:就是你使用的裸Bucket域名(格式如bucket-name.s3.amazonaws.com),这个端点默认用于桶的管理操作(比如列出对象),不会触发静态网站的索引文档规则,所以直接访问会返回<ListBucketResult> XML。
    • 静态网站端点:格式为bucket-name.s3-website-<region>.amazonaws.com(不同区域格式可能略有差异),这个端点是专门用于静态网站托管的,访问它的裸URL时会自动匹配你配置的index.html索引文档。

验证与解决步骤

  1. 获取正确的网站端点:
    • 在AWS控制台的S3桶属性页,找到「静态网站托管」模块,里面会显示网站端点地址。
    • 或者在Terraform中添加输出配置,直接获取网站端点:
      output "s3_website_endpoint" {
        value = aws_s3_bucket.your_bucket_name.website_endpoint
      }
      
      执行terraform apply后就能拿到正确的访问地址。
  2. 确认其他配置无遗漏:
    • 确保Bucket Policy已经允许公共访问index.html及其他静态资源,示例Policy片段:
      {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::your-bucket-name/*"
      }
      
    • 所有权控制已设置为「桶所有者优先」(2023年4月后默认是桶所有者强制,你已配置的话可忽略)。

内容的提问来源于stack exchange,提问作者Nick K9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:07:04