

# Tutorial: Crie uma API REST com uma integração da AWS
<a name="getting-started-aws-proxy"></a>

 Os tópicos [Tutorial: Crie uma API REST com uma integração de proxy do Lambda](api-gateway-create-api-as-simple-proxy-for-lambda.md) e [Tutorial: Crie uma API REST com uma integração de não proxy do Lambda](getting-started-lambda-non-proxy-integration.md) descrevem como criar uma API do API Gateway para expor a função do Lambda integrada. Além disso, é possível criar uma API do API Gateway para expor outros serviços da AWS, como Amazon SNS, Amazon S3, Amazon Kinesis e até mesmo o AWS Lambda. Isso é possível através da integração da `AWS`. A integração do Lambda ou a integração de proxy do Lambda é um caso especial, em que a invocação da função do Lambda é exposta por meio da API do API Gateway. 

 Todos os serviços da AWS são compatíveis com APIs dedicadas para exposição de seus recursos. No entanto, os protocolos de aplicativos ou interfaces de programação provavelmente diferem de serviço para serviço. Uma API do API Gateway com integração da `AWS` tem a vantagem de fornecer um protocolo de aplicação consistente para que seu cliente acesse diferentes serviços da AWS. 

 Nesta demonstração, criamos uma API para expor o Amazon SNS. Para obter mais exemplos de integração de uma API a outros serviços da AWS, consulte [Tutoriais e workshops do Amazon API Gateway](api-gateway-tutorials.md). 

 Diferentemente da integração de proxy do Lambda não há integração de proxy correspondente para outros serviços da AWS. Portanto, um método de API é integrado a uma única ação da AWS. Para obter mais flexibilidade, semelhante à integração de proxy, é possível configurar uma integração de proxy do Lambda. A função do Lambda então analisa e processa as solicitações para outras ações da AWS. 

 O API Gateway não tenta novamente quando o endpoint atinge o tempo limite. O autor da chamada da API deve implementar lógica de novas tentativas para lidar com tempos limite do endpoint. 

 Este passo a passo se baseia nas instruções e nos conceitos em [Tutorial: Crie uma API REST com uma integração de não proxy do Lambda](getting-started-lambda-non-proxy-integration.md). Se você ainda não concluiu esse passo-a-passo, sugerimos que faça isso primeiro. 



**Topics**
+ [Pré-requisitos](#getting-started-aws-proxy-prerequisites)
+ [Etapa 1: Criar o perfil de execução do proxy de serviço da AWS](#getting-started-aws-proxy-add-roles)
+ [Etapa 2: Criar o recurso](#getting-started-aws-proxy-add-resources)
+ [Etapa 3: Criar o método GET](#getting-started-aws-proxy-add-methods)
+ [Etapa 4: Especificar configurações de método e testar o método](#getting-started-aws-proxy-set-methods)
+ [Etapa 5: implantar a API](#getting-started-aws-proxy-deploy)
+ [Etapa 6: testar a API](#getting-started-aws-proxy-test)
+ [Etapa 7: Limpeza](#getting-started-aws-proxy-clean-up)

## Pré-requisitos
<a name="getting-started-aws-proxy-prerequisites"></a>

Antes de iniciar esta demonstração, você deve fazer o seguinte:

1. Siga as etapas em [Configurar para usar o API Gateway](setting-up.md).

1.  Criar uma nova API chamada `MyDemoAPI`. Para obter mais informações, consulte [Tutorial: Crie uma API REST com uma integração de não proxy de HTTP](api-gateway-create-api-step-by-step.md). 

1. Implante a API pelo menos uma vez em um estágio denominado `test`. Para obter mais informações, consulte [Implantar a API](getting-started-lambda-non-proxy-integration.md#getting-started-deploy-api) em [Escolher um tutorial de integração do AWS Lambda](getting-started-with-lambda-integration.md).

1. Conclua as demais etapas em [Escolher um tutorial de integração do AWS Lambda](getting-started-with-lambda-integration.md).

1. Crie pelo menos um tópico no Amazon Simple Notification Service (Amazon SNS). Você usará a API implantada para obter uma lista de tópicos no Amazon SNS que estão associados à sua conta da AWS. Para saber como criar um tópico no Amazon SNS, consulte [Criar um tópico](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html). (Não é necessário copiar o ARN do tópico mencionado na etapa 5.)

## Etapa 1: Criar o perfil de execução do proxy de serviço da AWS
<a name="getting-started-aws-proxy-add-roles"></a>

 Para que a API invoque ações do Amazon SNS, é necessário que as políticas do IAM apropriadas sejam associadas a um perfil do IAM. Neste exercício, você cria um perfil do IAM.

**Como criar o perfil de execução do proxy de serviço da AWS**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Escolha **Perfis**.

1. Selecione **Criar perfil**.

1.  Selecione **Serviço da AWS** em **Selecionar tipo de entidade confiável**, selecione **API Gateway** e **Permite que o API Gateway envie logs ao CloudWatch Logs**.

1.  Selecione **Próximo** e, depois, **Próximo**.

1. Em **Role name (Nome da função)**, digite **APIGatewaySNSProxyPolicy** e escolha **Create role (Criar função)**.

1. Na lista **Roles (Funções)**, escolha a função que você acaba de criar. Talvez seja necessário rolar a página ou usar a barra de pesquisa para encontrar o perfil.

1. Para a função escolhida, selecione a guia **Adicionar permissões**.

1. Selecione **Anexar políticas** na lista suspensa.

1. Na barra de pesquisa, insira **AmazonSNSReadOnlyAccess** e escolha **Adicionar permissões**. 
**nota**  
Este tutorial usa uma política gerenciada em prol da simplicidade. Como prática recomendada, você deve criar sua própria política do IAM para conceder as permissões mínimas necessárias. 

1. Anote o **ARN do perfil** recém-criado, você o usará posteriormente.

## Etapa 2: Criar o recurso
<a name="getting-started-aws-proxy-add-resources"></a>

Nesta etapa, crie um recurso que permite que o proxy de serviço da AWS interaja com o serviço da AWS.

**Para criar o recurso**

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 o recurso raiz, **/**, representado por uma única barra (**/**) e, depois, selecione **Criar recurso**.

1. Mantenha **Recurso proxy** desativado.

1. Mantenha **Caminho do recurso** como `/`.

1. Em **Resource Name (Nome do recurso)**, insira **mydemoawsproxy**.

1. Mantenha **CORS (Compartilhamento de recursos de origem cruzada)** desativado.

1. Selecione **Criar recurso**.

## Etapa 3: Criar o método GET
<a name="getting-started-aws-proxy-add-methods"></a>

Nesta etapa, crie um método GET que permite que o proxy de serviço da AWS interaja com o serviço da AWS.

**Como criar o método `GET`**

1. Selecione o recurso **/mydemoawsproxy** e **Criar método**.

1. Em tipo de método, selecione **GET**.

1. Em **Tipo de integração**, selecione **AWS service (Serviço da AWS)**.

1. Em **Região da AWS**, selecione a Região da AWS onde você criou o tópico do Amazon SNS.

1. Para **AWS service (Serviço da AWS)**, selecione **Amazon SNS**.

1. Mantenha o **subdomínio da AWS** em branco.

1. Em **Método HTTP**, selecione **GET**.

1. Em **Tipo de ação**, selecione **Usar nome da ação**.

1. Em **Nome da ação**, insira **ListTopics**.

1. Em **Perfil de execução**, digite o ARN do perfil para **APIGatewaySNSProxyPolicy**.

1. Escolha **Criar método**.

## Etapa 4: Especificar configurações de método e testar o método
<a name="getting-started-aws-proxy-set-methods"></a>

Agora, é possível testar o método `GET` para verificar se ele foi configurado corretamente para listar os tópicos do Amazon SNS.

**Como testar o método `GET`**

1. Selecione a guia **Testar**. Talvez seja necessário selecionar o botão de seta para a direita para mostrar a guia.

1. Escolha **Testar**.

   O resultado exibe uma resposta semelhante ao seguinte:

   ```
   {
     "ListTopicsResponse": {
       "ListTopicsResult": {
         "NextToken": null,
         "Topics": [
           {
             "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"
           },
           {
             "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"
           },
           ...
           {
             "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N"
           }
         ]
       },
       "ResponseMetadata": {
         "RequestId": "abc1de23-45fa-6789-b0c1-d2e345fa6b78"
       }
     }
   }
   ```

## Etapa 5: implantar a API
<a name="getting-started-aws-proxy-deploy"></a>

Nesta etapa, você implantará a API para poder chamá-la de fora do console do API Gateway.

**Para implantar a API**

1. Escolha **Implantar API**.

1. Em **Estágio**, selecione **Novo estágio**.

1. Em **Stage name (Nome do estágio)**, insira **test**.

1. (Opcional) Em **Description (Descrição)**, insira uma descrição.

1. Escolha **Deploy** (Implantar).

## Etapa 6: testar a API
<a name="getting-started-aws-proxy-test"></a>

Nesta etapa, você sairá do console do API Gateway e usará seu proxy de serviço da AWS para interagir com o serviço Amazon SNS.

1. No painel de navegação principal, selecione **Estágio**.

1. Em **Detalhes do estágio**, escolha o ícone de cópia para copiar o URL de invocação da API.

   A aparência deve ser semelhante a esta:

   ```
   https://my-api-id.execute-api.region-id.amazonaws.com/test
   ```

1. Cole o URL na caixa de endereço de uma nova guia do navegador.

1. Acrescente `/mydemoawsproxy` para que o URL tenha a seguinte aparência:

   ```
   https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoawsproxy
   ```

   Navegue até a URL. Devem ser exibidas informações semelhante às seguintes:

   ```
   {"ListTopicsResponse":{"ListTopicsResult":{"NextToken": null,"Topics":[{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"},{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"},...{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N}]},"ResponseMetadata":{"RequestId":"abc1de23-45fa-6789-b0c1-d2e345fa6b78}}}
   ```

## Etapa 7: Limpeza
<a name="getting-started-aws-proxy-clean-up"></a>

É possível excluir os recursos da IAM necessários que o proxy de serviço da AWS precisa para trabalhar.

**Atenção**  
Se você excluir um recurso do IAM do qual o proxy de serviço da AWS depende, esse proxy de serviço da AWS e qualquer API que depender dele deixarão de funcionar. A exclusão de um recurso do IAM não pode ser desfeita. Se quiser usar o recurso do IAM novamente, será necessário recriá-lo.

**Como excluir os recursos do IAM associados**

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

1. Na área **Details** (Detalhes), escolha **Roles** (Funções).

1. Selecione **APIGatewayAWSProxyExecRole** e, depois, escolha **Role Actions (Ações da função)**, **Delete Role (Excluir função)**. Quando solicitado, escolha **Yes, Delete** (Sim, excluir).

1. Na área **Details** (Detalhes), escolha **Policies** (Políticas).

1. Selecione **APIGatewayAWSProxyExecPolicy** e, depois, escolha **Policy Actions (Ações da política)**, **Delete (Excluir)**. Quando solicitado, escolha **Delete** (Excluir).

 Você chegou ao final deste passo a passo. Para discussões mais detalhadas sobre como criar uma API como um proxy de serviço da AWS, consulte [Tutorial: Crie uma API REST como um proxy do Amazon S3](integrating-api-with-aws-services-s3.md), [Tutorial: Criar uma API REST de calculadora com duas integrações de serviços da AWS e uma integração sem proxy do Lambda](integrating-api-with-aws-services-lambda.md), ou [Tutorial: Criar uma API REST como um proxy do Amazon Kinesis](integrating-api-with-aws-services-kinesis.md). 