.png)
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 CloudFront
posso usar múltiplas Amazon CloudFront
origens que podem ser Amazon S3
buckets ou arquivos Amazon Elastic Load Balancers
. Então, eu usaria um Amazon EC2
para 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".)