¿Cómo soluciono los problemas al conectarme a un punto de conexión de la API privada de API Gateway?

9 minutos de lectura
0

Tengo problemas para conectarme a mi punto de conexión de la API privada de Amazon API Gateway que se encuentra en Amazon Virtual Private Cloud (Amazon VPC). ¿Cómo soluciono el problema?

Descripción breve

Los recursos de AWS de Amazon VPC pueden no conectarse a un punto de conexión de la API privada por alguno de los motivos siguientes:

Cuando se activa el registro de Amazon CloudWatch para su API, aparece un mensaje de error que indica la causa del error en los registros de ejecución.

Si la solicitud de la API no genera ningún registro de CloudWatch una vez activado el registro, significa que la solicitud no llegó al punto de conexión. Si sus solicitudes de la API no llegan al punto de conexión, asegúrese de que la URL de invocación de la API privada tenga el formato correcto.

Nota: Los problemas de conexión pueden deberse a una política de recursos de API Gateway mal configurada o a nombres de DNS incorrectos en la URL de invocación del punto de conexión de la API privada.

Resolución

Confirmar la causa del error

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

Consejo: Al configurar los ajustes de registro, en Nivel de registro, elija INFO. A continuación, seleccione Registrar los datos completos de las solicitudes/respuestas.

2.    Para identificar la causa de los errores, consulte los registros de ejecución de la API de REST en CloudWatch. Si las solicitudes de la API llegan al punto de conexión, aparece un mensaje de error similar a uno de los siguientes ejemplos:

  • «Usuario: anónimo no está autorizado para llevar a cabo: execute-api:Invoke on resource:»
  • «Se agotó el tiempo de espera de la conexión»

Si la solicitud de la API no genera ningún registro de CloudWatch una vez activado el registro, asegúrese de que la URL de invocación de su API privada tenga el formato correcto. Para obtener instrucciones, consulte la sección de este artículo Si la solicitud de la API no produce ningún registro de CloudWatch una vez activado el registro.

Para obtener más información, consulte ¿Cómo encuentro los errores de la API de REST de API Gateway en mis registros de CloudWatch?

Resolver los errores «Usuario: anónimo no está autorizado para llevar a cabo: execute-api:Invoke on resource:»

1.    Compruebe que lapolítica de recursos de API Gateway del punto de conexión de la API privada permita el tráfico desde el punto de conexión de VPC de la interfaz o la VPC de origen hasta el punto de conexión de la API. Para ver un ejemplo de política de recursos, consulte Ejemplo: Permitir el tráfico de una API privada en función del punto de conexión de VPC o la VPC de origen.

2.    Compruebe que la política de punto de conexión de VPC permita al cliente acceder al punto de conexión de la API privada. Para ver ejemplos de políticas de punto de conexión de VPC, consulte Ejemplos de políticas de puntos de conexión de la VPC.

Para obtener instrucciones sobre cómo probar las políticas de recursos de API Gateway, consulte la sección Probar la política de recursos de ¿Cómo permito que solo direcciones IP específicas accedan a mi API de REST de API Gateway?

Importante: Si modifica la política de recursos de su API, debe desplegar la API para confirmar los cambios.

Resolver los errores de «Se agotó el tiempo de espera de la conexión»

1.    Compruebe que exista un punto de conexión de VPC de execute-api de API Gateway en la VPC. Compruebe también si el punto de conexión se encuentra en la misma región de AWS que la API privada. Si no existe, cree un punto de conexión de VPC de la interfaz para execute-api de API Gateway.

2.    Compruebe que el cliente que invoca el punto de conexión de la API privada existe en la misma VPC o tiene acceso a la VPC con el punto de conexión de VPC. Puede probar esto con la herramienta traceroute.

Nota: Se puede acceder a las API privadas desde los clientes de la VPC o desde los clientes que tienen conectividad de red a la VPC.

Para instalar traceroute, ejecute los siguientes comandos:

Amazon Linux:

$ sudo yum install traceroute

Ubuntu:

$ sudo apt-get install traceroute

Probar la conectividad mediante traceroute:

$ sudo traceroute -n -T -p 443 <VPC-endpoint IP-address>

El argumento -T -p 443 -n lleva a cabo un seguimiento basado en TCP en el puerto 443.

3.    Compruebe que las reglas de susgrupos de seguridad de Amazon VPC estén configuradas correctamente.

Probar los grupos de seguridad de Amazon VPC:

Ejecute el siguiente comando desde el cliente que lleva a cabo solicitudes al punto de conexión de la API privada. Asegúrese de reemplazar {public-dns-hostname} por los nombres de host de DNS públicos que contienen el ID de punto de conexión de VPC de su API. Sustituya {region} por la región de AWS en la que se encuentra el punto de conexión de VPC de su interfaz.

$ telnet {public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com 443

Si se agota el tiempo de espera de la conexión, las reglas de los grupos de seguridad de Amazon VPC no están configuradas correctamente.

Compruebe lo siguiente:

  • El recurso solicitante tiene una regla de grupo de seguridad que permite el tráfico saliente del puerto TCP 443 al rango de direcciones IP o al grupo de seguridad del punto de conexión de VPC.
  • El punto de conexión de VPC tiene una regla de grupo de seguridad que permite el tráfico entrante del puerto TCP 443 desde el rango de direcciones IP o el grupo de seguridad del recurso solicitante.

Para obtener más información, consulte Controlar el tráfico hacia los recursos de AWS mediante grupos de seguridad.

Si la solicitud de la API no produce ningún registro de CloudWatch una vez activado el registro

1.    Compruebe que la política de recursos de API Gateway del punto de conexión de la API privada esté configurada correctamente.

Para obtener más información, consulte la siguiente sección de este artículo: Resolver los errores «Usuario: anónimo no está autorizado a llevar a cabo: execute-api:Invoke on resource:».

2.    Compruebe que la URL de invocación de su API privada tenga el formato correcto.

El formato correcto depende de tener un DNS privado activado para el punto de conexión de VPC. Si el DNS privado no está activado, debe usar nombres de host de DNS públicos específicos del punto de conexión para acceder al punto de conexión de la API privada. Si el DNS privado está activado, debe usar nombres de DNS privados para acceder al punto de conexión de la API privada.

Para obtener más información, consulte Cómo invocar una API privada.

Comprobar que el dominio del punto de conexión de la API privada se resuelve correctamente en la dirección IP del punto de conexión de VPC

1.    Ejecute el siguiente comando nslookup desde el cliente que lleva a cabo solicitudes al punto de conexión de la API privada. Asegúrese de que el cliente esté dentro de la VPC donde existe el punto de conexión de VPC. Reemplace {restapi-id} por el ID de su API privada. Sustituya {region} por la región de AWS en la que se encuentra el punto de conexión de su API privada.

$ nslookup {restapi-id}.execute-api.{region}.amazonaws.com

Un resultado exitoso muestra las direcciones IP privadas del punto de conexión de VPC.

2.    Ejecute el siguiente comando nslookup. Asegúrese de reemplazar {public-dns-hostname} por los nombres de host de DNS públicos que contienen el ID de punto de conexión de VPC de su API. Sustituya {region} por la región de AWS en la que se encuentra el punto de conexión de VPC de su interfaz.

$ nslookup {public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com

Un resultado exitoso muestra las direcciones IP privadas del punto de conexión de VPC.

3.    Compare las direcciones IP de las salidas de cada comando. Si las direcciones IP de los resultados de cada comando coinciden, la configuración funciona según lo previsto.

Nota: Puede activar el DNS privado para su punto de conexión de VPC en cualquier momento en la consola de Amazon VPC de la siguiente manera:
En el Panel de puntos de conexión, seleccione el punto de conexión de VPC de su interfaz.
Elija Acciones.
Elija Modificar nombres de DNS privados.
Seleccione la casilla Habilitar nombre de DNS privado. Después, seleccione Guardar cambios.
Elija Modificar nombres de DNS privados.


Información relacionada

¿Cómo puedo acceder a una API de REST privada de API Gateway en otra cuenta de AWS mediante un punto de conexión de VPC de la interfaz?

¿Por qué aparece un error HTTP 403 Prohibido al conectarme a mis API de API Gateway desde una VPC?

Acceda a un Servicio de AWS mediante un punto de conexión de VPC de interfaz

Privacidad del tráfico entre redes en Amazon VPC

Supervisión de la ejecución de la API de REST con métricas de Amazon CloudWatch