

# Tipos de endpoint da API para APIs REST no API Gateway
<a name="api-gateway-api-endpoint-types"></a>

Um tipo de *[endpoint da API](api-gateway-basic-concept.md#apigateway-definition-api-endpoints)* refere-se ao nome do host da API. O tipo de endpoint da API pode ser *edge-optimized*, *regional* ou *privado*, dependendo de onde a maior parte do seu tráfego de API se origina.

## Endpoint de API otimizado para bordas
<a name="api-gateway-api-endpoint-types-edge-optimized"></a>

Um *[endpoint de API otimizado para borda](api-gateway-basic-concept.md#apigateway-definition-edge-optimized-api-endpoint)* geralmente direciona as solicitações para o ponto de presença (POP) do CloudFront mais próximo, o que pode ajudar nos casos em que os clientes estão distribuídos geograficamente. Esse é o tipo de endpoint padrão para APIs REST do API Gateway.

As APIs otimizadas para fronteiras mantêm em letra maiúscula os nomes dos [cabeçalhos HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) (por exemplo, `Cookie`).

O CloudFront classifica os cookies HTTP em ordem natural por nome de cookie antes de encaminhar a solicitação para sua origem. Para obter mais informações sobre a maneira como o CloudFront processa os cookies, consulte [Armazenamento em cache de conteúdo com base em cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html).

Qualquer nome de domínio personalizado que for usado para uma API otimizada para a borda se aplicará a todas as regiões.

## Endpoints de API regionais
<a name="api-gateway-api-endpoint-types-regional"></a>

Um *[endpoint de API regional](api-gateway-basic-concept.md#apigateway-definition-regional-api-endpoint)* é destinado a clientes na mesma região. Quando um cliente em execução em uma instância do EC2 chama uma API na mesma região ou quando uma API é destinada a atender a um pequeno número de clientes com alta demanda, uma API regional reduz a sobrecarga da conexão.

Para uma API regional, o nome de domínio personalizado que você usa é específico da região em que a API é implantada. Se você implantar uma API regional implantada em várias regiões, o nome de domínio personalizado poderá ser o mesmo em todas as regiões. Você pode usar domínios personalizados em conjunto com o Amazon Route 53 para executar tarefas como [roteamento baseado em latência](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency). Para obter mais informações, consulte [Configurar um nome de domínio regional personalizado no API Gateway](apigateway-regional-api-custom-domain-create.md) e [Configurar um nome de domínio personalizado otimizado para borda no API Gateway](how-to-edge-optimized-custom-domain-name.md).

Os endpoints de API regionais transmitem todos os nomes de cabeçalho no estado em que se encontram.

**nota**  
Nos casos em que os clientes da API são geograficamente dispersos, ainda poderá fazer sentido usar um endpoint de API regional junto à sua própria distribuição do Amazon CloudFront para garantir que o API Gateway não associe a API às distribuições do CloudFront controladas pelo serviço. Para obter mais informações sobre esse caso de uso, consulte [Como posso configurar o API Gateway com minha própria distribuição do CloudFront?](https://repost.aws/knowledge-center/api-gateway-cloudfront-distribution).

## Endpoints privados de API
<a name="api-gateway-api-endpoint-types-private"></a>

Um *[endpoint privado da API](api-gateway-basic-concept.md#apigateway-definition-private-api-endpoint)* é um endpoint de API que somente pode ser acessado de sua Amazon Virtual Private Cloud (VPC) usando um VPC endpoint de interface, uma endpoint network interface (ENI – Interface de rede de endpoint) que você cria em sua VPC. Para obter mais informações, consulte [APIs REST privadas no API Gateway](apigateway-private-apis.md).

Os endpoints privados de API transmitem todos os nomes de cabeçalho no estado em que se encontram.

# Alterar um tipo de endpoint de API pública ou privada no API Gateway
<a name="apigateway-api-migration"></a>

Alterar o tipo de endpoint da API requer que você atualize a configuração da API. É possível alterar um tipo de API existente usando o console do API Gateway, a AWS CLI ou um SDK da AWS para API Gateway. O tipo de endpoint não poderá ser alterado novamente até que a alteração atual seja concluída, mas a API estará disponível. 

Há suporte para as seguintes alterações nos tipos de endpoints:
+ De “otimizada para borda” para “regional” ou “privada”
+ De “regional” para “otimizada para borda” ou “privada”
+ De “privada” para “regional”

Não é possível alterar uma API privada para uma API otimizada para fronteiras.

Se você está alterando uma API pública do tipo “otimizada para borda” para “regional” ou vice-versa, observe que uma API otimizada para borda pode ter comportamentos diferentes em comparação com uma API regional. Por exemplo, uma API otimizada para fronteiras remove o cabeçalho `Content-MD5`. Qualquer valor de hash MD5 transmitido para o backend pode ser expresso em um parâmetro de string de solicitação ou uma propriedade de corpo. No entanto, a API regional transmite esse cabeçalho, embora ela possa remapear o nome do cabeçalho para outro nome. A compreensão das diferenças ajuda você a decidir como atualizar de uma API otimizada para borda para uma regional ou de uma API regional para uma otimizada para borda. 

**Topics**
+ [Usar o console do API Gateway para alterar um tipo de endpoint de API](#migrate-api-using-console)
+ [Usar a AWS CLI para alterar um tipo de endpoint de API](#migrate-api-using-aws-cli)

## Usar o console do API Gateway para alterar um tipo de endpoint de API
<a name="migrate-api-using-console"></a>

Para alterar o tipo de endpoint de API da sua API, realize um dos seguintes conjuntos de etapas:

**Como converter um endpoint público de regional em otimizado para borda e vice-versa**

1. Inicie uma sessão no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Escolha uma API REST.

1. Escolha **Configurações da API**.

1. Na seção **Detalhes da API**, escolha **Editar**.

1. **Em **Tipo de endpoint da API**, selecione Otimizado para borda** ou **Regional**.

1. Escolha **Salvar alterações**.

1. Reimplante sua API para que as alterações sejam aplicadas.

**Converter um endpoint privado em um endpoint regional**

1. Inicie uma sessão no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Escolha uma API REST.

1. Edite a política de recursos da sua API para remover qualquer menção de VPCs ou endpoints da VPC, a fim de que as chamadas de API de fora ou de dentro da sua VPC sejam bem-sucedidas.

1. Escolha **Configurações da API**.

1. Na seção **Detalhes da API**, escolha **Editar**.

1. Em **Tipo de endpoint da API**, escolha **Regional**.

1. Escolha **Salvar alterações**.

1. Remova a política de recursos da sua API.

1. Reimplante sua API para que as alterações sejam aplicadas.

   Como você está migrando o tipo de endpoint de privado para Regional, o API Gateway altera o tipo de endereço IP para IPv4. Para obter mais informações, consulte [Tipos de endereço IP para APIs REST no API Gateway](api-gateway-ip-address-type.md).

**Converter um endpoint regional em um endpoint privado**

1. Inicie uma sessão no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Escolha uma API REST.

1. Crie uma política de recursos que conceda acesso a VPC ou ao endpoint da VPC. Para obter mais informações, consulte [Etapa 3: Configurar uma política de recursos para uma API privada](apigateway-private-api-create.md#apigateway-private-api-set-up-resource-policy).

1. Escolha **Configurações da API**.

1. Na seção **Detalhes da API**, escolha **Editar**.

1. Em **Tipo de endpoint de API**, escolha **Privado**.

1. (Opcional) Para **IDs de endpoint da VPC**, selecione as IDs de endpoint da VPC que você deseja associar à API privada. 

1. Escolha **Salvar alterações**.

1. Reimplante sua API para que as alterações sejam aplicadas.

   Como você está migrando o tipo de endpoint de Regional para privado, o API Gateway altera o tipo de endereço IP para pilha dupla. Para obter mais informações, consulte [Tipos de endereço IP para APIs REST no API Gateway](api-gateway-ip-address-type.md).

## Usar a AWS CLI para alterar um tipo de endpoint de API
<a name="migrate-api-using-aws-cli"></a>

O comando [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) indicado abaixo atualiza uma API otimizada para borda para uma API regional: 

```
aws apigateway update-rest-api \
    --rest-api-id a1b2c3 \
    --patch-operations op=replace,path=/endpointConfiguration/types/EDGE,value=REGIONAL
```

A resposta bem-sucedida tem um código de status de `200 OK` e uma carga semelhante ao seguinte:

```
{
    "createdDate": "2017-10-16T04:09:31Z",
    "description": "Your first API with Amazon API Gateway. This is a sample API that integrates via HTTP with our demo Pet Store endpoints",
    "endpointConfiguration": {
        "types": "REGIONAL"
    },
    "id": "a1b2c3",
    "name": "PetStore imported as edge-optimized"
}
```

O comando [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) indicado abaixo atualiza uma API regional para uma API otimizada para borda:

```
aws apigateway update-rest-api \
    --rest-api-id a1b2c3 \
    --patch-operations op=replace,path=/endpointConfiguration/types/REGIONAL,value=EDGE
```

Como [put-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-rest-api.html) é usado para atualizar as definições de API, não é aplicável à atualização de um tipo de endpoint de API.