Como posso configurar um endpoint de domínio personalizado para várias APIs do API Gateway atrás de uma distribuição Web do CloudFront?

Data da última atualização: 28/09/2022

Quero usar um endpoint de domínio personalizado do Amazon API Gateway atrás de uma distribuição Web do Amazon CloudFront. Em seguida, quero encaminhar a solicitação de API para várias APIs usando o mapeamento de caminhos base. Como posso fazer isso?

Resolução

Crie o nome de domínio personalizado para sua API REST, API HTTP ou API de WebSocket

Se ainda não tiver feito isso, crie seu nome de domínio personalizado e associe-o a duas APIs diferentes.

Observação: um nome de domínio personalizado para uma API de WebSocket não pode ser mapeado para APIs REST ou APIs HTTP.

Para APIs REST, siga as instruções em Configurar nomes de domínio personalizados para APIs REST.

Para APIs HTTP, siga as instruções em Como configurar nomes de domínio personalizados para APIs HTTP.

Para APIs de WebSocket, siga as instruções em Configurando nomes de domínio personalizados para APIs de WebSocket.

Observação: depois que um nome de domínio personalizado for criado no API Gateway, você deverá criar ou atualizar o registro de recursos do seu provedor de DNS para mapear para seu endpoint de API. Para obter mais informações, consulte Registrar um nome de domínio.

O exemplo neste artigo usa uma configuração regional de nome de domínio personalizado da API REST.

Exemplo de URLs de endpoint de API

https://restapiId1.execute-api.us-west-2.amazonaws.com/example1/home
https://restapiId2.execute-api.us-west-2.amazonaws.com/example2/home

Exemplo de URL de domínio personalizado (sem mapeamento do caminho base)

https://apigw.customdomain.com/example1/home
https://apigw.customdomain.com/example2/home

Criar uma distribuição Web do CloudFront

1.    Abra o console do CloudFront e escolha Create Distribution (Criar distribuição).

2.    Na página Select a delivery method for your content (Selecionar um método de entrega para seu conteúdo), em Web, escolha Started (Iniciado).

3.    Na página Create Distribution (Criar distribuição), para Origin Domain (Domínio de origem), cole o URL do domínio personalizado da sua API, semelhante ao exemplo a seguir:

Exemplo de nome de domínio de origem

https://apigw.customdomain.com

4. Deixe Origin path em branco. Observação: inserir um caminho base incorreto para o caminho de origem ao invocar a distribuição Web do CloudFront pode resultar em um erro. Por exemplo, um erro de solicitação não autorizada que retorna o erro de token de autenticação ausente e um código de resposta 403 proibido.

5.    Para Minimum Origin SSL Protocol (Protocolo SSL de origem mínima), uma boa prática é escolher TLSv1.2. Não escolha SSLv3. O API Gateway não é compatível com o protocolo SSLv3.

6.    Em Protocol (Protocolo), escolha HTTPS Only (Somente HTTPS). Observação: o API Gateway não oferece suporte a endpoints HTTP não criptografados. Para obter mais informações, consulte Perguntas frequentes sobre o Amazon API Gateway.

7.    (Opcional) Para Forward custom headers to your origin (Encaminhar cabeçalhos personalizados para sua origem), escolha Add header (Adicionar cabeçalho) e insira informações em Header name (Nome do cabeçalho) e Value (Valor). Observação: para ver uma lista de cabeçalhos personalizados que o CloudFront não pode adicionar, consulte Cabeçalhos personalizados que o CloudFront não pode adicionar a solicitações de origem.

8.    Escolha Create Distribution (Criar distribuição).

Depois que o CloudFront criar sua distribuição, o valor da coluna Status da sua distribuição mudará de InProgress (Em andamento) para Deployed (Implantada).

Para obter mais informações, consulte Criar uma distribuição.

Testar sua distribuição Web do CloudFront

1.    Abra o console do CloudFront, copie o nome de domínio da sua distribuição Web para a área de transferência, semelhante ao exemplo a seguir:

Exemplo de nome de domínio não personalizado

a222222bcdefg5.cloudfront.net

2.    Siga as instruções para Testar uma distribuição.

Um teste bem-sucedido retorna uma resposta 200 OK. Se você receber um código de erro de servidor 500, a distribuição Web pode não estar implantada. Se você não receber resposta, significa que o registro DNS do CloudFront ainda não foi propagado.

Depois que a distribuição do CloudFront for criada, sua configuração será definida da seguinte maneira:

a222222bcdefg5.cloudfront.net/example1/home --> apigw.customdomain.com/example1/home --> API-1

a222222bcdefg5.cloudfront.net/example2/home --> apigw.customdomain.com/example2/home --> API-2

Agora, você pode fazer uma solicitação para duas APIs de uma única distribuição do CloudFront com seu nome de domínio personalizado do API Gateway.

Para configurar o encaminhamento de cabeçalhos de autorização de entrada para sua distribuição Web do CloudFront, consulte Como faço para configurar o API Gateway com minha própria distribuição do CloudFront?