AWS – 将API映射到API后端(Apache ProxyPass Like)

我有一个networking架构使用Apache作为前端和Nodejs作为后端。 我想将此体系结构迁移到AWS。 Node.js将成为Elastic Beanstalk,Apache将存储在Amazon S3上(它只存储静态文件)。

我使用这些指令将/ api URLpath映射到Apache的后端:

<Location /api> ProxyPass http://localhost:8081/api </Location> 

我想在AWS中使用相同的机制。 我发现Amazon S3不能做到这一点,因为它只是一个存储服务。

我发现Amazon CloudFront可以使用多个Amazon CloudFront Origins,可以是Amazon S3存储桶或Amazon Elastic Load Balancers 。 然后,我将使用Amazon EC2将我的Node.js应用程序托pipe到Amazon Load Balancer

最终的架构将是

  - Amazon Elastic Load Balancer -> Amazon EC2 /api / / -->Amazon CloudFront-< \ else \ - Amazon S3 

这种types的build筑是可能的吗? 如果是的话,在AWS中实现这种架构是否是最好的方法?

感谢大家的回应!

是的…使用CloudFront。

它的官方目的当然是作为cachingCDN,但是它具有根据path有select地将请求路由到适当的原始系统的内置能力。

所以,你可以configuration你的默认path为S3,并且请求会被发送到你的存储桶。 在Elastic Beanstalk部署之前configuration指向Elastic Load Balancer的第二个来源。 设置path模式/api/*将请求路由到第二个原点。

如果不需要或不需要,可以禁用caching行为。

CloudFront部署被称为“分发”。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web.html

这是“最好的”方法吗? 这取决于您的专业知识和创造力……但是如果您希望使用可用的AWS组件,那么是的,这可能是要走的路。 它是唯一的一个组件,通过http的path提供基本免维护的路由请求。 (当然,Amazon API网关也在path上路由,但不适合以S3作为“通配符”目标的此应用程序。)