Implante uma API do Amazon API Gateway em um site interno usando endpoints privados e um Application Load Balancer - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implante uma API do Amazon API Gateway em um site interno usando endpoints privados e um Application Load Balancer

Criado por Saurabh Kothari (AWS)

Ambiente: produção

Tecnologias: aplicativos web e móveis; rede; sem servidor; infraestrutura

Serviços da AWS: Amazon API Gateway; Amazon Route 53; AWS Certificate Manager (ACM)

Resumo

Esse padrão mostra como implantar uma API do Amazon API Gateway em um site interno que pode ser acessado a partir de uma rede on-premises.. Você aprende a criar um nome de domínio personalizado para uma API privada usando uma arquitetura projetada com endpoints privados, um Application Load Balancer, PrivateLink AWS e Amazon Route 53. Essa arquitetura evita as consequências não intencionais do uso de um nome de domínio personalizado e um servidor proxy para ajudar no roteamento baseado em domínio em uma API. Por exemplo, se você implantar um endpoint de nuvem privada virtual (VPC) em uma sub-rede não roteável, sua rede não conseguirá acessar o API Gateway. Uma solução comum é usar um nome de domínio personalizado e depois implantar a API em uma sub-rede roteável, mas isso pode interromper outros sites internos quando a configuração do proxy passar o tráfego (execute-api.{region}.vpce.amazonaws.com) para o AWS Direct Connect. Por fim, esse padrão pode ajudar você a atender aos requisitos organizacionais de uso de uma API privada que não pode ser acessada pela Internet e de um nome de domínio personalizado.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta AWS ativa

  • Um certificado de Indicação do nome do servidor (SNI, Server Name Indication) para o site e a API

  • Uma conexão de um ambiente on-premises com uma conta da AWS que é configurada usando o AWS Direct Connect ou o AWS Site-to-Site VPN

  • Uma zona hospedada privada com um domínio correspondente (por exemplo, domain.com) que é resolvida a partir de uma rede on-premises e encaminha consultas ao DNS para o Route 53

  • Uma sub-rede privada roteável que pode ser acessada a partir de uma rede on-premises

Limitações

Para obter mais informações sobre cotas (anteriormente chamadas de limites) para balanceadores de carga, regras e outros recursos, consulte Cotas para seus Application Load Balancers na documentação do Elastic Load Balancing.

Arquitetura

Pilha de tecnologia

  • Amazon API Gateway

  • Amazon Route 53

  • Application Load Balancer

  • AWS Certificate Manager

  • AWS PrivateLink

Arquitetura de destino

O diagrama a seguir mostra como um Application Load Balancer é implantado em uma VPC que direciona o tráfego da web para um grupo de destino do site ou do API Gateway com base nas regras de receptor do Application Load Balancer. O grupo de destino do API Gateway é uma lista de endereços IP do endpoint da VPC no API Gateway. O API Gateway está configurado para tornar a API privada com sua política de recursos. A política nega todas as chamadas que não sejam de um endpoint da VPC específico. Os nomes de domínio personalizados no gateway da API são atualizados para usar api.domain.com para a API e seu estágio. As regras do Application Load Balancer são adicionadas para rotear o tráfego com base no nome do host.

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um usuário de uma rede on-premises tenta acessar um site interno. A solicitação é enviada para ui.domain.com e api.domain.com. Em seguida, a solicitação é resolvida para o Application Load Balancer interno da sub-rede privada roteável. O SSL é encerrado no Application Load Balancer para ui.domain.com e api.domain.com.

  2. As regras de receptor, configuradas no Application Load Balancer, verificam o cabeçalho do host.

    a. Se o cabeçalho do host para api.domain.com, a solicitação será encaminhada para o grupo de destino do API Gateway. O Application Load Balancer inicia uma nova conexão com o API Gateway pela porta 443.

    b. Se o cabeçalho do host for ui.domain.com, a solicitação será encaminhada para o grupo de destino do site.

  3. Quando a solicitação chega ao API Gateway, o mapeamento de domínio personalizado configurado no API Gateway determina o nome do host e qual API executar.

Automação e escala

As etapas desse padrão podem ser automatizadas usando a AWS CloudFormation ou o AWS Cloud Development Kit (AWS CDK). Para configurar o grupo de destino das chamadas do API Gateway, você precisa usar um recurso personalizado para recuperar o endereço IP do endpoint da VPC. A API chama describe-vpc-endpointse describe-network-interfacesretorna os endereços IP e o grupo de segurança, que podem ser usados para criar o grupo-alvo de endereços IP da API.

Ferramentas

  • O Amazon API Gateway ajuda você a criar, publicar, manter, monitorar e proteger REST, HTTP e WebSocket APIs em qualquer escala.

  • O Amazon Route 53 é um serviço web de DNS altamente disponível e escalável.

  • O AWS Certificate Manager (ACM) lida com a complexidade de criar, armazenar e renovar chaves e certificados SSL/TLS X.509 públicos e privados que protegem seus sites e aplicativos.

  • O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.

  • PrivateLinkA AWS ajuda você a criar conexões unidirecionais e privadas de suas VPCs para serviços fora da VPC.

Épicos

TarefaDescriçãoHabilidades necessárias

Crie um certificado de SNI e importe-o para o ACM.

  1. Crie um certificado de SNI para ui.domain.com e api.domain.com. Para obter mais informações, consulte Escolhendo como CloudFront atende às solicitações HTTPS na CloudFront documentação da Amazon.

  2. Importe certificados de SNI para o AWS Certificate Manager (ACM). Para mais informações, consulte Importar certificados para o AWS Certificate Manager na documentação do ACM.

Administrador de rede
TarefaDescriçãoHabilidades necessárias

Criar um endpoint da VPC de interface do API Gateway

Para criar um endpoint da VPC de interface, siga as instruções em Acessar serviço da AWS usando um endpoint da VPC de interface na documentação da Amazon Virtual Private Cloud (Amazon VPC).

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias

Criar um grupo de destino para seu aplicativo.

Crie um grupo de destino para os recursos de interface do usuário do seu aplicativo.

Administrador de nuvem

Crie um grupo de destino para o endpoint do API Gateway.

  1. Crie um grupo de destino com um tipo de endereço IP e, em seguida, adicione o endereço IP do endpoint da VPC para o endpoint do API Gateway ao grupo de destino.

  2. Configure verificações de integridade para seus grupos de destino com os códigos de sucesso 200 e 403. O 403 é necessário porque a API pode usar autenticação e retornar uma resposta 403.

Administrador de nuvem

Criar um Application Load Balancer

  1. Crie um Application Load Balancer (interno) em uma sub-rede privada roteável.

  2. Adicione o receptor 443 ao Application Load Balancer e escolha o certificado do ACM.

Administrador de nuvem

Cria regras de receptor.

Crie regras de receptor para fazer o seguinte:

  1. Encaminhe o host api.domain.com para o grupo de destino do API Gateway

  2. Encaminhe o host ui.domain.com para o grupo de destino dos recursos de interface do usuário

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias

Criar uma zona hospedada privada

Crie uma zona hospedada privada para domain.com.

Administrador de nuvem

Crie registros de domínio.

Crie registros CNAME para o seguinte:

  • Uma API com o valor definido como o nome DNS do Application Load Balancer

  • Uma IU com o valor definido como o nome DNS do Application Load Balancer

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias

Crie e configure um endpoint de API privada.

  1. Para criar um endpoint de API privado, siga as instruções em Como criar uma API privada no Amazon API Gateway na documentação do API Gateway. 

  2. Configure a política de recursos para permitir chamadas somente para a API a partir do endpoint da VPC. Para obter mais informações, consulte Como controlar o acesso a uma API com as políticas de recursos na documentação do API Gateway.

Desenvolvedor de aplicativos, administrador de nuvem

Criar um nome de domínio personalizado

  1. Crie um nome de domínio personalizado para api.domain.com. Para mais informações, consulte Configurar nomes de domínio personalizados para APIs REST na documentação do API Gateway.

  2. Selecione a API e o estágio criados. Para obter mais informações, consulte Como trabalhar com mapeamentos de API para APIs REST na documentação do API Gateway.

Administrador de nuvem

Recursos relacionados