Cómo invocar una API privada - Amazon API Gateway

Cómo invocar una API privada

Solo se puede obtener acceso a las API privadas desde las VPC y las políticas de recursos deben permitir el acceso desde las VPC y los puntos de enlace de la VPC que haya configurado. La forma en que se obtiene acceso a la API privada dependerá de si ha habilitado o no un DNS privado en el punto de enlace de la VPC. Por ejemplo, al obtener acceso a una API privada desde una red local a través de AWS Direct Connect, debe tener un DNS privado habilitado en el punto de enlace de la VPC. En este caso, siga los pasos descritos en la sección Invocación de su API privada mediante nombres de host de DNS públicos específicos de punto de enlace.

Una vez que haya implementado una API privada, podrá tener acceso a ella a través de un DNS privado (si habilitó los nombres de DNS privados) y a través de un DNS público.

Para obtener los nombres de DNS de la API privada, haga lo siguiente:

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación de la izquierda, elija Endpoints (Puntos de enlace) y elija el punto de enlace de la VPC de tipo interfaz para API Gateway.

  3. En el panel Details (Detalles), verá 5 valores en el campo DNS names (Nombres de DNS). Los 3 primeros son los nombres de DNS públicos de la API. Los otros 2 son sus nombres de DNS privados.

Invocación de la API privada a través de nombres de DNS privados

aviso

Al seleccionar la opción Enable Private DNS Name (Habilitar nombre de DNS privado) mientras se crea un punto de enlace de la VPC de la interfaz para API Gateway, la VPC en la que el punto de enlace de la VPC está presente no podrá obtener acceso a las API públicas (optimizadas para límites y regionales). Para obtener más información, consulte el artículo sobre el tema ¿Por qué no puedo conectarme a mi API pública desde un punto de enlace de la VPC de API Gateway?

Si ha habilitado un DNS privado, puede obtener acceso a la API privada utilizando los nombres de DNS privados tal y como se indica a continuación:

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

La URL base para invocar la API tiene el formato siguiente:

https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}

Por ejemplo, supongamos que configura los métodos GET /pets y GET /pets/{petId} en este ejemplo, que el ID de la API REST era 01234567ab y la región era us-west-2; en ese caso, podría probar la API escribiendo las siguientes URL en un navegador:

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

Protección de los datos

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/1

También puede usar los siguientes comandos cURL:

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

Protección de los datos

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/2

Acceso a la API privada a través de AWS Direct Connect

También puede utilizar AWS Direct Connect para establecer una conexión privada dedicada entre una red local y la VPC de Amazon y obtener acceso al punto de enlace de la API privada a través de esa conexión utilizando nombres de DNS públicos.

También puede utilizar nombres DNS privados para acceder a su API privada desde una red local mediante la configuración de un punto de conexión entrante de Amazon Route 53 Resolver y el reenvío de todas las consultas DNS del DNS privado desde su red remota. Para obtener más información, consulte Reenvío de consultas DNS entrantes a sus VPC en la Guía para desarrolladores de Amazon Route 53.

Acceso a la API privada a través de un alias de Route53

Para asociar o desasociar un punto de enlace de la VPC a su API privada, utilice el procedimiento que se describe en el artículo Asociar o desasociar un punto de enlace de la VPC a una API REST privada.

Una vez que haya asociado el ID de API REST de la API privada a los puntos de enlace de la VPC desde los que llamará a la API REST, puede utilizar el siguiente formato de URL base para invocar la API mediante un alias de Route53.

La URL base generada tiene el siguiente formato:

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

Por ejemplo, supongamos que configura los métodos GET/pets y GET/pets/{petId} en este ejemplo, que el ID de la API de su API sea 01234567ab, que el ID del punto de conexión de VPC sea vpce-01234567abcdef012 y que la región sea us-west-2; en ese caso, podría invocar la API como:

curl -v https://01234567ab-vpce-01234567abcdef012.execute-api.us-west-2.amazonaws.com/test/pets/

Invocación de su API privada mediante nombres de host de DNS públicos específicos de punto de enlace

Puede obtener acceso a su API privada utilizando nombres de host DNS específicos de punto de enlace. Se trata de nombres de host DNS públicos que contienen el ID de punto de enlace de VPC o el ID de su API privada.

La URL base generada tiene el siguiente formato:

https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/{stage}

Por ejemplo, supongamos que configura los métodos GET /pets y GET /pets/{petId} en este ejemplo, que el ID de la API de su API sea abc1234, que el nombre de host de DNS público sea vpce-def-01234567 y que la región sea us-west-2; en ese caso, podría probar la API mediante su ID de VPCE utilizando el siguiente encabezado Host en un comando cURL, como en el siguiente ejemplo:

curl -v https://vpce-def-01234567.execute-api.us-west-2.vpce.amazonaws.com/test/pets -H 'Host: abc1234.execute-api.us-west-2.amazonaws.com'

También puede obtener acceso a su API privada a través de su ID de API utilizando el encabezado x-apigw-api-id en un comando cURL en el siguiente formato:

curl -v https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/test -H'x-apigw-api-id:{api-id}'