AWS - Mapear URL para o backend da API (como o Apache ProxyPass)

1

Eu tenho uma arquitetura da web usando o Apache como front-end e o Nodejs como back-end. Eu quero migrar essa arquitetura para a 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 de 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 CloudFront pode usar múltiplos Amazon CloudFront origens que podem ser Amazon S3 buckets ou Amazon Elastic Load Balancers . Em seguida, usaria um Amazon EC2 para hospedar meu back-end do aplicativo Node.js com Amazon 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 obter esse tipo de arquitetura na AWS?

Obrigado a todos por suas respostas!

    
por DeadEye 23.09.2015 / 23:00

1 resposta

3

Sim ... use o CloudFront.

Sua finalidade oficial, é claro, é como um CDN em cache, mas ele tem a capacidade integrada de rotear seletivamente as solicitações para o sistema de origem apropriado, com base no caminho.

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

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

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

link

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

    
por 24.09.2015 / 02:41