S3 Bucket与Route 53域名配置连接失败问题求助
S3+Route53域名访问故障排查步骤
1. 核对Bucket名称与域名的匹配性
- S3静态网站托管要求Bucket名称必须和绑定的域名完全一致(比如绑定
example.com,Bucket名就得是example.com;绑定www.example.com,Bucket名就得是www.example.com),大小写也不能出错。 - 如果用根域名(不带www),建议同时创建对应www前缀的Bucket,将其设置为根域名Bucket的重定向目标,避免访问www域名时出现异常。
2. 验证Route53记录配置
- 确认Route53中创建的是A记录(别名类型),而非普通A记录或CNAME:
- 别名目标要选择S3的静态网站托管端点(通常域名带
-website标识),不要选S3的REST API端点。 - 根域名(如
example.com)只能用A别名记录,www域名可选用A别名或CNAME,优先推荐A别名。
- 别名目标要选择S3的静态网站托管端点(通常域名带
- 检查路由策略,默认选「简单路由」即可,无需使用加权/延迟路由(除非有特殊业务需求)。
- 确认域名注册商处的NS记录已正确指向Route53的服务器,避免DNS解析链路出错。
3. 检查Bucket权限配置
- 确保Bucket策略允许公共访问静态内容,典型的正确策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::你的Bucket名称/*" } ] }
- 注意
Resource字段必须是Bucket名/*,仅写Bucket名会导致只能访问Bucket列表,无法打开具体文件。 - 检查Bucket的「公共访问设置」,确保未开启「阻止所有公共访问」,或已在例外规则中允许静态网站的公共访问。
4. 确认静态网站托管配置
- 确认静态网站托管已启用,且正确设置了索引文档(如
index.html);若是Angular应用,错误文档也需设为index.html,否则刷新路由会出现404。 - 复制S3提供的静态网站端点URL直接访问,确认Bucket自身内容可正常打开,排除Bucket内部配置问题。
5. 排查缓存与DNS生效延迟
- DNS记录生效最长可能需要24小时(通常1-2小时),可通过
nslookup或dig命令查询域名对应的IP,确认是否指向S3端点。 - 浏览器缓存可能导致旧记录生效,尝试用无痕模式访问,或清除浏览器缓存后再测试。
6. Angular应用额外配置检查
- 构建Angular应用时需指定正确的基础路径:执行
ng build --prod --base-href /,确保生成的资源路径正确。 - 检查
index.html中的<base href="/">标签是否配置正确。
内容的提问来源于stack exchange,提问作者Oscar Lopez lopez
相关产品推荐
相关产品推荐

