

# Invocar uma API privada
<a name="apigateway-private-api-test-invoke-url"></a>

Só é possível invocar uma API privada de dentro de uma VPC usando um endpoint da VPC. A API privada deve ter uma política de recursos que permita que VPCs e endpoints da VPC específicos invoquem a API.

Se você invocar uma API privada sem utilizar um nome de domínio personalizado ou nomes DNS privados e suas APIs ou o nome de domínio usar uma política de segurança que comece com `SecurityPolicy_`, você deverá definir o modo de acesso ao endpoint como `BASIC`. Para obter mais informações, consulte [Modo de acesso ao endpoint](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).

## Invocar uma API privada usando um nome de domínio personalizado
<a name="apigateway-private-custom-domains-provider-invoke"></a>

Para invocar uma API privada usando um nome de domínio personalizado, o endpoint da VPC precisa de uma associação de acesso ao nome de domínio com um nome de domínio personalizado e o nome de domínio personalizado precisa permitir o acesso do endpoint da VPC para invocá-lo. Para obter mais informações, consulte [Nomes de domínio personalizados para APIs privadas no API Gateway](apigateway-private-custom-domains.md).

Não há diferença entre invocar um nome de domínio personalizado privado em uma VPC em sua própria Conta da AWS ou em uma Conta da AWS diferente.

### Use seu nome de domínio personalizado
<a name="apigateway-private-custom-domains-invoke-1"></a>

Dentro da sua VPC, você pode invocar sua API usando o nome de domínio personalizado. O seguinte exemplo mostra um comando curl para invocar seu nome de domínio personalizado privado:

```
curl https://private.example.com
```

### Usar nomes de host DNS privados específicos do endpoint
<a name="apigateway-private-custom-domains-invoke-2"></a>

É possível invocar a API usando o nome de domínio personalizado e o nome de host DNS privado específico do endpoint.

```
curl https://private-dns-hostname.execute-api.region.vpce.amazonaws.com/basepath -H 'Host:custom-domain-name'
```

O exemplo a seguir mostra um comando curl para invocar o nome de domínio personalizado usando um nome de host DNS privado específico do endpoint:

```
curl https://vpce-123456-abc000.execute-api.us-east-2.vpce.amazonaws.com/test -H 'Host:private.example.com'
```

## Invocar uma API privada sem usar um nome de domínio personalizado
<a name="apigateway-private-api-invoke-without-custom-domain-name"></a>

Para invocar a API privada sem usar um nome de domínio personalizado, é necessário identificar os nomes DNS da API. O procedimento a seguir mostra como encontrar os nomes DNS.

------
#### [ Console de gerenciamento da AWS ]

**Como encontrar os nomes DNS**

1. Faça login no Console de gerenciamento da AWS e abra o console da Amazon VPC em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. No painel de navegação principal, selecione **Endpoints** e escolha o endpoint de interface da VPC do API Gateway.

1. No painel **Detalhes**, você verá cinco valores no campo **Nomes DNS**. Os três primeiros são os nomes DNS públicos da API. Os outros dois são os nomes DNS privados dela.

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

Use o comando [describe-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html) a seguir para listar os valores de DNS.

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

Os três primeiros são os nomes DNS públicos da API. Os outros dois são os nomes DNS privados dela.

------

### Invocar uma API privada usando um alias Route53
<a name="apigateway-private-api-route53-alias"></a>

É possível associar ou desassociar um endpoint da VPC de uma API privada. Para obter mais informações, consulte [(Opcional) Associar ou desassociar um endpoint da VPC a uma API privada](apigateway-private-api-create.md#associate-private-api-with-vpc-endpoint).

Depois de associar endpoints da VPC à API privada, você pode usar o seguinte URL base para invocar a API:

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

Por exemplo, se você configurou o método `GET /pets` para o estágio `test` e seu ID de API REST foi `01234567ab`, seu ID de endpoint da VPC foi `vpce-01234567abcdef012` e sua região foi `us-west-2`, poderá invocar a API como:

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

### Invocar uma API privada usando nomes DNS privados
<a name="w2aac15c20c17c17b9b9"></a>

Se você tiver habilitado a opção de DNS privado, poderá acessar a API privada usando o seguinte nome DNS privado:

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

A URL de base para invocar a API está neste formato:

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

Por exemplo, se você configurou o método `GET /pets` para o estágio `test` e seu ID de API REST foi `01234567ab` e sua região foi `us-west-2`, pode invocar a API privada inserindo o seguinte URL em um navegador:

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

Também é possível usar o seguinte comando cURL para invocar a API privada:

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

**Atenção**  
Se habilitar a opção de DNS privado para o endpoint da VPC, você não poderá acessar o endpoint padrão para APIs públicas. Para obter mais informações, consulte [Por que não consigo me conectar à API pública em um endpoint da VPC do API Gateway?](https://repost.aws/knowledge-center/api-gateway-vpc-connections).

### Invocar uma API privada usando o Direct Connect
<a name="w2aac15c20c17c17b9c11"></a>

Você pode usar o Direct Connect para estabelecer uma conexão privada dedicada de uma rede on-premises com o Amazon VPC e acessar o endpoint da API privada nessa conexão usando nomes DNS públicos.

Você também pode usar nomes de um DNS privado para acessar a sua API privada em uma rede on-premises configurando um endpoint de entrada do Amazon Route 53 Resolver e encaminhando para ele todas as consultas de DNS do DNS privado pela sua rede remota. Para obter mais informações, consulte [Encaminhamento de consultas de DNS de entrada para as suas VPCs](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) no *Guia do desenvolvedor do Amazon Route 53*.

### Invocar uma API privada usando nomes de host DNS públicos específicos do endpoint
<a name="apigateway-private-api-public-dns"></a>

É possível acessar a API privada usando nomes de host DNS específicos de endpoint. Esses são os nomes de hosts DNS públicos que contêm o ID do VPC endpoint ou ID de API da API privada.

O URL base gerado está no seguinte formato:

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

Por exemplo, se você configurar o método `GET /pets` para o estágio `test` e o ID de API REST for `abc1234`, o nome de host DNS público for `vpce-def-01234567` e a região for `us-west-2`, você poderá invocar a API privada usando o ID de VPCe dela com o cabeçalho `Host` em um 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'
```

Também é possível invocar a API privada pelo ID de API usando o cabeçalho `x-apigw-api-id` em um comando cURL no seguinte formato:

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