如何为关联多S3存储桶的AWS CDN配置不同路径默认根对象
AWS CloudFront 多源不同路径默认根对象配置方案
前置准备
- 提前在对应CloudFront分发的源配置中添加两个独立源:存储桶S1(对应根路径访问)、存储桶S2(对应
/folder路径访问)。如果S3已开启静态网站托管,需选择自定义HTTP源填入S3静态网站域名;未开启静态网站托管则直接选择S3源即可,同时建议配置OAC实现CloudFront访问S3的权限控制。
步骤1:配置分层缓存行为
缓存行为优先级规则:路径匹配越精准优先级越高,数字越小优先级越高
- 保留默认缓存行为(路径模式为
*),关联源设置为S1,优先级保持默认1即可。 - 新增缓存行为,路径模式填写
/folder/*,关联源设置为S2,优先级设为0(高于默认行为),其余缓存配置根据自身需求设置后保存。
步骤2:配置根路径默认根对象
进入CloudFront分发的常规设置页,找到「默认根对象」配置项,直接填写index1.html后保存,即可实现访问abcd.cloudfront.net时自动返回S1存储桶的index1.html。
步骤3:配置子路径默认索引重写
CloudFront原生默认根对象仅对根路径/生效,/folder路径的默认index2.html需要通过CloudFront函数实现URL重写,操作如下:
- 进入CloudFront控制台左侧菜单栏的「函数」页面,创建新函数,运行时选择CloudFront Functions v2.0。
- 填入以下函数代码:
function handler(event) { const request = event.request; // 匹配 /folder 或 /folder/ 结尾的请求 if (request.uri === '/folder' || request.uri === '/folder/') { // 若S2桶内index2.html存放在桶根路径,此处改为 request.uri = '/index2.html' request.uri = '/folder/index2.html'; } return request; }
- 测试代码无误后保存并发布函数。
- 回到当前CloudFront分发的「行为」标签页,编辑之前创建的
/folder/*缓存行为,找到「函数关联」配置,在「查看器请求」类型中选择关联刚发布的CloudFront函数,保存即可。
注意事项
- 所有配置修改后CloudFront需要5-10分钟全球节点生效,测试时可添加
Cache-Control: no-cache请求头避免本地旧缓存影响验证结果。 - 确保S1桶内的index1.html、S2桶内的index2.html都配置了正确的访问权限,禁止公开访问的桶需要提前配置OAC授权CloudFront读取文件。
内容的提问来源于stack exchange,提问作者vipul kaushal
相关产品推荐
相关产品推荐

