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.

Cómo permitir llamadas a Cognito desde una instancia de contenedor AWS ECS?

Tengo una configuración con un ALB y un grupo de destino creado por ECS, estoy usando Fargate y creé un pipeline de compilación siguiendo este artículo. Mi aplicación está construida con .NET Core y tiene una interfaz de usuario Angular. He logrado hacer funcionar todo esto, puedo implementar los cambios en mi código, pero estoy un poco atascado con el siguiente problema.

Estoy utilizando Cognito para la autenticación y un dominio personalizado que configuré para la interfaz de usuario alojada. Parece que, desde el navegador, cuando intento acceder a un punto final que está asegurado, obtengo un error de puerta de enlace 504, que de alguna manera no está redirigiendo a Cognito en el navegador. Todo esto funciona bien cuando ejecuto la aplicación en localhost.

Cuando revisé los registros, noté la siguiente excepción:

System.InvalidOperationException: IDX20803: No se puede obtener la configuración de: ‘https://cognito-idp.<región>.amazonaws.com/<región_y_un_código>/.well-known/openid-configuration’

Aparentemente, no puede establecer una conexión con Cognito. Mis contenedores solo están utilizando el puerto 80, las instancias del grupo de destino también están utilizando el puerto 80, ALB utiliza HTTPS en el puerto 443 que dirige el tráfico al grupo de destino, y para el puerto 80 de ALB simplemente redirijo a 443.

Probé algunas cosas diferentes, como configurar el valor de autoridad en lugar de la dirección de metadatos, intenté utilizar un BackChannelHttpHandler para realizar la llamada HTTPS, intenté actualizar los mapeos de puertos para permitir la comunicación en 443, pero de alguna manera parece que se sobrescribe con la definición de tarea que he creado cuando configure el pipeline de compilación. El modo de red en mi definición de tarea es ahora awsvpc, y si intento configurarlo como host, se quejará de que no puedo usarlo con Fargate.

¿Qué necesito hacer para permitir que la solicitud HTTPS desde mis instancias de contenedor Docker llegue a Cognito?</región_y_un_código></región>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas de conexión de Cognito en Fargate

    Si estás enfrentando problemas al establecer la conexión a Cognito desde tus instancias de Fargate, sigue los siguientes pasos:

    1. Asegúrate de que tus contenedores estén utilizando el puerto 80 y que las instancias del grupo de destino también estén utilizando el puerto 80. El ALB debe utilizar HTTPS en el puerto 443, el cual dirige el tráfico hacia el grupo de destino, y para el puerto 80 del ALB, debe redirigir al puerto 443.
    2. Verifica si el modo de red en tu definición de tarea está configurado como awsvpc. Si está configurado como host, no funcionará con Fargate.

    3. Verifica si el rol IAM ECSTaskExecutionRole de tu tarea de Fargate tiene los permisos necesarios para acceder a Cognito.

    4. Asegúrate de que la resolución DNS esté funcionando correctamente en tu VPC verificando la configuración DNS en tu definición de tarea.

    Si los pasos anteriores no funcionan, intenta actualizar el valor de authority en lugar de la dirección de metadatos, o utiliza un BackChannelHttpHandler para ejecutar la llamada HTTPS. Además, asegúrate de actualizar los mapeos de puertos para permitir la comunicación en el puerto 443.

    Si aún no puedes establecer una conexión con Cognito, considera crear una solicitud de soporte con AWS para obtener ayuda adicional.

Comments are closed.