如何配置CloudFront通过多S3源实现不同域名对应环境资源分发?
更优CloudFront多环境资源配置方案
直接复用现有CloudFront分发,通过多源+域名匹配行为实现不同环境的资源路由,比建三个分发更高效:
添加三个S3源到现有分发
在当前分发的源配置里新增三个源:- 源名称设为
Dev-S3,源域名填dev-bucket.s3.eu-west-2.amazonaws.com - 源名称设为
Test-S3,源域名填test-bucket.s3.eu-west-2.amazonaws.com - 源名称设为
Live-S3,源域名填live-bucket.s3.eu-west-2.amazonaws.com
按需调整每个源的缓存策略——比如dev环境设短TTL方便调试,live环境用标准缓存提升性能。
- 源名称设为
补充自定义域名(备用域名)
在分发的备用域名列表里,新增assets-dev.example.com和assets-test.example.com,保留原有的assets.example.com。注意SSL证书要覆盖这三个域名,用通配符证书*.example.com或者包含三个域名的SAN证书都可以。配置行为规则实现域名路由
在分发的行为设置里创建三个行为(优先级高于默认行为):- 路径模式选
*,匹配条件设为备用域名=assets-dev.example.com,关联源选Dev-S3 - 路径模式选
*,匹配条件设为备用域名=assets-test.example.com,关联源选Test-S3 - 保留原有行为(或新建),路径模式
*,匹配assets.example.com,关联源选Live-S3
CloudFront会按优先级从上到下匹配,自动把不同子域名的请求转到对应S3桶。
- 路径模式选
更新DNS记录
在DNS控制台加两条CNAME记录:assets-dev.example.com指向xyz.cloudfront.netassets-test.example.com指向xyz.cloudfront.net
原有的assets.example.com记录保持不变。
对比多分发方案的优势
- 成本更低:CloudFront按分发数量计费,单分发能省不少费用
- 管理更省心:所有环境的配置集中在一处,不用来回切换分发调整缓存、证书等
- 扩展性更强:后续加新环境,只需新增源和行为,不用重新建分发
内容的提问来源于stack exchange,提问作者adam78
相关产品推荐
相关产品推荐

