在AWS中存储未经Web服务器访问的路由请求体

比方说,我有一个网站:在AWS上运行的mysite.com ,通过Application Load Balancer后面的一些EC2实例提供服务。 负载均衡器通过ACM证书终止SSL。

我需要将传入的请求路由到远离负载均衡器的URL(例如mysite.com/{user_id}/something/here/ ),而是将它们发送到Lambda函数(更具体地说,我想只捕获请求主体并写在某个地方,然后返回一个HTTP 200;它不必通过Lambda函数来完成)。

ALB允许您路由到不同的目标组,但它们只能包含看起来像的EC2实例。 文档状态“您注册目标,如EC2实例,目标组” – 如果不仅是EC2实例,还可以添加什么?

我不想运行我自己的haproxy实例,也不需要通过nginx路由它们,一旦请求通过ALB并打到Web服务器,因为这个练习的目的是减less我必须pipe理的事情,而不是增加他们!

有没有解决的办法?

您将目标(如EC2实例)注册到目标组。

http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html

你做了一个精明的观察。 这是一个有趣的词语select……但至less现在,EC2实例是唯一的目标。

调用Lambda函数或将其代理到API网关(使用Nginx或HAProxy)的EC2实例是一个合理的方法。 如果您不熟悉将实例作为代理使用,那么当您使用代理进行所有工作时,您甚至可能会惊讶于即使极小的实例可以推送多lessstream量。 (我有t2.micro和t2.nano HAProxy实例,代理每天超过100万的请求,没有超过5%的CPU)。

但是,如果您想要减less必须pipe理的内容,请将所有内容保留在一个域中,然后拔除某些path,则可以在ALB 前面使用CloudFront将其他地方的某些path模式(例如API网关)路由。 (奖励:您也可以使用此解决scheme将S3的静态资产集成到您的站点中,甚至可以通过path模式匹配将请求路由到AWS以外的服务器和服务。)CloudFront作为CDN进行销售,但也会发生是一个无限可扩展的反向代理。