如何在AWS实现abc.com/documents/路径访问S3托管的文档?
可行实现方案
针对你的场景,推荐以下两种低成本、无需大规模迁移文档的方案:
方案一:使用CloudFront统一路由(推荐)
这是最稳妥且易维护的方案,无需改动现有S3文档结构,同时能利用CloudFront的缓存能力加速文档访问:
- 新建CloudFront分配,设置两个源:
- 主源:指向你的ELB(对应Angular SSR的EC2服务)
- 文档源:指向存储文档的S3桶(需提前开启S3静态网站托管,或使用S3 REST API端点)
- 在CloudFront中配置行为规则:
- 添加一条行为,路径匹配为
/documents/*,关联到S3源,并开启路径转换——将请求路径中的/documents/前缀移除(比如把/documents/Readme.pdf转换为/Readme.pdf,匹配S3中文件的存储路径) - 保留默认行为,路径匹配
/*,关联到ELB源
- 添加一条行为,路径匹配为
- 更新abc.com的DNS记录,将域名指向CloudFront分配的域名
- 安全配置:为S3源创建CloudFront Origin Access Identity(OAI),并修改S3桶策略,仅允许OAI访问,避免S3桶直接暴露公网
方案二:利用ALB路径转发(需当前ELB为应用负载均衡)
如果当前使用的是AWS应用负载均衡(ALB),可以直接通过ALB的规则实现路由:
- 先配置S3桶为静态网站托管,设置桶策略允许ALB所在VPC的访问权限
- 在ALB的监听器中添加新规则:
- 路径条件设置为
/documents/* - 动作选择「转发至」,并配置路径重写:将
/documents/前缀替换为空,转发到S3静态网站的端点 - 确保原有规则(匹配所有路径转发至EC2目标组)优先级低于这条新规则
- 路径条件设置为
- 无需修改DNS记录,保持abc.com指向ELB即可
不推荐的方案
直接将1万份文档迁移到EC2或Angular SSR项目中:不仅迁移工作量大,还会增加EC2的存储压力,同时无法利用S3的低成本存储和高可用性特性。
内容的提问来源于stack exchange,提问作者dharam
相关产品推荐
相关产品推荐

