CloudFront路径模式问题:访问/maintenance/*报Access Denied的解决方法
问题排查与解决方案
可能的原因及对应修复步骤
1. 源路径配置错误
- 检查Maintenance行为对应的源路径(Origin Path):如果存储桶内前缀为
maintenance/,源路径应设为/maintenance(注意避免多带/少带斜杠)。斜杠错误会导致CDN请求的存储桶路径偏差,比如实际请求<bucket-name>//maintenance/xxx,触发权限拒绝。 - 验证方法:查看CDN访问日志,对比实际转发到存储桶的请求路径与桶内文件路径是否匹配。
2. 存储桶权限配置问题
- 确认存储桶的**桶策略(Bucket Policy)**是否允许CDN的源访问身份(如CloudFront的OAC/OAI)读取
maintenance/前缀下的所有对象。 - 示例适配OAC的桶策略片段:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<bucket-name>/maintenance/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::<account-id>:distribution/<distribution-id>" } } } ] }
- 同时检查存储桶对象的ACL,确保未单独设置拒绝访问权限(建议优先用桶策略统一管控)。
3. CDN行为的路径匹配优先级问题
- 确认Maintenance行为的**路径模式(Path Pattern)**为
/maintenance/*,且该行为优先级高于默认行为。CDN会匹配最具体的路径模式,若默认行为优先级更高,请求会走默认源导致路径不匹配报错。 - 调整行为顺序:在CDN控制台中将Maintenance行为移至默认行为上方。
4. 缓存与部署延迟问题
- 执行缓存失效(Invalidation),路径填写
/maintenance/*,强制CDN拉取最新配置与内容。 - 确认CDN配置已部署完成,修改后通常需等待数分钟至十几分钟生效。
5. 路径大小写不匹配问题
- 检查存储桶内
maintenance前缀与CDN配置的路径大小写是否完全一致(对象存储如S3为大小写敏感),路径大小写不符会直接返回403错误。
内容的提问来源于stack exchange,提问作者Mostafa Ghadimi
相关产品推荐
相关产品推荐

