Ir para o conteúdo

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

4 minuto de leitura
0

Quero usar um nome de domínio personalizado no Amazon API Gateway com o Amazon CloudFront para rotear solicitações para várias APIs e mapear meu caminho base.

Resolução

Crie o nome de domínio personalizado e associe suas APIs

Crie um nome de domínio personalizado para suas APIs no API Gateway. Para mapear várias APIs para o mesmo domínio com caminhos base diferentes, consulte o seguinte:

Depois de criar um nome de domínio personalizado no API Gateway, atualize seu registro DNS para mapear o nome de domínio personalizado para seu endpoint de API. Para atualizar o DNS no Amazon Route 53, consulte Routing traffic to an Amazon API Gateway API by using your domain name (Encaminhar o tráfego para uma API do Amazon API Gateway por meio do nome de domínio).

O exemplo a seguir usa uma configuração de nome de domínio personalizado regional da API REST:

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

Exemplo de mapeamento de caminho base de domínio personalizado:

  • O caminho base /api1 mapeia o estágio stage1 da API REST com o ID restapiId1.
  • O caminho base /api2 mapeia o estágio stage2 da API REST com o ID restapiId2.

Exemplos de URLs de domínio personalizados:

  • https://apigw.customdomain.com/api1/example1/home
  • https://apigw.customdomain.com/api2/example2/home

Crie uma distribuição web do CloudFront

Para criar uma distribuição, conclua as seguintes etapas:

  1. Abra o console do CloudFront.
  2. Clique em Criar distribuição.
  3. No Domínio de origem, insira seu nome de domínio personalizado do API Gateway. Por exemplo, apigw.customdomain.com.
  4. Deixe o Caminho de origem em branco.
    Observação: se o caminho base no caminho de origem estiver incorreto, o CloudFront retornará o erro "403 Forbidden" com o token de autenticação ausente. Para mais informações, consulte How do I troubleshoot API Gateway REST API endpoint 403 "Missing Authentication Token" errors? (Como soluciono erros 403 "Missing Authentication Token" do endpoint da API REST do API Gateway?).
  5. Em Protocolo SSL de origem, escolha TLSv1.2.
  6. Em Política do protocolo de origem, escolha Somente HTTPS.
  7. (Opcional) Para adicionar cabeçalhos personalizados à origem, escolha Adicionar cabeçalhoe insira o Nome de cabeçalho e o Valor.
  8. Para a Política de solicitação de origem, selecione AllViewerExceptHostHeader a fim de encaminhar todos os parâmetros de solicitação.
  9. (Opcional) Para desativar o cache, em Política de cache, escolha CachingDisabled.
  10. Em Política do protocolo de visualizador, escolha Apenas HTTPS ou Redirecionar HTTP para HTTPS, conforme o necessário.
  11. Clique em Criar distribuição.

Depois, o status da distribuição mudará de InProgress para Deployed.

Teste sua distribuição web do CloudFront

Conclua as seguintes etapas:

  1. Abra o console do CloudFront.
  2. Anote o Nome de domínio da distribuição da web. Por exemplo, a222222bcdefg5.cloudfront.net.
  3. Teste sua distribuição.

Um teste bem-sucedido retorna uma resposta HTTP 200 OK. A propagação levará até 24 horas. Se a solicitação não retornar uma resposta, o registro DNS do CloudFront ainda estará em andamento. Se a distribuição não tiver sido implantada, você poderá receber um erro HTTP 5xx. Outros erros HTTP 4xx podem ocorrer se a propagação do DNS estiver incompleta.

Depois de criar uma distribuição do CloudFront, você pode solicitar duas APIs de uma única distribuição do CloudFront e seu nome de domínio personalizado do API Gateway.

Para encaminhar cabeçalhos de autorização de entrada à distribuição web do CloudFront, consulte How do I set up API Gateway with my own CloudFront distribution? (Como faço para configurar o API Gateway com minha própria distribuição do CloudFront?).

Informações relacionadas

API endpoint types for REST APIs in API Gateway (Tipos de endpoint de API para APIs REST no API Gateway)