Solo puede invocar una API privada en una VPC mediante un punto de conexión de VPC. La API privada debe tener una política de recursos que permita que las VPC y los puntos de conexión de VPC específicos invoquen la API.
Invocación de una API privada con un nombre de dominio personalizado
Para invocar una API privada con un nombre de dominio personalizado, el punto de conexión de VPC necesita una asociación de acceso a nombre de dominio con un nombre de dominio personalizado, y el nombre de dominio personalizado debe permitir el acceso para que el punto de conexión de VPC lo invoque. Para obtener más información, consulte Nombres de dominio personalizados para API privadas en API Gateway.
No existe ninguna diferencia entre invocar un nombre de dominio personalizado privado de una VPC de su propia Cuenta de AWS o de una Cuenta de AWS distinta.
Uso del nombre de dominio personalizado
Dentro de la VPC, puede invocar la API con el nombre de dominio personalizado. El siguiente ejemplo corresponde a un comando curl para invocar el nombre de dominio personalizado privado:
curl https://private.example.com
Uso de nombres de host DNS privados específicos de un punto de conexión
Puede invocar la API utilizando el nombre de dominio personalizado como nombre de host DNS privado específico del punto de conexión. El nombre de host DNS privado es el nombre del dominio personalizado.
curl https://
vpce-id
.execute-api.region
.vpce.amazonaws.com/basepath
-H 'Host:custom-domain-name
'
El siguiente ejemplo corresponde a un comando curl para invocar el nombre de dominio personalizado utilizando nombres de host DNS privados específicos de un punto de conexión:
curl https://vpce123456.execute-api.us-east-2.vpce.amazonaws.com/test -H 'Host:private.example.com'
Invocación de una API privada sin utilizar un nombre de dominio personalizado
Para invocar la API privada sin usar un nombre de dominio personalizado, debe identificar los nombres DNS de la API. El siguiente procedimiento muestra cómo buscar los nombres de DNS.
Búsqueda de los nombres de DNS
-
Inicie sesión en la AWS Management Console y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de navegación principal, elija Puntos de conexión y, a continuación, elija el punto de conexión de VPC de la interfaz para API Gateway.
-
En el panel Detalles, verá cinco valores en el campo Nombres de DNS. Los tres primeros son los nombres de DNS públicos de la API. Los otros dos son los nombres de DNS privados.
Invocación de una API privada a través de un alias de Route53
Puede asociar o desasociar un punto de conexión de VPC con la API privada. Para obtener más información, consulte (Opcional) Asociación o desasociación de un punto de conexión de VPC con una API privada.
Tras asociar los puntos de conexión de VPC a la API privada, puede utilizar la siguiente URL base para invocar la API:
https://
{rest-api-id}
-{vpce-id}
.execute-api.{region}
.amazonaws.com/{stage}
Por ejemplo, si configuró el método GET /pets
para la etapa test
y el ID de la API de REST era 01234567ab
, el ID de punto de conexión de VPC era vpce-01234567abcdef012
y la región era us-west-2
, puede invocar la API de la siguiente manera:
curl -v https://01234567ab-vpce-01234567abcdef012.execute-api.us-west-2.amazonaws.com/test/pets
Invocación de una API privada a través de nombres de DNS privados
Si ha habilitado un DNS privado, puede acceder a la API privada con el nombre de DNS privado siguiente:
{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, si configuró el método GET /pets
para la etapa test
y el ID de la API de REST era 01234567ab
y la región era us-west-2
, podría invocar la API privada ingresando la siguiente URL en un navegador:
https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets
También puede usar el comando cURL siguiente para invocar la API privada:
curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets
aviso
Si habilita el DNS privado para el punto de conexión de VPC, no podrá acceder al punto de conexión predeterminado para las API públicas. 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 conexión de VPC de API Gateway?
Invocación de una API privada con AWS Direct Connect
Puede utilizar AWS Direct Connect para establecer una conexión privada dedicada entre una red en las instalaciones y Amazon VPC y acceder al punto de conexión de la API privada a través de esa conexión mediante 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.
Invocación de la API privada mediante nombres de host de DNS públicos específicos de punto de conexión
Puede obtener acceso a su API privada utilizando nombres de host DNS específicos de punto de conexión. Se trata de nombres de host DNS públicos que contienen el ID de punto de conexión 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, si configura el método GET /pets
para la etapa test
y el ID de la API de REST era abc1234
, el nombre de host de DNS público era vpce-def-01234567
y la región era us-west-2
, podría invocar la API privada con su ID de VPCE utilizando el siguiente encabezado Host
en un comando cURL:
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 invocar la API privada a través de su ID de API mediante 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/{stage}
-H 'x-apigw-api-id:{api-id}
'