

# Tutorial: Crie uma API HTTP com uma integração privada a um serviço do Amazon ECS
<a name="http-api-private-integration"></a>

Neste tutorial, você cria uma API sem servidor que se conecta a um serviço do Amazon ECS executado em uma Amazon VPC. Clientes fora da sua Amazon VPC podem usar a API para acessar seu serviço do Amazon ECS. 

Este tutorial leva aproximadamente uma hora para ser concluído. Primeiro, você usa um modelo do CloudFormation para criar um serviço da Amazon VPC e do Amazon ECS. Em seguida, você usa o console do API Gateway para criar um link da VPC. O link da VPC permite que o API Gateway acesse o serviço do Amazon ECS executado em sua Amazon VPC. Em seguida, você cria uma API HTTP que usa o link VPC para se conectar ao seu serviço do Amazon ECS. Por fim, você testa a sua API.

Quando você invoca sua API HTTP, o API Gateway encaminha a solicitação para o serviço do Amazon ECS por meio do link da VPC e, em seguida, retorna a resposta do serviço.

![\[Visão geral da API HTTP que você cria neste tutorial.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/private-integration.png)


Para concluir esse tutorial, você precisa de uma conta da AWS e de um usuário do AWS Identity and Access Management com acesso ao console. Para obter mais informações, consulte [Configurar para usar o API Gateway](setting-up.md).

Neste tutorial, você usará o Console de gerenciamento da AWS. Para obter um modelo do CloudFormation que cria essa API e todos os recursos relacionados, consulte [template.yaml](samples/private-integration-full-template.zip).

**Topics**
+ [Etapa 1: Crie um serviço do Amazon ECS](#http-api-private-integration-create-ecs-service)
+ [Etapa 2: Crie um link da VPC](#http-api-private-integration-vpc-link)
+ [Etapa 3: Crie uma API HTTP](#http-api-private-integration-create-api)
+ [Etapa 4: Crie uma rota](#http-api-private-integration-create-routes)
+ [Etapa 5: Crie uma integração](#http-api-private-integration-create-integration)
+ [Etapa 6: Teste a sua API](#http-api-private-integration-invoke-api)
+ [Etapa 7: limpar](#http-api-private-integration-cleanup)
+ [Próximas etapas: Automatize com CloudFormation](#http-api-private-integration-next-steps)

## Etapa 1: Crie um serviço do Amazon ECS
<a name="http-api-private-integration-create-ecs-service"></a>

O Amazon ECS é um serviço de gerenciamento de contêineres que facilita a execução, a interrupção e o gerenciamento de contêineres do Docker em um cluster. Neste tutorial, você executa seu cluster em uma infraestrutura sem servidor gerenciada pelo Amazon ECS.

Baixe e descompacte [este modelo do CloudFormation](samples/private-integration-cfn.zip) que cria todas as dependências do serviço, incluindo uma Amazon VPC. Use o modelo para criar um serviço do Amazon ECS que usa um Application Load Balancer.

**Como criar uma pilha do CloudFormation**

1. Abra o console do CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Selecione **Create stack (Criar pilha)** e **With new resources (standard) (Com novos recursos (padrão))**.

1. Em **Specify template (Especificar modelo)**, escolha **Upload a template file (Fazer upload de um arquivo de modelo)**.

1. Selecione o modelo que você baixou.

1. Escolha **Next (Próximo)**. 

1. Em **Nome da pilha**, insira **http-api-private-integrations-tutorial** e escolha **Avançar**.

1. Para **Configurar opções de pilha**, escolha **Avançar**.

1. Para **Capabilities** (Recursos), reconheça que CloudFormation pode criar recursos do IAM em sua conta.

1. Escolha **Próximo** e, depois, **Enviar**.

CloudFormation provisiona o serviço ECS, que pode levar alguns minutos. Quando o status da sua pilha do CloudFormation for **CREATE\$1COMPLETE**, você estará pronto para passar para a próxima etapa.

## Etapa 2: Crie um link da VPC
<a name="http-api-private-integration-vpc-link"></a>

Um link da VPC permite que o API Gateway acesse recursos privados em uma Amazon VPC. Você usa um link da VPC para permitir que os clientes acessem seu serviço do Amazon ECS por meio de sua API HTTP.

**Para criar um link da VPC**

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

1. No painel de navegação principal, escolha **Links da VPC** e selecione **Criar**.

   Escolha o ícone do menu para se for necessário abrir o painel de navegação principal.

1. Em **Escolher uma versão de link VPC**, selecione **Link da VPC para APIs HTTP**.

1. Em **Name (Nome)**, insira **private-integrations-tutorial**.

1. Em **VPC**, escolha a VPC criada na etapa 1. O nome deve começar com **PrivateIntegrationsStack**.

1. Para **Sub-redes**, selecione as duas sub-redes privadas em sua VPC. Os nomes delas terminam com `PrivateSubnet`.

1. Em **Grupos de segurança**, selecione o ID do grupo que começa com `private-integrations-tutorial` e tem a descrição de `PrivateIntegrationsStack/PrivateIntegrationsTutorialService/Service/SecurityGroup`.

1. Escolha **Criar**.

Depois de criar seu link VPC, o API Gateway provisiona as interfaces de rede elásticas para acessar sua VPC. O processo pode levar alguns minutos. Enquanto isso, você pode criar sua API.

## Etapa 3: Crie uma API HTTP
<a name="http-api-private-integration-create-api"></a>

A API HTTP fornece um endpoint HTTP para o seu serviço do Amazon ECS. Nesta etapa, você cria uma API vazia. Nas etapas 4 e 5, você configura uma rota e uma integração para conectar sua API e seu serviço do Amazon ECS.



**Para criar uma API HTTP**

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 **Create API** (Criar API) e, em seguida, em **API HTTP** (API HTTP), escolha **Build** (Criar).

1. Em **API name (Nome da API)**, insira **http-private-integrations-tutorial**.

1. Em **Tipo de endereço IP**, selecione **IPv4**.

1. Escolha **Next (Próximo)**.

1. Em **Configure routes** (Configurar rotas), escolha **Next** (Próximo) para ignorar a criação da rota. Você cria rotas mais tarde.

1. Revise o estágio criado pelo API Gateway para você. O API Gateway cria um estágio `$default` com implantações automáticas ativadas, que é a melhor escolha para este tutorial. Escolha **Next (Próximo)**.

1. Escolha **Criar**.

## Etapa 4: Crie uma rota
<a name="http-api-private-integration-create-routes"></a>

As rotas são uma forma de enviar as solicitações de API recebidas a recursos de backend. As rotas consistem em duas partes: um método HTTP e um caminho de recurso, por exemplo, `GET /items`. Para esta API de exemplo, criamos uma rota.

**Para criar uma rota**

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

1. Selecione a API.

1. Selecione **Routes (Rotas)**.

1. Escolha **Criar**.

1. Em **Método**, escolha **ANY**.

1. Para o caminho, insira **/\$1proxy\$1\$1**. O `{proxy+}` no final do caminho é uma variável de caminho ganancioso. O API Gateway envia todas as solicitações para sua API para essa rota.

1. Escolha **Criar**.

## Etapa 5: Crie uma integração
<a name="http-api-private-integration-create-integration"></a>

Você cria uma integração para conectar uma rota aos recursos de backend.

**Para criar uma integração**

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

1. Selecione a API.

1. Escolha **Integrations** (Integrações).

1. Escolha **Manage integrations** (Gerenciar integrações) e, em seguida, escolha **Create** (Criar).

1. Em **Anexar esta integração a uma rota**, selecione a rota **ANY/\$1proxy\$1\$1** que você criou anteriormente.

1. Em **Tipo de integração**, escolha **Recurso privado**.

1. Em **Detalhes de integração**, escolha **Selecionar manualmente**.

1. Em **Serviço de destino**, escolha **ALB/NLB**.

1. Em **Load balancer** (Balanceador de carga), escolha o balanceador de carga criado com o modelo do CloudFormation na Etapa 1. Seu nome deve começar com **http-Priva**.

1. Em **Ouvinte**, escolha **HTTP 80**.

1. Em **Link da VPC**, escolha o link da VPC que você criou na Etapa 2. O nome deve ser `private-integrations-tutorial`.

1. Escolha **Criar**.

Para verificar se sua rota e integração estão configuradas corretamente, selecione **Anexar integrações às rotas**. O console mostra que você tem uma rota `ANY /{proxy+}` com uma integração a um Load Balancer da VPC.

![\[O console mostra que você tem uma rota /{proxy+} com uma integração ao Load Balancer em uma VPC.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/private-integration-tutorial-route.png)


Agora você está pronto para testar sua API.

## Etapa 6: Teste a sua API
<a name="http-api-private-integration-invoke-api"></a>

Em seguida, você testa sua API para se certificar de que ela está funcionando. Para simplificar, use um navegador da Web para invocar sua API.

**Para testar sua API**

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

1. Selecione a API.

1. Observe o URL de invocação da sua API.  
![\[Depois de criar a API, o console mostra o URL de chamada da API.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/getting-started-invoke-url.png)

1. Em um navegador da Web, acesse o URL de invocação da sua API.

   O URL deve ser semelhante a `https://abcdef123.execute-api.us-east-2.amazonaws.com`.

   Seu navegador envia uma solicitação `GET` à API.

1. Verifique se a resposta da sua API é uma mensagem de boas-vindas que informa que seu aplicativo está sendo executado no Amazon ECS.

   Se você vir a mensagem de boas-vindas, você criou com sucesso um serviço do Amazon ECS executado em uma Amazon VPC e usou uma API HTTP do API Gateway com um link VPC para acessar o serviço do Amazon ECS.

## Etapa 7: limpar
<a name="http-api-private-integration-cleanup"></a>

Para evitar custos desnecessários, exclua os recursos que você criou como parte desse tutorial. As etapas a seguir excluem o link da VPC, a pilha do CloudFormation e a API HTTP.

**Para excluir uma API HTTP**

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

1. Na página **APIs** , selecione uma API. Escolha **Ações**, escolha **Excluir** e, em seguida, confirme sua escolha.

**Para excluir um link da VPC**

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 **Link da VPC**.

1. Selecione seu link da VPC, escolha **Excluir**e confirme sua escolha.

**Para excluir uma pilha do CloudFormation**

1. Abra o console do CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Selecione sua pilha do CloudFormation.

1. Escolha **Excluir** e, em seguida, confirme sua escolha.

## Próximas etapas: Automatize com CloudFormation
<a name="http-api-private-integration-next-steps"></a>

Você pode automatizar a criação e a limpeza de todos os recursos da AWS envolvidos neste tutorial. Para obter um modelo do CloudFormation de exemplo completo, consulte [template.yaml](samples/private-integration-full-template.zip).