如何在 Route53 中路由到 Cloudfront+s3 并将其余部分路由到 ALB?

如何在 Route53 中路由到 Cloudfront+s3 并将其余部分路由到 ALB?

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) 指向内容来源。

相关内容