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

CloudFront访问S3路径报NoSuchKey错误求助

解决CloudFront无法识别S3子目录默认索引文件的问题

以下是针对你的问题的具体解决步骤:

1. 使用CloudFront函数处理子路径默认索引(推荐方案)

CloudFront的默认根对象仅对域名根路径(/)生效,无法自动处理/teeodor这类子路径的索引文件。你可以通过CloudFront函数实现路径重写:

  • 登录CloudFront控制台,创建新的CloudFront函数,粘贴以下代码:
    function handler(event) {
        const request = event.request;
        const uri = request.uri;
    
        // 判断路径是否为无扩展名的目录形式
        if (!uri.endsWith('/') && !uri.includes('.')) {
            request.uri = `${uri}/index.html`;
        }
        return request;
    }
    
  • 将该函数发布到生产环境,然后关联到你的CloudFront分发的Viewer Request事件上,适用路径选择/*。
  • 修改完成后,触发CloudFront缓存失效(路径填/*),确保新配置生效。

2. 切换CloudFront源为S3静态网站托管端点

如果你的场景适合使用S3静态网站托管,可以按以下操作:

  • 开启目标S3存储桶的静态网站托管功能,设置索引文档为index.html。
  • 将CloudFront分发的源地址,从S3的REST API端点(如bucket-name.s3.amazonaws.com)替换为S3静态网站的端点(如bucket-name.s3-website-[region].amazonaws.com)。
  • 确保S3存储桶的权限配置允许CloudFront访问该静态网站端点(可通过存储桶策略或OAI配置)。

3. 检查缓存行为配置

确认CloudFront的缓存行为中:

  • 路径模式设置为/*,确保覆盖所有子路径。
  • 未启用"限制查看器访问"等可能影响路径解析的配置,除非你有明确的访问控制需求。

验证:完成上述任一配置后,访问https://example.com/teeodor应该会自动加载对应的index.html文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:32:10