foobar.com
该项目有一个指向旧系统的域名,主要托管和提供静态文件。随着时间的推移,项目变得越来越复杂,在 AWS ALB 中,某些/routes
域名指向特别孤立的微应用程序(例如,nodejs api 服务、php 服务(如 cms)等);所有这些都通过 AWS ECS 部署。但今天,我想将仅包含静态文件的项目部署到 s3+cloudfront(以利用 CDN 优势和更低的价格),但使用相同的foobar.com
+ ALB 并将路径/foobar
路由到 s3+cloudfront 位置。我还没有找到解决方案,我不确定是否可以设置?有哪些选项可以解决我的用例?因此,当前状态是主域名指向 A 记录ALIAS dualstack-alb
。
Cloudfront 有可选的 CNAME,但如上所述,域名foobar.com
指向遗留项目容器并且仅指向/routes
其他地方。
当创建新发行版时,我会获得一个foobar.cloudfront.net
域,可用于访问已部署的静态文件。但显然这不是我想要的,我想使用主域名foobar.com
,当/routeX
请求时指向或提供foobar.cloudfront.net
。这是:
foobar.com > shows the legacy project, in ec2 container 1
foobar.com/cms > shows the cms project, in ec2 container 2
foobar.com/myNewProject/ > should show the X project, in s3
下图说明了其工作原理或应如何工作:
经过我目前所做的研究,似乎我必须将主域名 A 记录指向 Cloudfront,而不是让 A 记录指向 ALB ALIAS dualstack.xxxxxxs-alb-xxxxx
,让 cloudfront/route
指向 s3。其他一切都指向ALB
。这就是我的问题所在!
我目前只是在监视,似乎找不到如何设置/route
为 s3 以及将其他所有内容设置为alb
!我可以在 cloudfront 中看到 CNAME 选项,但没有路由规则或类似的东西。
答案1
经过一番研究并查看文档后,我找到了解决方案!
首先,我们需要将 DNS A 记录指向 Cloudfront,以便 Cloudfront 进程先于其他任何进程发生。
其次,我们需要识别内容来源,如下所述(https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesDomainName)。
第三,我们指定路径模式(https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern) 指向内容来源。