

# Monitorar APIs REST no API Gateway
<a name="rest-api-monitor"></a>

Nesta seção, você aprenderá a monitorar sua API usando métricas do CloudWatch, CloudWatch Logs, Firehose e AWS X-Ray. Combinando os logs de execução e as métricas do CloudWatch, você pode registrar erros e rastreamentos de execução em log e monitorar a performance da API. Você também pode registrar em log chamadas de API no Firehose. Você também pode usar o AWS X-Ray para rastrear chamadas por meio dos serviços downstream que compõem a API.

**nota**  
O API Gateway pode não gerar logs e métricas nos seguintes casos:  
Erros 413 de entidade de solicitação muito grande
Erros 431 de campos de cabeçalho de solicitação muito grandes
Erros 429 de muitas solicitações excessivos
Erros da série 400 de solicitações enviadas a um domínio personalizado que não tem mapeamento de API
Erros da série 500 causados por falhas internas
O API Gateway não gerará logs e métricas ao testar um método de API REST. As entradas do CloudWatch são simuladas. Para obter mais informações, consulte [Use o console do API Gateway para testar um método de API REST](how-to-test-method.md).

**Topics**
+ [Monitorar a execução da API REST com métricas do Amazon CloudWatch](monitoring-cloudwatch.md)
+ [Configurar o registro em log do CloudWatch para APIs REST no API Gateway](set-up-logging.md)
+ [Registrar em log chamadas de API REST para o Amazon Data Firehose no API Gateway](apigateway-logging-to-kinesis.md)
+ [Variáveis para registro em log de acesso no API Gateway](api-gateway-variables-for-access-logging.md)
+ [Rastrear solicitações de usuário para APIs REST usando o X-Ray no API Gateway](apigateway-xray.md)

# Monitorar a execução da API REST com métricas do Amazon CloudWatch
<a name="monitoring-cloudwatch"></a>

É possível monitorar a execução da API usando o CloudWatch, que coleta e processa dados brutos do API Gateway em métricas legíveis, quase em tempo real. Essas estatísticas são registradas para um período de 15 meses, de forma que você possa acessar informações históricas e ganhar uma perspectiva melhor sobre como seu serviço ou aplicativo web está se saindo. Por padrão, os dados de métricas do API Gateway são enviados automaticamente para o CloudWatch em períodos de um minuto. Para obter mais informações, consulte [O que é o Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) no *Guia do usuário do Amazon CloudWatch*.

As métricas informadas pelo API Gateway fornecem informações que podem ser analisadas de diferentes maneiras. A lista a seguir mostra alguns usos comuns de métricas que são sugestões para começar a usar:
+ Monitore as métricas de **IntegrationLatency** para medir a capacidade de resposta do backend.
+ Monitore as métricas de **Latency** para medir a capacidade de resposta geral das suas chamadas de API.
+ Monitor as métricas de **CacheHitCount** e **CacheMissCount** para otimizar capacidades de cache de modo a alcançar o desempenho desejado.

**Topics**
+ [Dimensões e métricas do Amazon API Gateway](api-gateway-metrics-and-dimensions.md)
+ [Exibir métricas do CloudWatch com o painel de API no API Gateway](how-to-api-dashboard.md)
+ [Exibir métricas do API Gateway no console do CloudWatch](metrics_dimensions_view_in_cloud_watch.md)
+ [Exibir eventos de log do API Gateway no console do CloudWatch](view-cloudwatch-log-events-in-cloudwatch-console.md)
+ [Ferramentas de monitoramento na AWS para o API Gateway](monitoring_automated_manual.md)

# Dimensões e métricas do Amazon API Gateway
<a name="api-gateway-metrics-and-dimensions"></a>

As métricas e dimensões que o API Gateway envia para o Amazon CloudWatch estão listadas abaixo. Para obter mais informações, consulte [Monitorar a execução da API REST com métricas do Amazon CloudWatch](monitoring-cloudwatch.md). 

## Métricas do API Gateway
<a name="api-gateway-metrics"></a>

O Amazon API Gateway envia dados de métricas para o CloudWatch a cada minuto.

O namespace `AWS/ApiGateway` inclui as métricas a seguir.


| Métrica | Descrição | 
| --- | --- | 
|  4XXError |  O número de erros no lado do cliente capturados em um determinado período. O API Gateway considera os códigos de status de resposta do gateway modificados como erros 4XXError. A estatística `Sum` representa essa métrica, ou seja, a contagem total de erros 4XXError no período especificado. A estatística `Average` representa a taxa de erros 4XXError, ou seja, a contagem total de erros 4XXError dividida pelo número total de solicitações durante o período. O denominador corresponde à métrica Count (abaixo). Unit: Count  | 
|  5XXError  |  O número de erros do servidor capturados em um período determinado. A estatística `Sum` representa essa métrica, ou seja, a contagem total de erros 5XXError no período especificado. A estatística `Average` representa a taxa de erros 5XXError, ou seja, a contagem total de erros 5XXError dividida pelo número total de solicitações durante o período. O denominador corresponde à métrica Count (abaixo). Unit: Count  | 
|  CacheHitCount  |  O número de solicitações atendidas pelo cache da API em um determinado período. A estatística `Sum` representa essa métrica, ou seja, a contagem total de acertos de cache no período especificado. A estatística `Average` representa a taxa de acertos de cache, a saber, a contagem total de acertos de cache dividida pelo número total de solicitações durante o período. O denominador corresponde à métrica Count (abaixo). Unit: Count  | 
|  CacheMissCount  |  O número de solicitações atendidas pelo backend em um determinado período quando o armazenamento em cache da API está habilitado. A estatística `Sum` representa essa métrica, ou seja, a contagem total de erros de cache no período especificado. A estatística `Average` representa a taxa de erros de cache, ou seja, a contagem total de erros de cache dividida pelo número total de solicitações durante o período. O denominador corresponde à métrica Count (abaixo). Unit: Count  | 
|  Count  |  O número total de solicitações de API em um determinado período. A estatística `SampleCount` representa essa métrica. Unit: Count  | 
|  IntegrationLatency  |  O tempo que o API Gateway leva para receber uma resposta do backend depois de retransmitir uma solicitação para o backend. Unit: Millisecond  | 
|  Latency  |  O tempo que o API Gateway leva para devolver uma resposta para um cliente depois de receber uma solicitação do cliente. A latência inclui a latência de integração e outras despesas gerais do API Gateway. Unit: Millisecond  | 

## Dimensões para métricas
<a name="api-gateway-metricdimensions"></a>

É possível usar as dimensões na tabela a seguir para filtrar métricas do API Gateway.

**nota**  
O API Gateway remove caracteres não ASCII da dimensão ApiName antes de enviar métricas para o CloudWatch. Se o APIName contiver caracteres ASCII, o API ID será usado como o ApiName.


| Dimensão | Descrição | 
| --- | --- | 
|  ApiName  |  Filtra as métricas do API Gateway para a API REST com o nome de API especificado.  | 
|  ApiName, Method, Resource, Stage  |  Filtra as métricas do API Gateway para o método de API com o nome, o estágio, o recurso e o método de API especificados. O API Gateway não enviará essas métricas a menos que você tenha habilitado explicitamente métricas detalhadas do CloudWatch. No console, selecione um estágio e, em **Logs e rastreamento**, selecione **Editar**. Selecione **Métricas detalhadas** e, depois, **Salvar alterações**. Como alternativa, você pode chamar o comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) da AWS CLI para atualizar a propriedade `metricsEnabled` para `true`. Habilitar essas métricas incorrerá em cobranças adicionais na conta. Para obter informações de definição de preço, consulte [Definição de preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).  | 
|  ApiName, Stage  |  Filtra as métricas do API Gateway para o recurso de estágio de API com o nome e o estágio de API especificados.  | 

# Exibir métricas do CloudWatch com o painel de API no API Gateway
<a name="how-to-api-dashboard"></a>

Você pode usar o painel de API no console do API Gateway para exibir as métricas do CloudWatch da API implantada no API Gateway. Elas são apresentadas como um resumo da atividade da API ao longo do tempo. 

**Topics**
+ [Pré-requisitos](#how-to-api-dashboard-prerequisites)
+ [Examinar atividades da API no painel](#how-to-api-dashboard-console)

## Pré-requisitos
<a name="how-to-api-dashboard-prerequisites"></a>

1. Você deve ter uma API criada no API Gateway. Siga as instruções em [Desenvolver APIs REST no API Gateway](rest-api-develop.md).

1. Você deve ter a API implantada pelo menos uma vez. Siga as instruções em [Implantar APIs REST no API Gateway](how-to-deploy-api.md).

## Examinar atividades da API no painel
<a name="how-to-api-dashboard-console"></a>

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 uma API.

1. No painel de navegação principal, escolha **Painel**.

1. Em **Estágio**, escolha o estágio desejado.

1. Escolha **Intervalo de datas** para especificar um intervalo de datas.

1. Se necessário, atualize e visualize as métricas individuais exibidas em grafos separados, chamados **Chamadas de API**, **Latência**, **Latência de integração**, **Latência**, **Erro 4xx** e **Erro 5xx**.
**dica**  
Para examinar métricas do CloudWatch em nível de método, verifique se o CloudWatch Logs está habilitado em nível de método. Para obter mais informações sobre como configurar o registro em log em nível de método, consulte [Substituir configurações em nível de estágio](set-up-stages.md#how-to-method-override).

# Exibir métricas do API Gateway no console do CloudWatch
<a name="metrics_dimensions_view_in_cloud_watch"></a>

As métricas são agrupadas primeiro pelo namespace do serviço e, em seguida, por várias combinações de dimensão dentro de cada namespace. Para visualizar as métricas em nível de método da API, ative as métricas detalhadas. Para obter mais informações, consulte [Modifique as configurações de armazenamento.](set-up-stages.md#how-to-stage-settings).

**Como exibir métricas do API Gateway usando o console do CloudWatch**

1. Abra o console do CloudWatch, em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Se necessário, altere a Região da AWS. Na barra de navegação, selecione a região em que os seus recursos da AWS residem.

1. No painel de navegação, selecione **Métricas**.

1. Na guia **All metrics (Todas as métricas)**, escolha **API Gateway**. 

1.  Para visualizar as métricas por estágio, escolha o painel **By Stage (Por estágio)**. E selecione as APIs e os nomes de métrica. 

1. Para visualizar as métricas por API específica, escolha o painel **By Api Name (Por nome de Api)**. E selecione as APIs e os nomes de métrica.

**Para visualizar métricas usando a CLI da AWS**

1. Use o comando [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) indicado abaixo para listar as métricas:

   ```
   aws cloudwatch list-metrics --namespace "AWS/ApiGateway"
   ```

   Depois de criar uma métrica, aguarde até 15 minutos para que ela apareça. Para ver as estatísticas métricas com antecedência, use [get-metric-data](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/update-domain-name.html) ou [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/update-domain-name.html).

1. Use o comando [get-metrics-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) indicado abaixo para visualizar a média ao longo de um período usando intervalos de 5 minutos:

   ```
   aws cloudwatch get-metric-statistics --namespace AWS/ApiGateway --metric-name Count --start-time 2011-10-03T23:00:00Z --end-time 2017-10-05T23:00:00Z --period 300 --statistics Average
   ```

# Exibir eventos de log do API Gateway no console do CloudWatch
<a name="view-cloudwatch-log-events-in-cloudwatch-console"></a>

A seção a seguir explica os pré-requisitos e como visualizar os eventos de log do API Gateway no console do CloudWatch.

## Pré-requisitos
<a name="view-cloudwatch-log-event-prerequisites"></a>

1. Você deve ter uma API criada no API Gateway. Siga as instruções em [Desenvolver APIs REST no API Gateway](rest-api-develop.md).

1. Você deve ter implantado e invocado a API pelo menos uma vez. Siga as instruções em [Implantar APIs REST no API Gateway](how-to-deploy-api.md) e [Invocar APIs REST no API Gateway](how-to-call-api.md).

1. Você deve ter o CloudWatch Logs habilitado para um estágio. Siga as instruções em [Configurar o registro em log do CloudWatch para APIs REST no API Gateway](set-up-logging.md).

## Como exibir solicitações e respostas de APIs registradas em log usando o console do CloudWatch
<a name="view-cloudwatch-log-event"></a>

1. Abra o console do CloudWatch, em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Se necessário, altere a Região da AWS. Na barra de navegação, selecione a região em que os seus recursos da AWS residem. Para obter mais informações, consulte [Regiões e endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html).

1. No painel de navegação, selecione **Logs**, **Grupos de log**.

1. Na tabela **Log Groups (Grupos de logs)**, selecione um grupo de logs do nome **API-Gateway-Execution-Logs\$1\$1rest-api-id\$1/\$1stage-name\$1**. 

1.  Na tabela **Log Streams (Fluxos de log)**, escolha um fluxo de logs. Você pode usar o carimbo de data e hora para ajudar a localizar o fluxo de logs de seu interesse. 

1. Escolha **Text (Texto)** para visualizar texto bruto ou escolha **Row (Linha)** para visualizar o evento linha por linha.

**Importante**  
 O CloudWatch permite que você exclua streams ou grupos de logs. Não exclua manualmente os streams ou grupos de logs da API do API Gateway. Deixe o API Gateway gerenciar esses recursos. A exclusão manual de grupos ou fluxos de log pode fazer com que as solicitações e as respostas da API não sejam registradas. Se isso acontecer, você pode excluir todo o grupo de logs da API e reimplantá-la. Isso ocorre porque o API Gateway cria grupos ou fluxos de log para um estágio de API no momento em que ela é implantada. 

# Ferramentas de monitoramento na AWS para o API Gateway
<a name="monitoring_automated_manual"></a>

AWSA fornece várias ferramentas que podem ser usadas para monitorar o API Gateway. É possível configurar algumas dessas ferramentas para realizar o monitoramento automaticamente, enquanto outras exigem intervenção manual. Recomendamos que as tarefas de monitoramento sejam automatizadas ao máximo possível.

## Ferramentas de monitoramento automatizadas na AWS
<a name="monitoring_automated_tools"></a>

É possível usar as seguintes ferramentas de monitoramento automatizadas para supervisionar o API Gateway e gerar relatórios quando algo estiver errado:
+ **Amazon CloudWatch Alarms**: observe uma única métrica ao longo de um período que você especificar e realize uma ou mais ações com base no valor da métrica em relação a um limite ao longo de vários períodos. A ação é uma notificação enviada para um tópico do Amazon Simple Notification Service (Amazon SNS) ou uma política do Amazon EC2 Auto Scaling. Os alarmes do CloudWatch não invocam ações simplesmente por estarem em um estado específico. O estado deve ter sido alterado e mantido por um número específico de períodos. Para obter mais informações, consulte [Monitorar a execução da API REST com métricas do Amazon CloudWatch](monitoring-cloudwatch.md).
+ **Amazon CloudWatch Logs**: monitore, armazene e acesse seus arquivos de log do AWS CloudTrail ou de outras origens. Para obter mais informações, consulte [What is CloudWatch Logs?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) no *Guia do usuário do Amazon CloudWatch*.
+ **Amazon EventBridge (anteriormente chamado de CloudWatch Events)**: faça correspondência de eventos e direcione-os a uma ou mais funções ou streams de destino para fazer alterações, capturar informações de estado e realizar ações corretivas. Para obter mais informações, consulte [What Is Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) no *Guia do usuário do Amazon EventBridge*.
+ **Monitoramento de log AWS CloudTrail**: compartilhe arquivos de log entre contas, monitore os arquivos de log do CloudTrail em tempo real enviando-os para o CloudWatch Logs, escreva aplicações de processamento de logs em Java e confirme se os arquivos de log não foram alterados após a entrega pelo CloudTrail. Para obter mais informações, consulte [Trabalhando com arquivos de log do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html) no *Guia do usuário do AWS CloudTrail*. 

## Ferramentas de monitoramento manual
<a name="monitoring_manual_tools"></a>

Outra parte importante do monitoramento do API Gateway é o monitoramento manual dos itens que os alarmes do CloudWatch não abrangem. O API Gateway, o CloudWatch e outros painéis do console da AWS fornecem uma visualização rápida do estado de seu ambiente da AWS. Recomendamos que você também verifique os arquivos de log na execução da API.
+ O painel do API Gateway mostra as seguintes estatísticas para um estágio de API durante um período específico:
  + **API Calls (Chamadas de API**
  + **Cache Hit (Acertos do cache)**, apenas quando o armazenamento em cache de API está ativado.
  + **Cache Miss (Solicitações não atendidas pelo cache)**, apenas quando o armazenamento em cache de API está ativado.
  + **Latência**
  + **Integration Latency (Latência de integração**
  + **4XX Error (Erro 4XX**
  + **5XX Error (Erro 5XX**
+ A página inicial do CloudWatch mostra:
  + Alertas e status atual
  + Gráficos de alertas e recursos
  + Estado de integridade do serviço

  Além disso, é possível usar o CloudWatch para fazer o seguinte: 
  + Crie [painéis personalizados](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html) para monitorar os serviços com os quais você se preocupa.
  + Colocar em gráfico dados de métrica para solucionar problemas e descobrir tendências
  + Pesquisar e procurar todas as métricas de recursos da AWS
  + Criar e editar alertas para ser notificado sobre problemas

## Criar alarmes do CloudWatch para monitorar o API Gateway
<a name="creating_alarms"></a>

Você pode criar um alarme do CloudWatch que envia uma mensagem do Amazon SNS quando o alarme muda de estado. Um alarme observa uma única métrica ao longo de um período especificado por você e realiza uma ou mais ações com base no valor da métrica relativo a um determinado limite ao longo de vários períodos. A ação é uma notificação enviada para um tópico do Amazon SNS ou uma política de Auto Scaling. Os alertas invocam ações apenas para alterações de estado mantidas. Os alarmes do CloudWatch não invocam ações simplesmente por estarem em um estado específico. O estado deve ter sido alterado e mantido por um número específico de períodos.

# Configurar o registro em log do CloudWatch para APIs REST no API Gateway
<a name="set-up-logging"></a>

 Para ajudar a depurar problemas relacionados à execução de solicitação ou ao acesso do cliente à sua API, é possível permitir que o Amazon CloudWatch Logs registre chamadas de API em log. Para obter mais informações sobre o CloudWatch, consulte [Monitorar a execução da API REST com métricas do Amazon CloudWatch](monitoring-cloudwatch.md).

## Formatos de log do CloudWatch para o API Gateway
<a name="apigateway-cloudwatch-log-formats"></a>

 Há dois tipos de registro de API em logs no CloudWatch: registro de execução e de acesso. No registro de execução, o API Gateway gerencia o CloudWatch Logs. O processo inclui a criação de grupos de log e fluxos de log, além de relatórios aos fluxos de log sobre solicitações e respostas de qualquer autor da chamada. 

Os dados registrados em log incluem erros ou rastreamentos de execução (como cargas úteis ou valores de parâmetro de solicitação ou de resposta), dados usados por autorizadores do Lambda (anteriormente conhecidos como autorizadores personalizados), independentemente de as chaves de API serem necessárias ou de os planos de uso estarem ativos e outras informações. O API Gateway edita cabeçalhos de autorização, valores de chave de API e parâmetros de solicitação confidenciais semelhantes dos dados registrados em log.

Para melhorar seu procedimento de segurança, recomendamos que você use o registro em log de execução no nível `ERROR` ou `INFO`. Você pode precisar fazer isso para cumprir vários requisitos de conformidade. Para ter mais informações, consulte [Amazon API Gateway controls](https://docs.aws.amazon.com/securityhub/latest/userguide/apigateway-controls.html) no *Guia do usuário do AWS Security Hub*.

Quando você implanta uma API, o API Gateway cria um grupo de logs e registra os streams no grupo de logs. O grupo de logs é chamado seguindo o formato `API-Gateway-Execution-Logs_{rest-api-id}/{stage_name}`. Dentro de cada grupo de logs, os logs são subdivididos em fluxos de log, os quais são ordenados por **Last Event Time** conforme os dados registrados em log são reportados. 

No registro de acessos, você, assim como um desenvolvedor de API, registra quem acessou sua API e como o autor da chamada acessou a API. Você pode criar seu próprio grupo de logs ou escolher um existente que possa ser gerenciado pelo API Gateway. Para especificar os detalhes de acesso, selecione variáveis [`$context`](api-gateway-variables-for-access-logging.md), um formato de log e um destino do grupo de logs.

O formato do log de acesso deve incluir ao menos `$context.requestId` ou `$context.extendedRequestId`. Como prática recomendada, inclua `$context.requestId` e `$context.extendedRequestId` em seu formato de log.

**`$context.requestId`**  
Isso registra em log o valor no cabeçalho `x-amzn-RequestId`. Os clientes podem substituir o valor no cabeçalho `x-amzn-RequestId` por um valor no formato de um identificador universal exclusivo (UUID). O API Gateway retorna esse ID de solicitação no cabeçalho de resposta `x-amzn-RequestId`. O API Gateway substitui os IDs de solicitação substituídos que não estão no formato de um UUID com `UUID_REPLACED_INVALID_REQUEST_ID` nos logs de acesso.

**`$context.extendedRequestId`**  
extendedRequestID é um ID exclusivo gerado pelo API Gateway. O API Gateway retorna esse ID de solicitação no cabeçalho de resposta `x-amz-apigw-id`. Um autor da chamada de API não pode fornecer ou substituir esse ID de solicitação. Pode ser necessário fornecer esse valor ao suporte da AWS para ajudar a solucionar problemas de sua API. Para obter mais informações, consulte [Variáveis para registro em log de acesso no API Gateway](api-gateway-variables-for-access-logging.md).

Escolha um formato de log que também seja adotado pelo seu backend de análise, como [Common Log Format](https://httpd.apache.org/docs/current/logs.html#common) (CLF), JSON, XML ou CSV. Em seguida, você pode enviar os logs de acesso a ele diretamente para que suas métricas sejam calculadas e produzidas. Para definir o formato de log, defina o ARN do grupo de logs na propriedade [accessLogSettings/destinationArn](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#destinationArn) no [estágio](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html). Você pode obter o ARN de um grupo de logs no console do CloudWatch. Para definir o formato de log de acesso, defina um formato escolhido na propriedade [accessLogSetting/format](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#format) no [estágio](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html). 

Exemplos de alguns formatos de log de acesso comumente usados são mostrados no console do API Gateway e estão listados a seguir.
+ `CLF` ([Formato de log comum](https://httpd.apache.org/docs/current/logs.html#common)):

  ```
  $context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime]"$context.httpMethod $context.resourcePath $context.protocol" $context.status $context.responseLength $context.requestId $context.extendedRequestId
  ```
+  `JSON`: 

  ```
  { "requestId":"$context.requestId", "extendedRequestId":"$context.extendedRequestId","ip": "$context.identity.sourceIp", "caller":"$context.identity.caller", "user":"$context.identity.user", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod", "resourcePath":"$context.resourcePath", "status":"$context.status", "protocol":"$context.protocol", "responseLength":"$context.responseLength" }
  ```
+ `XML`: 

  ```
  <request id="$context.requestId"> <extendedRequestId>$context.extendedRequestId</extendedRequestId> <ip>$context.identity.sourceIp</ip> <caller>$context.identity.caller</caller> <user>$context.identity.user</user> <requestTime>$context.requestTime</requestTime> <httpMethod>$context.httpMethod</httpMethod> <resourcePath>$context.resourcePath</resourcePath> <status>$context.status</status> <protocol>$context.protocol</protocol> <responseLength>$context.responseLength</responseLength> </request>
  ```
+ `CSV` (valores separados por vírgula):

  ```
  $context.identity.sourceIp,$context.identity.caller,$context.identity.user,$context.requestTime,$context.httpMethod,$context.resourcePath,$context.protocol,$context.status,$context.responseLength,$context.requestId,$context.extendedRequestId
  ```

## Permissões para registro em log do CloudWatch
<a name="set-up-access-logging-permissions"></a>

Para habilitar o CloudWatch Logs, é necessário conceder permissão ao API Gateway para ler e gravar logs no CloudWatch para sua conta. O [AmazonAPIGatewayPushToCloudWatchLogs](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAPIGatewayPushToCloudWatchLogs.html) tem todas as permissões necessárias.

**nota**  
O API Gateway chama o AWS Security Token Service para assumir a função do IAM. Portanto, certifique-se de que o AWS STS esteja habilitado para a região. Para obter mais informações, consulte [Gerenciar o AWS STS em uma região da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html).

Para conceder essas permissões à sua conta, crie uma função do IAM com `apigateway.amazonaws.com` como entidade confiável, anexe a política anterior à função do IAM e defina o ARN da função do IAM na propriedade [cloudWatchRoleArn](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateAccount.html#cloudWatchRoleArn) em sua [conta](https://docs.aws.amazon.com/apigateway/latest/api/API_GetAccount.html). Você deve definir a propriedade [CloudWatchroLearn](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateAccount.html#cloudWatchRoleArn) separadamente para cada região da AWS na qual deseja habilitar o CloudWatch Logs.

Se você receber um erro ao definir o ARN da função do IAM, verifique as configurações da sua conta da AWS Security Token Service para garantir que o AWS STS esteja habilitado na região que você está usando. Para obter mais informações sobre como ativar o AWS STS, consulte [Gerenciar o AWS STS em uma região da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate) no *Guia do usuário do IAM*.

## Configurar o registro em log da API do CloudWatch usando o console do API Gateway
<a name="set-up-access-logging-using-console"></a>

Para configurar o registro em log da API do CloudWatch, é necessário ter implantado a API em um estágio. Você também deve ter configurado um [ARN de função do CloudWatch Logs adequado](#set-up-access-logging-permissions) para a sua conta. 

1. Faça login 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, selecione **Configurações** e, em **Registro em log**, selecione **Editar**. 

1. Em **ARN de função do log do CloudWatch**, insira o ARN de um perfil do IAM com as permissões apropriadas. É necessário fazer isso uma vez para cada Conta da AWS que cria APIs usando o API Gateway. 

1. No painel de navegação principal, selecione **APIs** e siga um destes procedimentos:

   1.  Selecione uma API e escolha um estágio.

   1.  Crie uma API e implante-a em um estágio.

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

1.  Na seção **Logs e rastreamento**, selecione **Editar**.

1. Para habilitar o registro de execução em logs:

   1. Selecione um nível de registro em log no menu suspenso **CloudWatch Logs**. Os níveis de registro em log são os seguintes:
      + **Desativado**: o registro em log não está ativado neste estágio. 
      + **Somente erros**: o registro em log está habilitado somente para erros. 
      + **Logs de erros e informações**: o registro em log está habilitado para todos os eventos.

   1. (Opcional) Selecione **Rastreamento de dados** para ativar o registro em log de rastreamento de dados para seu estágio. Isso pode ser útil para solucionar problemas de APIs, mas pode resultar no registro de dados confidenciais.
**nota**  
Recomendamos não usar **Rastreamento de dados** para APIs de produção.

   1. (Opcional) Selecione **Métricas detalhadas** para ativar as métricas detalhadas do CloudWatch.

   Para obter mais informações sobre métricas do CloudWatch, consulte [Monitorar a execução da API REST com métricas do Amazon CloudWatch](monitoring-cloudwatch.md).

1. Para habilitar o registro de acesso em logs:

   1. Ative o **Registro em log de acesso personalizado**.

   1. Em **Acessar ARN de destino do log**, insira o ARN de um grupo de logs. O formato do ARN é `arn:aws:logs:{region}:{account-id}:log-group:log-group-name`.

   1. Em **Formato do log**, insira um formato de log. **É possível escolher **CLF**, **JSON**, **XML** ou CSV**. Para saber mais sobre exemplos de formatos de log, consulte [Formatos de log do CloudWatch para o API Gateway](#apigateway-cloudwatch-log-formats).

1. Escolha **Salvar alterações**.

**nota**  
Você pode permitir o registro em log de execução e o de acesso independentemente um do outro.

O API Gateway já está pronto para registrar solicitações à sua API em log. Não é necessário reimplantar a API ao atualizar as configurações do estágio, os logs ou as variáveis do estágio. 

## Configurar o registro da API do CloudWatch usando o CloudFormation
<a name="set-up-access-logging-using-cloudformation"></a>

Use o modelo do CloudFormation de exemplo a seguir para criar um grupo de logs do Amazon CloudWatch Logs e configurar a execução e o registro de acesso para um estágio. Para habilitar o CloudWatch Logs, é necessário conceder permissão ao API Gateway para ler e gravar logs no CloudWatch para sua conta. Para saber mais, consulte [Associar a conta ao perfil do IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html#aws-resource-apigateway-account--examples) no *Guia do usuário do AWS CloudFormation*.

```
  TestStage:
    Type: AWS::ApiGateway::Stage
    Properties:
      StageName: test
      RestApiId: !Ref MyAPI
      DeploymentId: !Ref Deployment
      Description: "test stage description"
      MethodSettings:
        - ResourcePath: "/*"
          HttpMethod: "*"
          LoggingLevel: INFO
      AccessLogSetting:
        DestinationArn: !GetAtt MyLogGroup.Arn
        Format: $context.extendedRequestId $context.identity.sourceIp $context.identity.caller $context.identity.user [$context.requestTime] "$context.httpMethod $context.resourcePath $context.protocol" $context.status $context.responseLength $context.requestId
  MyLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: !Join
        - '-'
        - - !Ref MyAPI
          - access-logs
```

# Registrar em log chamadas de API REST para o Amazon Data Firehose no API Gateway
<a name="apigateway-logging-to-kinesis"></a>

Para ajudar a depurar problemas relacionados ao acesso do cliente à sua API, é possível registrar em log chamadas de API no Amazon Data Firehose. Para saber mais sobre o Amazon Firehose, consulte [What Is Amazon Data Firehose?](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html).

Para o registro em log de acesso, você só pode habilitar o CloudWatch ou o Firehose, não os dois. No entanto, você pode habilitar o CloudWatch para registro em log de execução e o Firehose para registro em log de acesso.

**Topics**
+ [Formatos de log do Firehose para o API Gateway](#apigateway-kinesis-log-formats)
+ [Permissões para registro em log do Firehose](#set-up-kinesis-access-logging-permissions)
+ [Configurar o registro em log de acesso do Firehose usando o console do API Gateway](#set-up-kinesis-access-logging-using-console)

## Formatos de log do Firehose para o API Gateway
<a name="apigateway-kinesis-log-formats"></a>

O registro em log do Firehose usa o mesmo formato que o [registro em log do CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html).

## Permissões para registro em log do Firehose
<a name="set-up-kinesis-access-logging-permissions"></a>

Quando o registro em log de acesso do Firehose estiver habilitado em um estágio, o API Gateway criará um perfil vinculado ao serviço na sua conta, caso o perfil ainda não exista. A função será chamada de `AWSServiceRoleForAPIGateway` e terá a política gerenciada `APIGatewayServiceRolePolicy` anexada à ela. Para obter mais informações sobre funções vinculadas a um serviço, consulte [Como usar funções vinculadas a serviços](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html).

**nota**  
O nome do fluxo do Firehose deve ser `amazon-apigateway-{your-stream-name}`.

## Configurar o registro em log de acesso do Firehose usando o console do API Gateway
<a name="set-up-kinesis-access-logging-using-console"></a>

Para configurar o registro de API em logs, você deve ter implantado a API em um estágio. Também é necessário ter criado um fluxo do Firehose. 

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

1.  Execute um destes procedimentos:

   1.  Selecione uma API e escolha um estágio.

   1.  Crie uma API e implante-a em um estágio.

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

1.  Na seção **Logs e rastreamento**, selecione **Editar**.

1. Para habilitar o registro em log de acesso a um fluxo do Firehose:

   1. Ative o **Registro em log de acesso personalizado**.

   1. Em **ARN de destino de logs de acesso**, insira o ARN de um fluxo do Firehose. O formato do ARN é `arn:aws:firehose:{region}:{account-id}:deliverystream/amazon-apigateway-{your-stream-name}`.
**nota**  
O nome do fluxo do Firehose deve ser `amazon-apigateway-{your-stream-name}`.

   1. Em **Formato do log**, insira um formato de log. **É possível escolher **CLF**, **JSON**, **XML** ou CSV**. Para saber mais sobre exemplos de formatos de log, consulte [Formatos de log do CloudWatch para o API Gateway](set-up-logging.md#apigateway-cloudwatch-log-formats).

1. Escolha **Salvar alterações**.

Agora o API Gateway está pronto para registrar em log no Firehose solicitações feitas à API. Não é necessário reimplantar a API ao atualizar as configurações do estágio, os logs ou as variáveis do estágio. 

# Variáveis para registro em log de acesso no API Gateway
<a name="api-gateway-variables-for-access-logging"></a>

 No registro de acessos, você, assim como um desenvolvedor de API, registra quem acessou sua API e como o autor da chamada acessou a API. Você pode criar seu próprio grupo de logs ou escolher um existente que possa ser gerenciado pelo API Gateway. Para especificar os detalhes de acesso, você pode usar as variáveis `$context` com distinção de maiúsculas e minúsculas a seguir.

Consulte uma lista de variáveis de referência para transformadores de dados em [Variáveis para transformações de dados para o API Gateway](api-gateway-mapping-template-reference.md).


| Parameter | Descrição | 
| --- | --- | 
| \$1context.accountId |  O ID da conta da AWS do proprietário da API  | 
| \$1context.apiId |  O identificador que o API Gateway atribui à sua API.  | 
| \$1context.authorize.error | A mensagem de erro de autorização. | 
| \$1context.authorize.latency | A latência de autorização em ms. | 
| \$1context.authorize.status | O código de status retornado de uma tentativa de autorização. | 
| \$1context.authorizer.claims.property |  Uma propriedade das declarações retornadas do grupo de usuários do Amazon Cognito depois que o autor da chamada do método é autenticado com êxito. Para obter mais informações, consulte [Controlar o acesso a APIs REST usando grupos de usuários do Amazon Cognito como autorizador](apigateway-integrate-with-cognito.md).  Chamar `$context.authorizer.claims` retorna um valor nulo.   | 
| \$1context.authorizer.error | A mensagem de erro retornada de um autorizador. | 
| \$1context.authorizer.integrationLatency | A latência de integração do autorizador em ms. | 
| \$1context.authorizer.integrationStatus | O código de status retornado de um autorizador do Lambda. | 
| \$1context.authorizer.latency | A latência de autorizador em ms. | 
| \$1context.authorizer.principalId |  A identificação do usuário principal associada ao token enviado pelo cliente e retornada a partir de um autorizador do Lambda do API Gateway (anteriormente conhecido como autorizador personalizado). Para obter mais informações, consulte [Usar os autorizadores do API Gateway Lambda](apigateway-use-lambda-authorizer.md).  | 
| \$1context.authorizer.property |  O valor transformado em string do par de chave/valor especificado do mapa `context` retornado de uma função de autorizador do Lambda do API Gateway. Por exemplo, se o autorizador retornar o seguinte mapa `context`:  <pre>"context" : {<br />  "key": "value",<br />  "numKey": 1,<br />  "boolKey": true<br />}</pre> Chamar `$context.authorizer.key` retornará a string `"value"`, chamar `$context.authorizer.numKey` retornará a string `"1"` e chamar `$context.authorizer.boolKey` retornará a string `"true"`. Com relação à *propriedade*, o único caractere especial aceito é o sublinhado `(_)`. Para obter mais informações, consulte [Usar os autorizadores do API Gateway Lambda](apigateway-use-lambda-authorizer.md).  | 
| \$1context.authorizer.requestId | O ID da solicitação do endpoint da AWS. | 
| \$1context.authorizer.status | O código de status retornado de um autorizador. | 
| \$1context.authenticate.error | A mensagem de erro retornada de uma tentativa de autenticação. | 
| \$1context.authenticate.latency | A latência de autenticação em ms. | 
| \$1context.authenticate.status | O código de status retornado de uma tentativa de autenticação. | 
| \$1context.awsEndpointRequestId |  O ID da solicitação do endpoint da AWS.  | 
| \$1context.cipherSuite |  A criptografia, no formato IANA, que é negociada durante o handshake TLS entre o cliente e o API Gateway.  | 
| \$1context.customDomain.basePathMatched |  O caminho para um mapeamento da API correspondente a uma solicitação de entrada. Aplicável quando um cliente usa um nome de domínio personalizado para acessar uma API. Por exemplo, se um cliente enviar uma solicitação para `https://api.example.com/v1/orders/1234` e a solicitação corresponder ao mapeamento da API com o caminho `v1/orders`, o valor será `v1/orders`. Para saber mais, consulte [Os mapeamentos de API são usados para associar estágios da API a um nome de domínio personalizado para APIs REST.](rest-api-mappings.md).  | 
| \$1context.customDomain.routingRuleIdMatched | A regra de roteamento atendida por uma solicitação de entrada. Aplicável quando um cliente usa um nome de domínio personalizado para acessar uma API. Para saber mais, consulte [Regras de roteamento para associar estágios da API a um nome de domínio personalizado para APIs REST](rest-api-routing-rules.md). | 
| \$1context.deploymentId | O ID da implantação de API. | 
| \$1context.domainName |  O nome de domínio completo usado para invocar a API. Ele deve ser o mesmo que o cabeçalho `Host` de entrada.  | 
| \$1context.domainPrefix |  O primeiro rótulo do `$context.domainName`.  | 
| \$1context.endpointType | O tipo do endpoint da API. | 
| \$1context.error.message |  Uma string que contém uma mensagem de erro do API Gateway. Essa variável pode ser usada apenas para substituição de variável simples em um modelo de mapeamento de corpo [GatewayResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_GatewayResponse.html), que não é processado pelo mecanismo Velocity Template Language, bem como no registro de acesso. Para obter mais informações, consulte [Monitorar a execução de APIs de WebSocket com métricas do CloudWatch](apigateway-websocket-api-logging.md) e [Configurar respostas do gateway para personalizar respostas de erro](api-gateway-gatewayResponse-definition.md#customize-gateway-responses).  | 
| \$1context.error.messageString | O valor citado de \$1context.error.message, ou seja, "\$1context.error.message". | 
| \$1context.error.responseType |  Um [tipo](https://docs.aws.amazon.com/apigateway/latest/api/API_GatewayResponse.html#responseType) de [GatewayResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_GatewayResponse.html). Essa variável pode ser usada apenas para substituição de variável simples em um modelo de mapeamento de corpo [GatewayResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_GatewayResponse.html), que não é processado pelo mecanismo Velocity Template Language, bem como no registro de acesso. Para obter mais informações, consulte [Monitorar a execução de APIs de WebSocket com métricas do CloudWatch](apigateway-websocket-api-logging.md) e [Configurar respostas do gateway para personalizar respostas de erro](api-gateway-gatewayResponse-definition.md#customize-gateway-responses).  | 
| \$1context.error.validationErrorString |  Uma string que contém uma mensagem de erro de validação detalhada.  | 
| \$1context.extendedRequestId | O ID estendido que o API Gateway gera e atribui à solicitação de API. O ID de solicitação estendido contém informações úteis para a depuração e solução de problemas. | 
| \$1context.httpMethod |  O método HTTP utilizado. Os valores válidos incluem: `DELETE`, `GET`, `HEAD`, `OPTIONS`, `PATCH`, `POST` e `PUT`.  | 
| \$1context.identity.accountId |  O ID da conta da AWS associado à solicitação.  | 
| \$1context.identity.apiKey |  Para os métodos de API que exigem uma chave de API, essa variável é a chave de API associada à solicitação do método. Para métodos que não exigem uma chave de API, essa variável é um valor nulo. Para obter mais informações, consulte [Usar planos e chaves de API para APIs REST no APIs Gateway](api-gateway-api-usage-plans.md).  | 
| \$1context.identity.apiKeyId | O ID da chave de API associada a uma solicitação de API que exige uma chave de API. | 
| \$1context.identity.caller |  O identificador principal da entidade do autor da chamada que assinou a solicitação. Compatível com recursos que usam a autorização do IAM.  | 
| \$1context.identity.cognitoAuthenticationProvider |  Uma lista separada por vírgulas de todos os provedores de autenticação do Amazon Cognito usados pelo autor da chamada que faz a solicitação. Disponível somente se a solicitação foi assinada com credenciais do Amazon Cognito.  Por exemplo, para uma identidade de um grupo de usuários do Amazon Cognito, `cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim` Consulte informações sobre os provedores de autenticação do Amazon Cognito disponível em [Using Federated Identities](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) no *Guia do desenvolvedor do Amazon Cognito*. | 
| \$1context.identity.cognitoAuthenticationType |  O tipo de autenticação do Amazon Cognito do autor da chamada que faz a solicitação. Disponível somente se a solicitação foi assinada com credenciais do Amazon Cognito. Os valores possíveis incluem `authenticated` para identidades autenticadas e `unauthenticated` para identidades não autenticadas. | 
| \$1context.identity.cognitoIdentityId |  O ID de identidade do Amazon Cognito do autor da chamada que faz a solicitação. Disponível somente se a solicitação foi assinada com credenciais do Amazon Cognito.  | 
| \$1context.identity.cognitoIdentityPoolId |  O ID do grupo de identidades do Amazon Cognito do autor da chamada que faz a solicitação. Disponível somente se a solicitação foi assinada com credenciais do Amazon Cognito.  | 
| \$1context.identity.principalOrgId |  O [ID da organização da AWS](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html).  | 
| \$1context.identity.sourceIp |  O endereço IP de origem da conexão TCP mais próxima que está fazendo a solicitação ao endpoint do API Gateway.  | 
| \$1context.identity.clientCert.clientCertPem |  O certificado de cliente codificado por PEM que o cliente apresentou durante a autenticação TLS mútua. Presente quando um cliente acessa uma API usando um nome de domínio personalizado que tenha TLS mútuo habilitado. Presente somente nos logs de acesso, se ocorrer falha na autenticação TLS mútua.  | 
| \$1context.identity.clientCert.subjectDN |  O nome distinto do assunto do certificado apresentado por um cliente. Presente quando um cliente acessa uma API usando um nome de domínio personalizado que tenha TLS mútuo habilitado. Presente somente nos logs de acesso, se ocorrer falha na autenticação TLS mútua.  | 
| \$1context.identity.clientCert.issuerDN |  O nome distinto do emissor do certificado apresentado por um cliente. Presente quando um cliente acessa uma API usando um nome de domínio personalizado que tenha TLS mútuo habilitado. Presente somente nos logs de acesso, se ocorrer falha na autenticação TLS mútua.  | 
| \$1context.identity.clientCert.serialNumber |  O número de série do certificado. Presente quando um cliente acessa uma API usando um nome de domínio personalizado que tenha TLS mútuo habilitado. Presente somente nos logs de acesso, se ocorrer falha na autenticação TLS mútua.  | 
| \$1context.identity.clientCert.validity.notBefore |  A data antes da qual o certificado é inválido. Presente quando um cliente acessa uma API usando um nome de domínio personalizado que tenha TLS mútuo habilitado. Presente somente nos logs de acesso, se ocorrer falha na autenticação TLS mútua.  | 
| \$1context.identity.clientCert.validity.notAfter |  A data após a qual o certificado é inválido. Presente quando um cliente acessa uma API usando um nome de domínio personalizado que tenha TLS mútuo habilitado. Presente somente nos logs de acesso, se ocorrer falha na autenticação TLS mútua.  | 
|  \$1context.identity.vpcId | O ID da VPC que está fazendo a solicitação ao endpoint do API Gateway. | 
|  \$1context.identity.vpceId |  O ID do endpoint da VPC que está fazendo a solicitação ao endpoint do API Gateway. Presente somente quando você tem uma API privada.  | 
| \$1context.identity.user |  O identificador principal da entidade do usuário que será autorizado contra o acesso a recursos. Compatível com recursos que usam a autorização do IAM.  | 
| \$1context.identity.userAgent |  O cabeçalho [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) do autor da chamada da API.  | 
| \$1context.identity.userArn |  O Nome do Recurso Amazon (ARN) do usuário efetivo identificado após a autenticação. Para obter mais informações, consulte [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html).  | 
| \$1context.integration.error | A mensagem de erro retornada de uma integração. | 
| \$1context.integration.integrationStatus | Para a integração de proxy do Lambda, o código de status retornado pelo AWS Lambda, e não pelo código de função do Lambda de backend. | 
| \$1context.integration.latency | A latência de integração em ms. Equivale a \$1context.integrationLatency. | 
| \$1context.integration.requestId | O ID da solicitação do endpoint da AWS. Equivale a \$1context.awsEndpointRequestId. | 
| \$1context.integration.responseTransferMode | O modo de transferência de resposta da integração. Ele pode ser BUFFERED ou STREAMED. | 
| \$1context.integration.status | O código de status retornado de uma integração. Para integrações de proxy do Lambda, esse é o código de status que seu código de função do Lambda retorna.  | 
| \$1context.integration.timeToAllHeaders | O tempo entre o momento em que o API Gateway estabelece a conexão de integração e o momento em que recebe todos os cabeçalhos de resposta de integração do cliente.  | 
| \$1context.integration.timeToFirstContent | O tempo entre o momento em que o API Gateway estabelece a conexão de integração e o momento em que recebe os primeiros bytes de conteúdo. | 
| \$1context.integrationLatency | A latência de integração em ms. | 
| \$1context.integrationStatus | Para a integração de proxy do Lambda, esse parâmetro representa o código de status retornado do AWS Lambda, não do código da função do Lambda de backend. | 
| \$1context.isCanaryRequest |  Retorna `true` se a solicitação foi direcionada ao canário e `false` se a solicitação não foi direcionada ao canário. Presente somente quando você tem um canário habilitado. | 
| \$1context.path | O caminho da solicitação. Por exemplo, para um URL de solicitação sem proxy de https://\$1rest-api-id\$1.execute-api.\$1region\$1.amazonaws.com/\$1stage\$1/root/child, o valor \$1context.path é /\$1stage\$1/root/child.  | 
| \$1context.protocol | O protocolo de solicitação, por exemplo, , HTTP/1.1.  As APIs do API Gateway podem aceitar solicitações HTTP/2, mas o API Gateway envia solicitações para integrações de back-end usando HTTP/1.1. Como resultado, o protocolo de solicitação é registrado como HTTP/1.1 mesmo se um cliente enviar uma solicitação que usa HTTP/2.   | 
| \$1context.requestId |  Um ID para a solicitação. Os clientes podem substituir esse ID de solicitação. Usar `$context.extendedRequestId` para um ID de solicitação exclusivo gerado pelo API Gateway.  | 
| \$1context.requestOverride.header.header\$1name |  Substituição do cabeçalho da solicitação. Esse parâmetro, quando definido, contém os cabeçalhos a serem usados em lugar dos **HTTP Headers (Cabeçalhos HTTP)** que são definidos no painel **Integration Request (Solicitação de integração)**. Para obter mais informações, consulte [Substituir parâmetros de solicitação e resposta da API e códigos de status por APIs REST no API Gateway](apigateway-override-request-response-parameters.md).  | 
| \$1context.requestOverride.path.path\$1name |  Substituição do caminho da solicitação. Esse parâmetro, quando definido, contém o caminho da solicitação a ser usado em lugar dos **URL Path Parameters (Parâmetros de caminho de URL)** que são definidos no painel **Integration Request (Solicitação de integração)**. Para obter mais informações, consulte [Substituir parâmetros de solicitação e resposta da API e códigos de status por APIs REST no API Gateway](apigateway-override-request-response-parameters.md).  | 
| \$1context.requestOverride.querystring.querystring\$1name |  Substituição da string de consulta da solicitação. Esse parâmetro, quando definido, contém as strings de consulta da solicitação a serem usadas em lugar dos **URL Query String Parameters (Parâmetros de string de consulta de URL)** que são definidos no painel **Integration Request (Solicitação de integração)**. Para obter mais informações, consulte [Substituir parâmetros de solicitação e resposta da API e códigos de status por APIs REST no API Gateway](apigateway-override-request-response-parameters.md).  | 
| \$1context.responseLatency | A latência da resposta em ms. | 
| \$1context.responseLength | O tamanho da carga de resposta em bytes. | 
| \$1context.responseOverride.header.header\$1name | Substituição do cabeçalho da resposta. Esse parâmetro, quando definido, contém o cabeçalho a ser retornado em lugar do Response header (Cabeçalho de resposta) que é definido como o Default mapping (Mapeamento padrão) no painel Integration Response (Resposta de integração). Para obter mais informações, consulte [Substituir parâmetros de solicitação e resposta da API e códigos de status por APIs REST no API Gateway](apigateway-override-request-response-parameters.md). | 
| \$1context.responseOverride.status | Substituição do código de status da resposta. Esse parâmetro, quando definido, contém o código de status a ser retornado em lugar do Method response status (Status de resposta de método) que é definido como o Default mapping (Mapeamento padrão) no painel Integration Response (Resposta de integração). Para obter mais informações, consulte [Substituir parâmetros de solicitação e resposta da API e códigos de status por APIs REST no API Gateway](apigateway-override-request-response-parameters.md). | 
| \$1context.requestTime | O horário da solicitação [CLF](https://httpd.apache.org/docs/current/logs.html#common) formatado (dd/MMM/yyyy:HH:mm:ss \$1-hhmm). | 
| \$1context.requestTimeEpoch | O tempo de solicitação formatado em [Epoch](https://en.wikipedia.org/wiki/Unix_time), em milissegundos. | 
| \$1context.resourceId |  O identificador que o API Gateway atribui ao seu recurso.  | 
| \$1context.resourcePath |  O caminho para o seu recurso. Por exemplo, para a URI de solicitação sem proxy de `https://{rest-api-id}.execute-api.{region}.amazonaws.com/{stage}/root/child`, o valor `$context.resourcePath` é `/root/child`. 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).   | 
| \$1context.stage |  O estágio de implantação da solicitação de API (por exemplo, `Beta` ou `Prod`).  | 
| \$1context.status | O status de resposta do método. | 
| \$1context.tlsVersion |  A versão de TLS que é negociada durante o handshake TLS entre o cliente e o API Gateway. | 
| \$1context.waf.error | A mensagem de erro retornada pelo AWS WAF. | 
| \$1context.waf.latency | A latência do AWS WAF em ms. | 
| \$1context.waf.status | O código de status retornado pelo AWS WAF. | 
| \$1context.xrayTraceId |  O ID de rastreio do rastreio do X-Ray. Para obter mais informações, consulte [Configurar o AWS X-Ray com APIs REST do API Gateway](apigateway-enabling-xray.md).  | 
| \$1context.wafResponseCode |  A resposta recebida do [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html): `WAF_ALLOW` ou `WAF_BLOCK`. Não será definido se o estágio não estiver associado a uma ACL da web. Para obter mais informações, consulte [Usar o AWS WAF para proteger as APIs REST no API Gateway](apigateway-control-access-aws-waf.md).  | 
| \$1context.webaclArn |  O ARN completo da ACL da web que é utilizada para decidir se deseja permitir ou bloquear a solicitação. Não será definido se o estágio não estiver associado a uma ACL da web. Para obter mais informações, consulte [Usar o AWS WAF para proteger as APIs REST no API Gateway](apigateway-control-access-aws-waf.md).  | 

# Rastrear solicitações de usuário para APIs REST usando o X-Ray no API Gateway
<a name="apigateway-xray"></a>

Você pode usar o [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-apigateway.html) para rastrear e analisar solicitações de usuário à medida que passam pelas APIs REST do Amazon API Gateway a caminho dos serviços subjacentes. O API Gateway oferece suporte ao rastreamento de do X-Ray para todos os tipos de endpoint de API REST do API Gateway: regional, otimizado para bordas e privado. Você pode usar o X-Ray com o Amazon API Gateway em todas as regiões da AWS em que o X-Ray está disponível.

Como o X-Ray fornece uma visão completa de uma solicitação inteira, você pode analisar latências em suas APIs e serviços de backend. Use um mapa de serviço do X-Ray para visualizar a latência de uma solicitação inteira e dos serviços downstream integrados ao X-Ray. Também é possível configurar regras de amostragem para informar ao X-Ray quais solicitações registrar e com quais taxas de amostragem, de acordo com os critérios especificados. 

Se você chamar uma API do API Gateway de um serviço que já está sendo rastreado, o API Gateway propagará o rastreamento, mesmo que o rastreamento do X-Ray não esteja habilitado na API.

Você pode habilitar o X-Ray para um estágio da API usando o console do API Gateway ou usando a CLI ou a API do API Gateway.

**Topics**
+ [Configurar o AWS X-Ray com APIs REST do API Gateway](apigateway-enabling-xray.md)
+ [Usar mapas de serviço e visualizações de rastreamento do AWS X-Ray com o API Gateway](apigateway-using-xray-maps.md)
+ [Configurar regras de amostragem do AWS X-Ray para APIs do API Gateway](apigateway-configuring-xray-sampling-rules.md)
+ [Rastreamentos do AWS X-Ray para APIs do Amazon API Gateway](apigateway-understanding-xray-traces.md)

# Configurar o AWS X-Ray com APIs REST do API Gateway
<a name="apigateway-enabling-xray"></a>

Nesta seção, você encontrará informações detalhadas sobre como configurar o [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-apigateway.html) com APIs REST do API Gateway.

**Topics**
+ [Modos de rastreamento do X-Ray para o API Gateway](#apigateway-tracing-modes)
+ [Permissões para rastreamento do X-Ray](#set-up-xray-tracing-permissions)
+ [Habilitar o rastreamento do X-Ray no console do API Gateway](#apigateway-xray-console-setup)
+ [Habilitar o rastreamento do AWS X-Ray usando a CLI do API Gateway](#apigateway-xray-cli-setup)

## Modos de rastreamento do X-Ray para o API Gateway
<a name="apigateway-tracing-modes"></a>

O caminho de uma solicitação pelo seu aplicativo é controlado com um ID de rastreamento. Um rastreamento coleta todos os segmentos gerados por uma única solicitação, geralmente uma solicitação HTTP `GET` ou `POST`.

Existem dois modos de rastreamento para uma API do API Gateway:
+ **Passivo**: essa será a configuração padrão se o rastreamento do X-Ray não estiver habilitado em um estágio da API. Essa abordagem significa que a API do API Gateway só é rastreada se o X-Ray estiver habilitado em um serviço upstream.
+ **Ativo**: quando um estágio da API do API Gateway tem esta configuração, o API Gateway faz a amostragem automaticamente de solicitações de invocação da API, com base no algoritmo de amostragem especificado pelo X-Ray.

  Quando o rastreamento ativo estiver habilitado em um estágio, o API Gateway cria uma função vinculada ao serviço na sua conta, caso a função ainda não exista. A função é chamada de `AWSServiceRoleForAPIGateway` e terá a política gerenciada `APIGatewayServiceRolePolicy` anexada à ela. Para obter mais informações sobre funções vinculadas a um serviço, consulte [Como usar funções vinculadas a serviços](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html).
**nota**  
O X-Ray aplica um algoritmo de amostragem para garantir que o rastreamento seja eficiente, enquanto ainda fornece uma amostra representativa das solicitações recebidas pela API. O algoritmo de amostragem padrão é uma solicitação por segundo, com 5% de solicitações de amostra fora do limite.

Você pode alterar o modo de rastreamento da sua API usando o console de gerenciamento do API Gateway, a CLI do API Gateway ou um SDK da AWS.

## Permissões para rastreamento do X-Ray
<a name="set-up-xray-tracing-permissions"></a>

Quando você habilita o rastreamento do X-Ray em um estágio, o API Gateway cria uma função vinculada ao serviço na sua conta, caso a função ainda não exista. A função é chamada de `AWSServiceRoleForAPIGateway` e terá a política gerenciada `APIGatewayServiceRolePolicy` anexada à ela. Para obter mais informações sobre funções vinculadas a um serviço, consulte [Como usar funções vinculadas a serviços](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html).

## Habilitar o rastreamento do X-Ray no console do API Gateway
<a name="apigateway-xray-console-setup"></a>

Use o console do Amazon API Gateway para habilitar o rastreamento ativo em um estágio da API.

Estas instruções presumem que você já implantou a API em um estágio.

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 a API e, no painel de navegação principal, selecione **Estágios**.

1. No painel **Estágios**, selecione um estágio.

1. Na seção **Logs e rastreamento**, selecione **Editar**.

1. Para habilitar o rastreamento ativo com X-Ray, selecione **Habilitar rastreamento com X-Ray** para ativar o rastreamento com X-Ray.

1. Escolha **Salvar alterações**.

Assim que você tiver habilitado o X-Ray para o estágio da API, use o console de gerenciamento do X-Ray para visualizar os rastreamentos e os mapas de serviço.

## Habilitar o rastreamento do AWS X-Ray usando a CLI do API Gateway
<a name="apigateway-xray-cli-setup"></a>

O comando [create-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-stage.html) indicado a abaixo cria um estágio com o rastreamento do X-Ray ativo:

```
aws apigateway create-stage \
    --rest-api-id rest-api-id \
    --stage-name stage-name \
    --deployment-id deployment-id \
    --region region \
    --tracing-enabled=true
```

A saída será exibida da seguinte forma:

```
{
    "tracingEnabled": true, 
    "stageName": stage-name, 
    "cacheClusterEnabled": false, 
    "cacheClusterStatus": "NOT_AVAILABLE", 
    "deploymentId": deployment-id, 
    "lastUpdatedDate": 1533849811, 
    "createdDate": 1533849811, 
    "methodSettings": {}
}
```

O comando [create-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-stage.html) indicado abaixo cria um estágio sem o rastreamento do X-Ray ativo:

```
aws apigateway create-stage \
    --rest-api-id rest-api-id \
    --stage-name stage-name \
    --deployment-id deployment-id \
    --region region \
    --tracing-enabled=false
```

A saída será exibida da seguinte forma:

```
{
    "tracingEnabled": false, 
    "stageName": stage-name, 
    "cacheClusterEnabled": false, 
    "cacheClusterStatus": "NOT_AVAILABLE", 
    "deploymentId": deployment-id, 
    "lastUpdatedDate": 1533849811, 
    "createdDate": 1533849811, 
    "methodSettings": {}
}
```

O comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) indicado abaixo ativa o rastreamento do X-Ray para uma API implantada: 

```
aws apigateway update-stage \
    --rest-api-id rest-api-id \
    --stage-name stage-name \
    --patch-operations op=replace,path=/tracingEnabled,value=true
```

O comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) indicado abaixo desativa o rastreamento do X-Ray para uma API implantada: 

```
aws apigateway update-stage \
    --rest-api-id rest-api-id \
    --stage-name stage-name \
    --region region \
    --patch-operations op=replace,path=/tracingEnabled,value=false
```

A saída será exibida da seguinte forma:

```
{
    "tracingEnabled": false, 
    "stageName": stage-name, 
    "cacheClusterEnabled": false, 
    "cacheClusterStatus": "NOT_AVAILABLE", 
    "deploymentId": deployment-id, 
    "lastUpdatedDate": 1533850033, 
    "createdDate": 1533849811, 
    "methodSettings": {}
}
```

Assim que você tiver habilitado o X-Ray para o estágio da sua API, use a CLI do X-Ray para recuperar as informações de rastreamento. Consulte mais informações em [Using the X-Ray API with the AWS CLI](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-api.html#xray-api-tutorial).

# Usar mapas de serviço e visualizações de rastreamento do AWS X-Ray com o API Gateway
<a name="apigateway-using-xray-maps"></a>

Nesta seção, encontre informações detalhadas sobre como usar mapas de serviço e exibições de rastreamento do [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-apigateway.html) com o API Gateway.

**Topics**
+ [Exemplo de mapa de serviço do X-Ray](#apigateway-using-xray-maps-active)
+ [Exemplo de exibição de rastreamento do X-Ray](#apigateway-using-xray-trace-view-active)

## Exemplo de mapa de serviço do X-Ray
<a name="apigateway-using-xray-maps-active"></a>

AWS X-RayOs mapas de serviço do mostram informações sobre a API e todos seus serviços downstream. Quando o X-Ray estiver habilitado para um estágio da API no API Gateway, você verá um nó no mapa de serviço contendo informações sobre o tempo total gasto no serviço API Gateway. Obtenha informações detalhadas sobre o status de resposta e um histograma do tempo de resposta da API para o período selecionado. Para APIs que integram-se a serviços da AWS, como o AWS Lambda e o Amazon DynamoDB, você verá mais nós que fornecem métricas de performance relacionadas a esses serviços. Haverá um mapa de serviço para cada estágio da API.

O exemplo a seguir mostra um mapa de serviço para o estágio `test` de uma API chamada `xray`. Essa API tem duas integrações do Lambda. Os nós representam o serviço do API Gateway e as duas funções do Lambda.

Consulte uma explicação detalhada sobre a estrutura do mapa de serviço em [Use the X-Ray trace map](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html#xray-console-servicemap).

![\[Exemplo de mapa de serviço de um estágio de API do API Gateway\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/apigateway-xray-servicemap-2.png)


No mapa de serviço, você pode ampliar para ver uma exibição de rastreamento do estágio da API. O rastreamento exibirá informações mais detalhadas sobre a API, representadas como segmentos e subsegmentos. Por exemplo, o rastreamento para o mapa de serviço mostrado acima incluiria segmentos para o serviço Lambda e a função do Lambda. Para ter mais informações, consulte [AWS Lambda e AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-lambda.html).

Se você escolher um nó ou uma borda em um mapa de serviço do X-Ray, o console do X-Ray mostrará um histograma de distribuição da latência. Você pode usar um histograma de latência para ver o tempo necessário para que um serviço conclua suas solicitações. Veja a seguir um histograma do estágio do API Gateway chamado `xray/test` no mapa de serviço anterior. Consulte uma explicação detalhada sobre os histogramas de distribuição de latência em [Use Latency Histograms](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html#xray-console-histograms).

![\[Histograma do X-Ray de um estágio de API do API Gateway\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/apigateway-xray-histogram-1.png)


## Exemplo de exibição de rastreamento do X-Ray
<a name="apigateway-using-xray-trace-view-active"></a>

O diagrama a seguir mostra uma visualização de rastreamento gerada para a API de exemplo descrita acima, com uma função de backend do Lambda. Uma solicitação de método da API bem-sucedida é mostrada com um código de resposta de 200.

Consulte uma explicação detalhada sobre visualizações de rastreamento em [View traces and trace details](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html#xray-console-traces).

![\[API Gateway com rastreamento ativo habilitado\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/apigateway-xray-traceview-1.png)


# Configurar regras de amostragem do AWS X-Ray para APIs do API Gateway
<a name="apigateway-configuring-xray-sampling-rules"></a>

Use o console ou o SDK do AWS X-Ray para configurar regras de amostragem para a API do Amazon API Gateway. Uma regra de amostragem especifica quais solicitações o X-Ray deve registrar para sua API. Ao personalizar regras de amostragem, você pode controlar a quantidade de dados gravados e modificar o comportamento de amostragem instantaneamente, sem modificar ou reimplantar seu código.

Antes de especificar as regras de amostragem do X-Ray, leia os tópicos a seguir no Guia do desenvolvedor do X-Ray:
+ [Configure sampling rules](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html#xray-console-sampling)
+ [Usar regras de amostragem com a API do X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-api.html#xray-api-sampling)

**Topics**
+ [Valores de opção da regra de amostragem do X-Ray para APIs do API Gateway](#apigateway-xray-sampling-rule-options)
+ [Exemplos de regras de amostragem do X-Ray](#apigateway-xray-sampling-rules-examples)

## Valores de opção da regra de amostragem do X-Ray para APIs do API Gateway
<a name="apigateway-xray-sampling-rule-options"></a>

As seguintes opções de amostragem do X-Ray são relevantes para o API Gateway. Valores de string podem usar curingas para corresponder a um caractere único (?), ou zero ou mais caracteres (\$1). Consulte mais detalhes, incluindo uma explicação detalhada de como as configurações de **Reservatório** e **Taxa** são usadas, em [Configure sampling rules](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html#xray-console-sampling).
+ **Nome da regra** (string): um nome exclusivo para a regra.
+ **Prioridade** (inteiro entre 1 e 9999): a prioridade da regra de amostragem. Os serviços avaliam as regras em ordem decrescente de prioridade e tomam uma decisão de amostragem com a primeira regra correspondente.
+ **Reservatório** (inteiro não negativo): um número fixo de solicitações correspondentes para instrumentar por segundo, antes de aplicar a taxa fixa. O reservatório não é usado diretamente pelos serviços, mas se aplica a todos os serviços usando a regra coletivamente.
+ **Taxa** (número entre 0 e 100): a porcentagem de solicitações correspondentes para instrumentar, depois que o reservatório é esgotado.
+ **Nome do serviço** (string): nome de estágio da API, no formato ***\$1api-name\$1*/*\$1stage-name\$1***. Por exemplo, se você implantaria a amostra de API [PetStore](api-gateway-create-api-from-example.md) em um estágio chamado `test`, o valor **Service name (Nome de serviço)** a ser especificado na regra de amostragem seria **pets/test**.
+ **Tipo de serviço** (string): para uma API do API Gateway, pode-se especificar **AWS::ApiGateway::Stage** ou **AWS::ApiGateway::\$1**.
+ **Host** (string): o nome de host do cabeçalho de host HTTP. Defina isso como **\$1** para corresponder contra todos os nomes de host. Ou especifique um nome de host completo ou parcial para correspondência, por exemplo, **api.example.com** ou **\$1.example.com**.
+ **ARN do recurso** (string): o ARN do estágio da API, por exemplo, **arn:aws:apigateway:*region*::/restapis/*api-id*/stages/*stage-name***.

  O nome de estágio pode ser obtido do console, da CLI ou da API do API Gateway. Para obter mais informações sobre os formatos de ARN, consulte a [Referência geral da Amazon Web Services](https://docs.aws.amazon.com/general/latest/gr/).
+ **Método HTTP** (string): o método a ser amostrado; por exemplo, **GET**.
+ **URL path (Caminho do URL) (string)** — O caminho URL da solicitação.
+ (opcional) **Atributos** (chave e valor): cabeçalhos da solicitação HTTP original; por exemplo, **Connection**, **Content-Length** ou **Content-Type**. Cada valor de atributo pode ter até 32 caracteres.

## Exemplos de regras de amostragem do X-Ray
<a name="apigateway-xray-sampling-rules-examples"></a>

**Exemplo de regra de amostragem Nº 1**

Essa regra amostra todas as solicitações `GET` para a API `testxray` no estágio `test`.
+ **Rule name (Nome da regra — ****test-sampling**
+ **Prioridade — ****17**
+ **Tamanho do reservatório — ****10**
+ **Taxa fixa — ****10**
+ **Nome do serviço — ****testxray/test**
+ **Tipo de serviço — ****AWS::ApiGateway::Stage**
+ **Método HTTP — ****GET**
+ **ARN do recurso — ****\$1**
+ **Host — ****\$1**

**Exemplo de regra de amostragem Nº 2**

Essa regra amostra todas as solicitações para a API `testxray` no estágio `prod`.
+ **Rule name (Nome da regra — ****prod-sampling**
+ **Prioridade — ****478**
+ **Tamanho do reservatório — ****1**
+ **Taxa fixa — ****60**
+ **Nome do serviço — ****testxray/prod**
+ **Tipo de serviço — ****AWS::ApiGateway::Stage**
+ **Método HTTP — ****\$1**
+ **ARN do recurso — ****\$1**
+ **Host — ****\$1**
+ **Atributos** — **\$1\$1**

# Rastreamentos do AWS X-Ray para APIs do Amazon API Gateway
<a name="apigateway-understanding-xray-traces"></a>

Esta seção discute segmentos e subsegmentos de rastreamento do AWS X-Ray, bem como outros campos de rastreamento para APIs do Amazon API Gateway.

Antes de ler esta seção, reveja os tópicos a seguir no Guia do desenvolvedor do X-Ray:
+  [Use an Console de gerenciamento da AWS](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html)
+  [X-Ray segment documents](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-api.html#xray-api-segmentdocuments)
+ [Conceitos](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html#xray-concepts)

**Topics**
+ [Exemplos de objetos de rastreamento para uma API do API Gateway](#apigateway-understanding-xray-traces-example-segments)
+ [Noções básicas sobre o rastreamento](#apigateway-understanding-xray-traces-segments)

## Exemplos de objetos de rastreamento para uma API do API Gateway
<a name="apigateway-understanding-xray-traces-example-segments"></a>

Esta seção discute alguns dos objetos que você pode ver em um rastreamento para uma API do API Gateway.

**Anotações**

As anotações podem aparecer em segmentos e subsegmentos. Elas são usadas como expressões de filtragem em regras de amostragem para filtrar rastreamentos. Consulte mais informações em [Configure sampling rules](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html#xray-console-sampling).

Veja a seguir um exemplo de um objeto `annotations`, em que um estágio da API é identificado pelo ID da API e o nome de estágio da API:

```
"annotations": {
    "aws:api_id": "a1b2c3d4e5",
    "aws:api_stage": "dev"
}
```

Consulte mais informações sobre anotações em [X-Ray segment documents](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-api.html#xray-api-segmentdocuments) e selecione **X-Ray segment documents**, **Annotations**.

**Dados de recursos da AWS**

O objeto `aws` aparece somente em segmentos. Veja a seguir um exemplo de um objeto `aws` que corresponde à regra de amostragem Padrão. Consulte uma explicação detalhada sobre as regras de amostragem em [Configure sampling rules](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-console.html#xray-console-sampling).

```
"aws": {
    "xray": {
        "sampling_rule_name": "Default"
    },
    "api_gateway": {
        "account_id": "123412341234",
        "rest_api_id": "a1b2c3d4e5",
        "stage": "dev",
        "request_id": "a1b2c3d4-a1b2-a1b2-a1b2-a1b2c3d4e5f6"
    }
}
```

Consulte mais informações sobre o objeto `aws` em [X-Ray segment documents](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-api.html#xray-api-segmentdocuments) e selecione **X-Ray segment documents**, **AWS resource data**.

## Noções básicas sobre o rastreamento
<a name="apigateway-understanding-xray-traces-segments"></a>

Veja a seguir um segmento de rastreamento para um estágio do API Gateway. Consulte uma explicação detalhada sobre os campos que compõem o segmento de rastreamento em [X-Ray segment documents](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray-interface-api.html#xray-api-segmentdocuments).

```
        {
            "Document": {
                "id": "a1b2c3d4a1b2c3d4",
                "name": "testxray/dev",
                "start_time": 1533928226.229,
                "end_time": 1533928226.614,
                "metadata": {
                    "default": {
                        "extended_request_id": "abcde12345abcde=",
                        "request_id": "a1b2c3d4-a1b2-a1b2-a1b2-a1b2c3d4e5f6"
                    }
                },
                "http": {
                    "request": {
                        "url": "https://example.com/dev?username=demo&message=hellofromdemo/",
                        "method": "GET",
                        "client_ip": "192.0.2.0",
                        "x_forwarded_for": true
                    },
                    "response": {
                        "status": 200,
                        "content_length": 0
                    }
                },
                "aws": {
                    "xray": {
                        "sampling_rule_name": "Default"
                    },
                    "api_gateway": {
                        "account_id": "123412341234",
                        "rest_api_id": "a1b2c3d4e5",
                        "stage": "dev",
                        "request_id": "a1b2c3d4-a1b2-a1b2-a1b2-a1b2c3d4e5f6"
                    }
                },
                "annotations": {
                    "aws:api_id": "a1b2c3d4e5",
                    "aws:api_stage": "dev"
                },
                "trace_id": "1-a1b2c3d4-a1b2c3d4a1b2c3d4a1b2c3d4",
                "origin": "AWS::ApiGateway::Stage",
                "resource_arn": "arn:aws:apigateway:us-east-1::/restapis/a1b2c3d4e5/stages/dev",
                "subsegments": [
                    {
                        "id": "abcdefgh12345678",
                        "name": "Lambda",
                        "start_time": 1533928226.233,
                        "end_time": 1533928226.6130002,
                        "http": {
                            "request": {
                                "url": "https://example.com/2015-03-31/functions/arn:aws:lambda:us-east-1:123412341234:function:xray123/invocations",
                                "method": "GET"
                            },
                            "response": {
                                "status": 200,
                                "content_length": 62
                            }
                        },
                        "aws": {
                            "function_name": "xray123",
                            "region": "us-east-1",
                            "operation": "Invoke",
                            "resource_names": [
                                "xray123"
                            ]
                        },
                        "namespace": "aws"
                    }
                ]
            },
            "Id": "a1b2c3d4a1b2c3d4"
        }
```