¿Cómo puedo solucionar errores 500 con la integración de enlaces de VPC para Amazon API Gateway?

Última actualización: 01/11/2022

He configurado Amazon API Gateway con integraciones de VPC Link. Cuando llamo a mi API, recibo un error de configuración o interno con un código de estado HTTP 500. ¿Cómo soluciono este problema?

Descripción corta

La puerta de enlace de la API de AWS puede estar fallando al no reenviar el tráfico a los recursos de backend ni devolver un código de estado HTTP 500 con enlaces de VPC si:

  • El enlace de VPC se encuentra en estado Fallido, el servicio de punto de conexión se ha eliminado o está en estado Rechazado.
  • El destino registrado para el grupo destino no es saludable o no se usa.
    Nota: Si no se envía tráfico a través del enlace de VPC durante 60 días, pasa a ser INACTIVO. Para obtener más información, consulte Trabajar con enlaces de VPC para las API HTTP.
  • Los grupos de seguridad no permiten el tráfico en puertos específicos.
  • La lista de control de acceso (ACL) a la red bloquea el tráfico.
  • El destino no escucha en los puertos de destino.
  • El certificado del nombre de dominio no coincide con el equilibrador de carga de red (NLB) o el equilibrador de carga de aplicación (ALB) habilitados para TLS.

Si el registro de Amazon CloudWatch está activado para su API, aparece un mensaje de error que indica la causa del error en los registros de ejecución.

Ejemplos de mensajes de error HTTP 500 en los registros de CloudWatch

Thu Aug 04 17:48:21 UTC 2022 : Execution failed due to configuration error: There was an internal error while executing your request
Thu Aug 04 17:48:21 UTC 2022 : Method completed with status: 500

De forma alternativa, siga estos pasos:

Thu Aug 04 19:50:21 UTC 2022 : Execution failed due to configuration error: Host name 'domain.com.com' 
does not match the certificate subject provided by the peer (CN=myinstance.com)
Thu Aug 04 19:50:21 UTC 2022 : Method completed with status: 500

Resolución

Confirmar la causa del error

Si aún no lo ha hecho, active el registro de CloudWatch para su API de REST. Asegúrese de configurar el registro de ejecución.

Consejo: al configurar los ajustes de registro, en Log level (Nivel de registro), seleccione INFO. A continuación, seleccione Log full requests/responses data (Registre datos completos de solicitudes/respuestas).

Consulte los registros de ejecución de la API de REST en CloudWatch para identificar la causa de los errores.

Compruebe el mensaje de error en los registros de ejecución y siga los siguientes pasos de resolución:

“La ejecución falló debido a un error de configuración: se produjo un error interno al ejecutar su solicitud”

  • Compruebe que el equilibrador de carga de VPC Link existe y no se ha eliminado.
  • Compruebe que el enlace de VPC esté en estado DISPONIBLE. Si el enlace de la VPC está en estado FALLIDO, debe crear un nuevo enlace de VPC y asociarlo a su API. Nota: asegúrese de implementar la API después de modificar la solicitud de integración.
  • Compruebe que la conexión del punto de conexión del enlace de la VPC esté en estado DISPONIBLE.
  • Si se hace referencia al ID de la VPC con una variable de etapa, compruebe que el ID de enlace de la VPC sea correcto.
  • Compruebe que el equilibrador de carga de enlaces de la VPC esté escuchando en el puerto HTTP/HTTPS para el que está configurada la solicitud. Compruebe que los agentes de escucha estén configurados para el puerto correcto. Compruebe las ACL de la red y asegúrese de que no estén bloqueando la solicitud.
  • Compruebe que el grupo de destino acepta la solicitud. Compruebe las ACL de la red para asegurarse de que el tráfico entrante y saliente esté autorizado. Compruebe los grupos de seguridad para asegurarse de que se permite el tráfico entrante para los puertos configurados.
  • Si la solicitud devuelve un error 500, es posible que la conexión reciba paquetes TCP de RST. Compruebe que el servidor backend esté en funcionamiento. Compruebe que el destino del backend tenga un servicio en ejecución en el puerto de destino. Compruebe que el destino del backend esté escuchando en el puerto de destino.

“La ejecución falló debido a un error de configuración: el nombre del host “domain.com.com” no coincide con el asunto del certificado proporcionado por el par (CN=MyInstance.com)”

Asegúrese de que el nombre de dominio del punto de conexión coincida con el certificado devuelto por el destino del equilibrador de carga con TLS habilitado.

“La ejecución falló debido a un error de configuración: error al crear la ruta de PKIX: sun.security.provider.certpath.SunCertPathBuilderException: no se pudo encontrar una ruta de certificación válida para el destino solicitado”

Este error significa que la API Gateway no puede encontrar la raíz CA. Incluso si InSecureSkipVerification está configurado como verdadero en la propiedad TlsConfig de la integración, API Gateway realiza una validación básica de certificados, que incluye:

  • Fecha de caducidad de los certificados.
  • El nombre del host.
  • La presencia de una autoridad certificadora raíz.

“La ejecución falló debido a un error de configuración: no se pudo verificar la firma ECDH ServerKeyExchange”

Este error significa que, dado que una clave y el certificado correspondiente no coinciden, se produce un error en el establecimiento de comunicación de la TLS. Para resolver este problema, compruebe el contenido de los archivos utilizados para las autoridades certificadoras configuradas, los certificados y las claves.

“La ejecución falló debido a un error interno”

Este error se produce porque Amazon API Gateway no pudo conectarse al equilibrador de carga a través del enlace de la VPC debido a los reinicios del destino en el equilibrador de carga. Para resolver este problema, configure el tiempo de espera en el destino para que sea superior al tiempo de espera predeterminado (350 segundos) del equilibrador de cargas.

“La ejecución falló debido a un error de configuración: no es una versión de protocolo válida: {Text of string}”

Este error significa que la integración respondió con una respuesta HTTP no válida que no cumple con la especificación HTTP. Esto podría indicar que el backend integrado está enviando datos no válidos a Amazon API Gateway.

Para solucionar este error, haga lo siguiente:

  • Reproduzca la solicitud realizada desde Amazon API Gateway. Pruebe el punto de conexión de servicio utilizado por Amazon API Gateway creando un punto de conexión de VPC que esté vinculada al ID del punto de conexión de servicio. También puede ejecutar capturas de paquetes para revisar la respuesta que se devuelve desde el backend integrado.
  • Cambie el protocolo del equilibrador de carga a TLS o TCP en función de la respuesta de los destinos para evitar el cifrado duplicado.
  • Asegúrese de que InSecureSkipVerification esté configurado como verdadero en la propiedad TlsConfig de las integraciones.