AWS: asignar URL al backend de API (como Apache ProxyPass)

AWS: asignar URL al backend de API (como Apache ProxyPass)

Tengo una arquitectura web que utiliza Apache como front-end y Nodejs como back-end. Quiero migrar esta arquitectura a AWS. Node.js será un Elastic Beanstalk y Apache se almacenará en Amazon S3 (solo almacena archivos estáticos).

Utilizo estas directivas para asignar la ruta URL /api al back-end en Apache:

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

Me gustaría utilizar el mismo mecanismo en AWS. Descubrí que Amazon S3 no podrá hacer esto ya que es solo un servicio de almacenamiento.

Descubrí que Amazon CloudFrontse pueden usar múltiples Amazon CloudFrontorígenes que pueden ser Amazon S3depósitos o archivos Amazon Elastic Load Balancers. Luego, usaría un Amazon EC2para alojar el back-end de mi aplicación Node.js con unAmazon Load Balancer

La arquitectura final sería entonces

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

¿Es posible este tipo de arquitectura? En caso afirmativo, ¿es la mejor manera de lograr este tipo de arquitectura en AWS?

¡Gracias a todos por sus respuestas!

Respuesta1

Sí... utilice CloudFront.

Su propósito oficial, por supuesto, es ser una CDN de almacenamiento en caché, pero tiene la capacidad incorporada de enrutar solicitudes de forma selectiva al sistema de origen apropiado, según la ruta.

Por lo tanto, configuraría su ruta predeterminada para que sea S3 y las solicitudes se enviarían a su depósito. Configure un segundo origen que apunte a Elastic Load Balancer frente a su implementación de Elastic Beanstalk. Establecer un patrón de ruta de/api/* para enrutar las solicitudes a este segundo origen.

El comportamiento de almacenamiento en caché se puede desactivar si no es necesario o no se desea.

Una implementación de CloudFront se denomina "distribución".

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

¿Es este el mejor enfoque? Depende de su experiencia y creatividad... pero si desea utilizar los componentes de AWS disponibles, entonces sí, probablemente este sea el camino a seguir. Es el único componente que proporciona un enrutamiento de solicitudes esencialmente libre de mantenimiento por ruta en http. (La puerta de enlace API de Amazon también enruta rutas, por supuesto, pero no es adecuada para esta aplicación con S3 como destino "comodín").

información relacionada