es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Aplicación Angular de AWS S3 que llama a una tarea de ECS a través de la dirección de Route 53.

Estoy tratando de implementar aplicaciones cliente Angular y servidor Spring Boot en AWS. Logré iniciar la aplicación del servidor como tarea de ECS, utilizando el descubrimiento de servicios para evitar el cambio de la dirección IP del servidor dentro del código de la aplicación Angular en cada reinicio de tarea. Por lo tanto, configuré un DNS de Router 53, referenciando la tarea mencionada, en lugar de la IP pública de la tarea como URL de la aplicación del servidor en la aplicación Angular, pero este enfoque no funciona. Cuando pongo la IP pública real de la tarea como URL del servidor, todo funciona bien. La aplicación Angular se implementa en AWS S3.

Ejemplo del problema:

find() {
    return this.http.get(http://127.0.0.1:8080 + '/all');
}

Ejemplo de solución:

find() {
    return this.http.get(http://test-service.test:8080 + '/all');
}

donde test-service.test es un registro de Route 53.

¿Es este enfoque siquiera posible? Si no, ¿puede sugerirme otra solución?

Espero que la pregunta sea lo suficientemente clara. Si necesita más detalles, por favor dígamelo.

¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Despliegue de aplicaciones Angular y Spring Boot en AWS con ECS y Route 53

    El problema

    El usuario ha desplegado exitosamente su aplicación servidor Spring Boot como una tarea ECS con descubrimiento de servicios, para evitar cambiar la dirección IP del servidor en el código de la aplicación Angular en cada reinicio de tarea. Sin embargo, cuando establecen la DNS Router 53 para referirse a la tarea ECS en lugar de la IP pública de la tarea como URL de la aplicación servidor en la aplicación Angular, el enfoque no funciona. La aplicación Angular está desplegada en AWS S3.

    La solución

    Una posible solución es utilizar Route 53 para crear un registro A para la aplicación servidor Spring Boot, y utilizar esa URL en la aplicación Angular en lugar de la IP pública de la tarea o la URL de la tarea ECS.

    Por ejemplo, en lugar de lo siguiente:

    find() {
        return this.http.get(http://127.0.0.1:8080 + '/all');
    }
    

    Utilice lo siguiente:

    find() {
        return this.http.get(http://test-service.test:8080 + '/all');
    }
    

    Donde test-service.test es el registro de Route 53.

    Esto debería permitir que la aplicación Angular se conecte a la aplicación servidor sin problemas. Si este enfoque no funciona, o si hay otros problemas, otras posibles soluciones incluyen el uso de un Balanceador de carga elástico (ELB) o un proxy inverso para dirigir el tráfico a la tarea ECS.

    Sin embargo, es importante tener en cuenta que esta solución supone que la tarea ECS y el bucket de S3 se encuentran en la misma VPC. Si no lo están, puede haber pasos adicionales requeridos para configurar la red correctamente.

Comments are closed.