

# Invocación de una API privada
<a name="apigateway-private-api-test-invoke-url"></a>

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.

Si invoca una API privada sin usar un nombre de dominio personalizado o nombres de DNS privados y el nombre de las API o dominio utiliza una política de seguridad que comienza por `SecurityPolicy_`, debe configurar el modo de acceso de punto de conexión a `BASIC`. Para obtener más información, consulte [Modo de acceso de punto de conexión](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).

## Invocación de una API privada con un nombre de dominio personalizado
<a name="apigateway-private-custom-domains-provider-invoke"></a>

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](apigateway-private-custom-domains.md).

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
<a name="apigateway-private-custom-domains-invoke-1"></a>

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
<a name="apigateway-private-custom-domains-invoke-2"></a>

Puede invocar la API utilizando el nombre de dominio personalizado y el nombre de host DNS privado específico del punto de conexión.

```
curl https://private-dns-hostname.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 un nombre de host DNS privado específico de un punto de conexión:

```
curl https://vpce-123456-abc000.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
<a name="apigateway-private-api-invoke-without-custom-domain-name"></a>

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.

------
#### [ Consola de administración de AWS ]

**Búsqueda de los nombres de DNS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon VPC en [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. 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.

1. 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.

------
#### [ AWS CLI ]

Use el siguiente comando [describe-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html) para mostrar los valores de DNS.

```
aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-01234567abcdef012
```

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
<a name="apigateway-private-api-route53-alias"></a>

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](apigateway-private-api-create.md#associate-private-api-with-vpc-endpoint).

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
<a name="w2aac15c20c17c17b9b9"></a>

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?](https://repost.aws/knowledge-center/api-gateway-vpc-connections)

### Invocación de una API privada con Direct Connect
<a name="w2aac15c20c17c17b9c11"></a>

Puede utilizar 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](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) 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
<a name="apigateway-private-api-public-dns"></a>

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}'
```