AWS - Mapear URL para backend de API (semelhante ao Apache ProxyPass)

AWS - Mapear URL para backend de API (semelhante ao Apache ProxyPass)

Tenho uma arquitetura web usando Apache como front-end e Nodejs como back-end. Quero migrar essa arquitetura para AWS. O Node.js será um Elastic Beanstalk e o Apache será armazenado no Amazon S3 (ele armazena apenas arquivos estáticos).

Eu uso essas diretivas para mapear o caminho da URL /api para o back-end no Apache:

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

Eu gostaria de usar o mesmo mecanismo na AWS. Descobri que o Amazon S3 não conseguirá fazer isso, pois é apenas um serviço de armazenamento.

Descobri que Amazon CloudFrontposso usar múltiplas Amazon CloudFrontorigens que podem ser Amazon S3buckets ou arquivos Amazon Elastic Load Balancers. Então, eu usaria um Amazon EC2para hospedar o back-end do meu aplicativo Node.js com umAmazon Load Balancer

A arquitetura final seria então

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

Esse tipo de arquitetura é possível? Se sim, é a melhor maneira de conseguir esse tipo de arquitetura na AWS?

Obrigado a todos pelas suas respostas!

Responder1

Sim... use o CloudFront.

Seu objetivo oficial, é claro, é ser um CDN de cache, mas possui a capacidade integrada de rotear seletivamente solicitações para o sistema de origem apropriado, com base no caminho.

Portanto, você configuraria seu caminho padrão como S3 e as solicitações seriam enviadas para seu bucket. Configure uma segunda origem apontando para o Elastic Load Balancer na frente da implantação do Elastic Beanstalk. Defina um padrão de caminho /api/*para rotear solicitações para esta segunda origem.

O comportamento de cache pode ser desabilitado se não for necessário ou desejado.

Uma implantação do CloudFront é chamada de "distribuição".

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

Esta é a "melhor" abordagem? Depende da sua experiência e criatividade... mas se você deseja usar os componentes AWS disponíveis, então sim, este é provavelmente o caminho a seguir. É o único componente que fornece roteamento de solicitações essencialmente livre de manutenção por caminho em http. (O gateway de API da Amazon também roteia em caminhos, é claro, mas não é adequado para este aplicativo com S3 como destino "curinga".)

informação relacionada