

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
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer"></a>

*Saurabh Kothari, Amazon Web Services*

## Resumo
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-summary"></a>

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
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-prereqs"></a>

**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 local com uma conta da AWS que é configurada usando o AWS Direct Connect ou o AWS VPN Site-to-Site
+ Uma [zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) 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](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) na documentação do Elastic Load Balancing.

## Arquitetura
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-architecture"></a>

**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.

![Arquitetura que emprega regras de receptor do Application Load Balancer para direcionar o tráfego da web.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/83145062-4535-4ad0-8947-4ea8950cd174/images/12715186-26ea-4123-b9ef-e3105a934ff3.png)


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.

1. 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.

1. 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-endpoints](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-vpc-endpoints.html)e [describe-network-interfaces](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-network-interfaces.html)retorna 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
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-tools"></a>
+ [O Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) ajuda você a criar, publicar, manter, monitorar e proteger REST, HTTP e WebSocket APIs em qualquer escala.
+ O [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) é um serviço web de DNS altamente disponível e escalável.
+ [O AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) ajuda você a criar, armazenar e renovar certificados e chaves SSL/TLS X.509 públicos e privados que protegem seus sites e aplicativos da AWS.
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+  PrivateLinkA [AWS](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) ajuda você a criar conexões unidirecionais e privadas de seus serviços VPCs para fora da VPC.

## Épicos
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-epics"></a>

### Como criar um certificado de SNI
<a name="create-an-sni-certificate"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um certificado de SNI e importe-o para o ACM. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de rede | 

### Implante um endpoint da VPC em uma sub-rede privada não roteável
<a name="deploy-a-vpc-endpoint-in-a-non-routable-private-subnet"></a>


| Tarefa | Description | Habilidades 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](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) na documentação da Amazon Virtual Private Cloud (Amazon VPC). | Administrador de nuvem | 

### Configure o Application Load Balancer.
<a name="configure-the-application-load-balancer"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um grupo de destino para seu aplicativo. | [Crie um grupo de destino](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html) 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. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 
| Criar um Application Load Balancer. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 
| Cria regras de receptor. | Crie [regras de receptor](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules) para fazer o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 

### Configure o Route 53
<a name="configure-route-53"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar uma zona hospedada privada | [Crie uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) para domain.com. | Administrador de nuvem | 
| Crie registros de domínio. | [Crie registros CNAME](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) para o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 

### Criar um endpoint de API privado no API Gateway
<a name="create-a-private-api-endpoint-in-api-gateway"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e configure um endpoint de API privada. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Desenvolvedor de aplicativos, administrador de nuvem | 
| Criar um nome de domínio personalizado | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 

## Recursos relacionados
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-resources"></a>
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/)
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)
+ [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/)