

# Registro em log do CloudFront e de funções de borda
<a name="logging"></a>

O Amazon CloudFront fornece diferentes tipos de registro em log. É possível registrar em log as solicitações do visualizador recebidas pelas distribuições do CloudFront ou registrar as atividades do serviço do CloudFront (atividade de API) em sua conta da AWS. Também é possível obter logs das funções do CloudFront Functions e do Lambda@Edge.

## Registrar solicitações em log
<a name="logging-requests"></a>

O CloudFront fornece as seguintes maneiras de registrar em log as solicitações recebidas por suas distribuições.

**Logs de acesso (logs padrão)**  
Os logs de acesso do CloudFront fornecem registros detalhados sobre cada solicitação feita a uma distribuição. Você pode usar os logs para cenários, como auditorias de segurança e acesso.   
Os logs de acesso do CloudFront são entregues ao destino que você especificar.   
Use logs de acesso quando precisar de:  
+ análise e relatórios históricos;
+ requisitos de segurança e conformidade;
+ retenção econômica de logs em longo prazo.
Para obter mais informações, consulte [Logs de acesso (logs padrão)](AccessLogs.md).

**Logs de acesso em tempo real**  
Os logs de acesso em tempo real do CloudFront são entregues em segundos depois o recebimento das solicitações e fornecem informações em tempo real sobre as solicitações feitas a uma distribuição. É possível escolher a *taxa de amostragem* para os logs de acesso em tempo real; isto é, a porcentagem de solicitações para as quais deseja receber registros de logs de acesso em tempo real. Também é possível escolher os campos específicos que deseja receber nos registros de log. Os logs de acesso em tempo real são ideais para monitoramento em tempo real do desempenho da entrega de conteúdo.  
Os logs de acesso em tempo real do CloudFront são entregues ao fluxo de dados de sua preferência no Amazon Kinesis Data Streams. Além das cobranças de uso do Kinesis Data Streams, o CloudFront cobra por logs de acesso em tempo real.  
Use logs de acesso em tempo real quando precisar de:  
+ monitoramento e alertas em tempo real;
+ painéis e insights operacionais em tempo real.
Para obter mais informações, consulte [Usar logs de acesso em tempo real](real-time-logs.md).

**Logs de conexão**  
Os logs de conexão fornecem informações detalhadas sobre a conexão entre o servidor e o cliente para distribuições habilitadas para mTLS. Eles mostram informações sobre certificados de cliente, sobre os motivos das falhas na autenticação mTLS e sobre se a conexão foi permitida ou recusada.  
Como os logs de acesso (logs padrão), os logs de conexão são entregues ao destino que você especificar.   
 Para habilitar os logs de conexão, primeiro você deve [habilitar a mTLS](mtls-authentication.md) para sua distribuição. 
Use logs de conexão quando precisar:  
+ Saber o motivo do êxito ou falha de uma conexão durante o handshake do TLS. 
+ Ter visibilidade das informações sobre certificados de cliente.
Para obter mais informações, consulte [Observabilidade por meio de logs de conexão](connection-logs.md).

## Registrar em log funções de borda
<a name="logging-edge-functions"></a>

É possível usar o Amazon CloudWatch Logs para obter logs para as funções de borda, tanto do Lambda@Edge quanto do CloudFront Functions. É possível acessar os logs usando o console do CloudWatch ou a API do CloudWatch Logs. Para obter mais informações, consulte [Logs de funções de borda](edge-functions-logs.md).

## Registrar em log as atividades do serviço
<a name="logging-service-activity"></a>

Você pode usar o AWS CloudTrail para registrar a atividade do serviço do CloudFront (atividade de API) em sua conta da AWS. O CloudTrail fornece um registro de ações de API realizadas por um usuário, uma função ou um serviço da AWS no CloudFront. Usando as informações coletadas pelo CloudTrail, é possível determinar a solicitação de API realizada para o CloudFront, o endereço IP do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita, além de detalhes adicionais.

Para obter mais informações, consulte [Registrar em log chamadas de API do Amazon CloudFront usando o AWS CloudTrail](logging_using_cloudtrail.md).

Consulte mais informações sobre o registro em log nos seguintes tópicos:

**Topics**
+ [Registrar solicitações em log](#logging-requests)
+ [Registrar em log funções de borda](#logging-edge-functions)
+ [Registrar em log as atividades do serviço](#logging-service-activity)
+ [Logs de acesso (logs padrão)](AccessLogs.md)
+ [Usar logs de acesso em tempo real](real-time-logs.md)
+ [Logs de funções de borda](edge-functions-logs.md)
+ [Registrar em log chamadas de API do Amazon CloudFront usando o AWS CloudTrail](logging_using_cloudtrail.md)

# Logs de acesso (logs padrão)
<a name="AccessLogs"></a>

Você pode configurar o CloudFront para criar arquivos de log que contenham informações detalhadas sobre todas as solicitações dos usuários (visualizadores) que ele recebe. Esses são chamados de *logs de acesso*, também conhecidos como *logs padrão*. 

Cada log contém informações, como a hora em que a solicitação foi recebida, tempo de processamento, caminhos de solicitação e respostas do servidor. Você pode usar esses logs de acesso para analisar os tempos de resposta e solucionar problemas.

O diagrama a seguir mostra como o CloudFront registra informações sobre as solicitações de seus objetos. Neste exemplo, as distribuições estão configuradas para enviar logs de acesso a um bucket do Amazon S3.

![\[Fluxo básico de logs de acesso\]](http://docs.aws.amazon.com/pt_br/AmazonCloudFront/latest/DeveloperGuide/images/Logging.png)


1. Neste diagrama, você tem dois sites, A e B, e duas distribuições do CloudFront correspondentes. Os usuários solicitam seus objetos usando URLs associados a suas distribuições.

1. O CloudFront encaminha cada solicitação para o ponto de presença adequado.

1. O CloudFront grava dados sobre cada solicitação em um arquivo de log específico a essa distribuição. Neste exemplo, informações sobre as solicitações relacionadas à Distribuição A são registradas em um arquivo de log exclusivo para ela. Da mesma forma, informações sobre as solicitações relacionadas à Distribuição B são registradas em um arquivo de log exclusivo para ela.

1. O CloudFront periodicamente salva o arquivo de log de uma distribuição no bucket do Amazon S3 especificado ao habilitar o registro. Depois, o CloudFront começa salvando as informações de solicitações subsequentes em um novo arquivo de log para a distribuição.

   Se nenhum visualizador acessar seu conteúdo em uma hora específica, você não receberá arquivos de log referentes a essa hora.

**nota**  
Recomendamos que você use os logs para compreender a natureza das solicitações do seu conteúdo, não como uma contabilidade completa de todas as solicitações. O CloudFront entrega logs de acesso com base no melhor esforço. A entrada do log de uma solicitação específica pode ser entregue muito depois do processamento da solicitação e, raramente, nunca ser entregue. Quando uma entrada de log for omitida dos logs de acesso, o número de entradas nos logs não corresponderá ao uso exibido nos relatórios de uso e faturamento da AWS.

O CloudFront é compatível com duas versões de registro em log padrão. O registro em log padrão (legado) permite o envio de logs de acesso *somente* ao Amazon S3. O registro em log padrão (v2) permite outros destinos de entrega. Você pode configurar ambos ou qualquer uma das opções de registro em log para sua distribuição. Para saber mais, consulte os seguintes tópicos:

**Topics**
+ [Configurar o registro em log padrão (v2)](standard-logging.md)
+ [Configurar o registro em log padrão (legado)](standard-logging-legacy-s3.md)
+ [Referência do registro em log padrão](standard-logs-reference.md)

**dica**  
O CloudFront também oferece logs de acesso em tempo real, que fornecem informações sobre solicitações feitas a uma distribuição em tempo real (os logs são entregues em segundos após o recebimento das solicitações). É possível usar os logs de acesso em tempo real para monitorar, analisar e executar ações com base no desempenho da entrega de conteúdo. Para obter mais informações, consulte [Usar logs de acesso em tempo real](real-time-logs.md).

# Configurar o registro em log padrão (v2)
<a name="standard-logging"></a>

É possível habilitar os logs de acesso (logs padrão) ao criar ou atualizar uma distribuição. Os recurso do registro em log padrão (v2) permitem o seguinte:
+ Enviar logs de acesso ao Amazon CloudWatch Logs, Amazon Data Firehose e Amazon Simple Storage Service (Amazon S3).
+ Selecionar os campos de log desejados. Também é possível selecionar um [subconjunto de campos de log de acesso em tempo real](#standard-logging-real-time-log-selection).
+ Selecionar formatos adicionais de [arquivo de log de saída](#supported-log-file-format).

Se você estiver usando o Amazon S3, você tem recursos opcionais, como:
+ Enviar logs a Regiões da AWS habilitadas.
+ Organizar os logs com particionamento.
+ Habilitar nomes de arquivos compatíveis com o Hive.

Para obter mais informações, consulte [Enviar logs ao Amazon S3](#send-logs-s3).

Para começar a usar o registro em log padrão, conclua as seguintes etapas:

1. Configure as permissões necessárias para o AWS service (Serviço da AWS) especificado que receberá os logs.

1. Configure o registro em log padrão por meio do console do CloudFront ou da API do CloudWatch.

1. Visualize os logs de acesso.

**nota**  
Se você habilitar o registro em log padrão (v2), isso não afetará nem alterará o registro em log padrão (legado). Você pode continuar usando o registro em log padrão (legado) para sua distribuição, além de usar o registro em log padrão (v2). Para obter mais informações, consulte [Configurar o registro em log padrão (legado)](standard-logging-legacy-s3.md).
Se você já habilitou o registro em log padrão (legado) e deseja habilitar o registro em log padrão (v2) no Amazon S3, recomendamos que especifique um bucket do Amazon S3 *diferente* ou use um *caminho separado* no mesmo bucket (por exemplo, use um prefixo de log ou particionamento). Isso ajuda a controlar quais arquivos de log são associados a qual distribuição e evita que um substitua o outro.

## Permissões
<a name="permissions-standard-logging"></a>

O CloudFront usa os logs fornecidos pelo CloudWatch para entregar logs de acesso. Para habilitar a entrega de registro em log, você precisa de permissões para o AWS service (Serviço da AWS) especificado.

Para ver as permissões necessárias para cada destino de registro em log, escolha um dos tópicos a seguir no *Guia do usuário do Amazon CloudWatch Logs*.
+ [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)
+ [Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)

Depois de configurar as permissões para seu destino de registro em log, você pode habilitar o registro em log padrão para sua distribuição.

**nota**  
O CloudFront permite o envio de logs de acesso a diferentes Contas da AWS (entre contas). Para permitir a entrega entre contas, ambas (sua conta e a conta de recebimento) devem ter as permissões necessárias. Para obter mais informações, consulte a seção [Habilitar o registro em log padrão para entrega entre contas](#enable-standard-logging-cross-accounts) ou [Cross-account delivery example](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#vended-logs-crossaccount-example) no *Guia do usuário do Amazon CloudWatch Logs*. 

## Habilitar o registro padrão
<a name="set-up-standard-logging"></a>

Para habilitar o registro em log padrão, você pode usar o console do CloudFront ou a API do CloudWatch.

**Contents**
+ [Habilitar o registro em log padrão (console do CloudFront)](#access-logging-console)
+ [Habilitar o registro em log padrão (API do CloudWatch)](#enable-access-logging-api)

### Habilitar o registro em log padrão (console do CloudFront)
<a name="access-logging-console"></a>

**Para habilitar o registro em log padrão para uma distribuição do CloudFront (console)**

1. Use o console do CloudFront para [atualizar uma distribuição existente](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure).

1. Escolha a guia **Logging** (Registrar em log).

1. Escolha **Adicionar** e selecione o serviço para receber os logs:
   + CloudWatch Logs
   + Firehose
   + Amazon S3

1. Em **Destino**, selecione o recurso para seu serviço. Se você ainda não criou seu recurso, pode escolher **Criar** ou consultar a documentação a seguir.
   + Para o CloudWatch Logs, insira o **[nome do grupo de logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)**.
   + Para o Firehose, insira o **[fluxo de entrega do Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)**.
   + Para o Amazon S3, insira o **[nome do bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)**. 
**dica**  
Para especificar um prefixo, insira o prefixo após o nome do bucket, como `amzn-s3-demo-bucket.s3.amazonaws.com/MyLogPrefix`. Se você não especificar um prefixo, o CloudFront adicionará um automaticamente para você. Para obter mais informações, consulte [Enviar logs ao Amazon S3](#send-logs-s3).

1. Em **Configurações adicionais: *opcional***, você pode especificar as seguintes opções:

   1. Em **Seleção de campos**, escolha o nome dos campos de log que você deseja entregar ao seu destino. Você pode selecionar [campos de log de acesso](standard-logs-reference.md#BasicDistributionFileFormat) e um subconjunto de [campos de log de acesso em tempo real](#standard-logging-real-time-log-selection).

   1. (Somente para o Amazon S3) Em **Particionamento**, especifique o caminho para particionar os dados do arquivo de log. 

   1. (Somente para o Amazon S3) Em **Formato de arquivo compatível com o Hive**, você pode marcar a caixa de seleção para usar caminhos do S3 compatíveis com o Hive. Isso ajuda a simplificar o carregamento de novos dados em suas ferramentas compatíveis com o Hive.

   1. Em **Formato de saída**, especifique o formato de sua preferência.
**nota**  
Se você escolher **Parquet**, essa opção incorrerá em cobranças do CloudWatch pela conversão dos logs de acesso em Apache Parquet. Para ter mais informações, consulte a seção sobre logs fornecidos em [Definição de preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

   1. Em **Delimitador de campo**, especifique como separar os campos de log. 

1. Conclua as etapas para atualizar ou criar sua distribuição.

1. Para adicionar outro destino, repita as etapas de 3 a 6.

1. Na página **Logs**, verifique se o status dos logs padrão está **ativado** ao lado da distribuição.

1. (Opcional) Para habilitar o registro em log de cookies, escolha **Gerenciar** e **Configurações**, ative **Registro de cookies** e escolha **Salvar alterações**.
**dica**  
O registro em log de cookies é uma configuração global que se aplica a *todos *os registros em log padrão da sua distribuição. Você não pode substituir essa configuração para destinos de entrega separados.

Para ter mais informações sobre a entrega do registro em log padrão e os campos de log, consulte [Referência do registro em log padrão](standard-logs-reference.md).

### Habilitar o registro em log padrão (API do CloudWatch)
<a name="enable-access-logging-api"></a>

Você também pode usar a API do CloudWatch para habilitar o registro em log padrão para suas distribuições. 

**Observações**  
Ao chamar a API do CloudWatch para habilitar o registro em log padrão, você deve especificar a região Leste dos EUA (Norte da Virgínia) (`us-east-1`), mesmo que queira habilitar a entrega entre regiões para outro destino. Por exemplo, se você quiser enviar seus logs de acesso a um bucket do S3 na região Europa (Irlanda) (`eu-west-1`), use a API do CloudWatch na região `us-east-1`.
Há uma opção adicional para incluir cookies no registro em log padrão. Na API do CloudFront, é o parâmetro `IncludeCookies`. Se você configurar o registro em log de acesso usando a API do CloudWatch e especificar que deseja incluir cookies, deverá usar o console ou a API do CloudFront para atualizar sua distribuição e incluir cookies. Caso contrário, o CloudFront não poderá enviar cookies ao destino de log. Para obter mais informações, consulte [Registro em log de cookies](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging).

**Como habilitar o registro em log padrão para uma distribuição (API do CloudWatch)**

1. Depois de criar uma distribuição, obtenha o nome de recurso da Amazon (ARN). 

   Você pode encontrar o ARN na página **Distribuição** no console do CloudFront ou usar a operação de API [GetDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html). Um ARN de distribuição segue o formato `arn:aws:cloudfront::123456789012:distribution/d111111abcdef8`. 

1. Em seguida, use a operação de API [PutDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html) do CloudWatch para criar uma origem de entrega para a distribuição. 

   1. Insira um nome para a origem de entrega.

   1. Passe o `resourceArn` da distribuição. 

   1. Em `logType`, especifique `ACCESS_LOGS` como o tipo de log que será coletado. 

   1.   
**Example Exemplo do comando put-delivery-source da AWS CLI**  

      Veja abaixo um exemplo de configuração de origem de entrega para uma distribuição.

      ```
      aws logs put-delivery-source --name S3-delivery --resource-arn arn:aws:cloudfront::123456789012:distribution/d111111abcdef8 --log-type ACCESS_LOGS
      ```

      **Output**

      ```
      {
       "deliverySource": {
       "name": "S3-delivery",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery-source:S3-delivery",
       "resourceArns": [
       "arn:aws:cloudfront::123456789012:distribution/d111111abcdef8"
       ],
       "service": "cloudfront",
       "logType": "ACCESS_LOGS"
       }
      }
      ```

1. Use a operação de API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html) para configurar onde armazenar os logs. 

   1. Em `destinationResourceArn`, especifique o ARN do destino. Isso pode ser um grupo de logs do CloudWatch Logs, a um fluxo de entrega do Firehose ou um bucket do Amazon S3.

   1. Em `outputFormat`, especifique o formato de saída para os logs.

   1.   
**Example Exemplo do comando put-delivery-destination da AWS CLI**  

      Veja abaixo um exemplo de configuração de destino de entrega para um bucket do Amazon S3.

      ```
      aws logs put-delivery-destination --name S3-destination --delivery-destination-configuration destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket
      ```

      **Output**

      ```
      {
          "name": "S3-destination",
          "arn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
          "deliveryDestinationType": "S3",
          "deliveryDestinationConfiguration": {
              "destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
          }
      }
      ```
**nota**  
Se você estiver entregando logs entre contas, deverá usar a operação de API [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) para atribuir uma política do AWS Identity and Access Management (IAM) à conta de destino. A política do IAM permite a entrega de uma conta para outra.

1. Use a operação de API [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html) para vincular a origem de entrega ao destino que você criou nas etapas anteriores. Essa operação de API associa a fonte de entrega ao destino final.

   1. Para `deliverySourceName`, especifique o nome da origem.

   1. Para `deliveryDestinationArn`, especifique o ARN do destino de entrega.

   1. Para `fieldDelimiter`, especifique a string para separar cada campo de log.

   1. Para `recordFields`, especifique os campos de log que você deseja.

   1. Se você estiver usando o S3, especifique se deseja usar `enableHiveCompatiblePath` e `suffixPath`.  
**Example Exemplo do comando create-delivery da AWS CLI**  

   Veja a seguir um exemplo de criação de entrega. 

   ```
   aws logs create-delivery --delivery-source-name cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination
   ```

   **Output**

   ```
   {
       "id": "abcNegnBoTR123",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery:abcNegnBoTR123",
       "deliverySourceName": "cf-delivery",
       "deliveryDestinationArn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
       "deliveryDestinationType": "S3",
       "recordFields": [
           "date",
           "time",
           "x-edge-location",
           "sc-bytes",
           "c-ip",
           "cs-method",
           "cs(Host)",
           "cs-uri-stem",
           "sc-status",
           "cs(Referer)",
           "cs(User-Agent)",
           "cs-uri-query",
           "cs(Cookie)",
           "x-edge-result-type",
           "x-edge-request-id",
           "x-host-header",
           "cs-protocol",
           "cs-bytes",
           "time-taken",
           "x-forwarded-for",
           "ssl-protocol",
           "ssl-cipher",
           "x-edge-response-result-type",
           "cs-protocol-version",
           "fle-status",
           "fle-encrypted-fields",
           "c-port",
           "time-to-first-byte",
           "x-edge-detailed-result-type",
           "sc-content-type",
           "sc-content-len",
           "sc-range-start",
           "sc-range-end",
           "c-country",
           "cache-behavior-path-pattern"
       ],
        "fieldDelimiter": ""
   }
   ```

1. No console do CloudFront, na página **Logs**, verifique se o status dos logs padrão está **Habilitado** ao lado da distribuição.

   Para ter mais informações sobre a entrega do registro em log padrão e os campos de log, consulte [Referência do registro em log padrão](standard-logs-reference.md).

**nota**  
Para habilitar o registro em log padrão (v2) para o CloudFront usando o AWS CloudFormation, você pode usar as seguintes propriedades do CloudWatch Logs:  
[Delivery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-delivery.html)
[DeliveryDestination](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverydestination.html)
[DeliverySource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverysource.html)
`ResourceArn` é a distribuição do CloudFront e `LogType` deve ser `ACCESS_LOGS` como o tipo de log compatível.

## Habilitar o registro em log padrão para entrega entre contas
<a name="enable-standard-logging-cross-accounts"></a>

Se você habilitar o registro em log padrão para sua Conta da AWS e quiser entregar os logs de acesso a outra conta, configure a conta de origem e a conta de destino corretamente. A *conta de origem* com a distribuição do CloudFront envia os logs de acesso à *conta de destino*.

No procedimento deste exemplo, a conta de origem *111.111.111.111*) envia os respectivos logs de acesso a um bucket do Amazon S3 na conta de destino (*222.222.222.222*). Para enviar logs de acesso a um bucket do Amazon S3 na conta de destino, use a AWS CLI. 

### Configurar a conta de destino
<a name="steps-destination-account"></a>

Para a conta de destino, conclua o procedimento a seguir.

**Como configurar a conta de destino**

1. Para criar o destino da entrega de logs, você pode inserir o comando da AWS CLI a seguir. Este exemplo usa a string `MyLogPrefix` para criar um prefixo para os logs de acesso.

   ```
   aws logs put-delivery-destination --name cloudfront-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"
   ```

   **Output**

   ```
   {
       "deliveryDestination": {
           "name": "cloudfront-delivery-destination",
           "arn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "deliveryDestinationConfiguration": {"destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"}
       }
   }
   ```
**nota**  
Se você especificar um bucket do S3 *sem* um prefixo, o CloudFront anexará automaticamente o `AWSLogs/<account-ID>/CloudFront` como um prefixo que aparece no `suffixPath` do destino de entrega do S3. Para ter mais informações, consulte [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html).

1. Adicione a política de recursos para o destino de entrega de logs a fim de permitir que a conta de origem crie uma entrega de logs.

   Na política a seguir, substitua *111111111111* pelo ID da conta de origem e especifique o ARN do destino de entrega com base na saída da etapa 1. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCreateDelivery",
               "Effect": "Allow",
               "Principal": {"AWS": "111111111111"},
               "Action": ["logs:CreateDelivery"],
               "Resource": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination"
           }
       ]
   }
   ```

------

1. Salve o arquivo, como `deliverypolicy.json`, por exemplo.

1. Para anexar a política anterior ao destino de entrega, digite o comando da AWS CLI a seguir.

   ```
   aws logs put-delivery-destination-policy --delivery-destination-name cloudfront-delivery-destination --delivery-destination-policy file://deliverypolicy.json
   ```

1. Adicione a declaração abaixo à política de bucket do Amazon S3 de destino, substituindo o ARN do recurso e o ID da conta de origem. Essa política permite que a entidade principal do serviço `delivery.logs.amazonaws.com` execute a ação `s3:PutObject`.

   ```
   {
       "Sid": "AWSLogsDeliveryWrite",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": "s3:PutObject",
       "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/*",
       "Condition": {
           "StringEquals": {
               "s3:x-amz-acl": "bucket-owner-full-control",
               "aws:SourceAccount": "111111111111"
           },
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

1. Se você estiver usando o AWS KMS para seu bucket, adicione a declaração a seguir à política de chave do KMS para conceder permissões à entidade principal do serviço `delivery.logs.amazonaws.com`.

   ```
   {
       "Sid": "Allow Logs Delivery to use the key",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:DescribeKey"
       ],
       "Resource": "*",
       "Condition": {
           "StringEquals": {"aws:SourceAccount": "111111111111"},
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

### Configurar a conta de origem
<a name="steps-source-account"></a>

Depois de configurar a conta de destino, siga este procedimento para criar a origem de entrega e habilitar o registro em log para a distribuição na conta de origem.

**Como configurar a conta de origem**

1. Crie uma origem de entrega para o registro em log padrão do CloudFront para que possa enviar arquivos de log ao CloudWatch Logs. 

   Você pode inserir o comando da AWS CLI a seguir, substituindo o nome e o ARN da sua distribuição.

   ```
   aws logs put-delivery-source --name s3-cf-delivery --resource-arn arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC --log-type ACCESS_LOGS
   ```

   **Output**

   ```
   {
       "deliverySource": {
           "name": "s3-cf-delivery",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery-source:s3-cf-delivery",
           "resourceArns": ["arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC"],
           "service": "cloudfront",
           "logType": "ACCESS_LOGS"
       }
   }
   ```

1. Crie uma entrega para associar a origem de entrega de logs da conta de origem e o destino de entrega de logs da conta de destino.

   No comando da AWS CLI a seguir, especifique o ARN do destino de entrega com base na saída da [Etapa 1: configurar a conta de destino](#steps-destination-account).

   ```
   aws logs create-delivery --delivery-source-name s3-cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination
   ```

   **Output**

   ```
   {
       "delivery": {
           "id": "OPmOpLahVzhx1234",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery:OPmOpLahVzhx1234",
           "deliverySourceName": "s3-cf-delivery",
           "deliveryDestinationArn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "recordFields": [
               "date",
               "time",
               "x-edge-location",
               "sc-bytes",
               "c-ip",
               "cs-method",
               "cs(Host)",
               "cs-uri-stem",
               "sc-status",
               "cs(Referer)",
               "cs(User-Agent)",
               "cs-uri-query",
               "cs(Cookie)",
               "x-edge-result-type",
               "x-edge-request-id",
               "x-host-header",
               "cs-protocol",
               "cs-bytes",
               "time-taken",
               "x-forwarded-for",
               "ssl-protocol",
               "ssl-cipher",
               "x-edge-response-result-type",
               "cs-protocol-version",
               "fle-status",
               "fle-encrypted-fields",
               "c-port",
               "time-to-first-byte",
               "x-edge-detailed-result-type",
               "sc-content-type",
               "sc-content-len",
               "sc-range-start",
               "sc-range-end",
               "c-country",
               "cache-behavior-path-pattern"
           ],
           "fieldDelimiter": "\t"
       }
   }
   ```

1. Verifique se a entrega entre contas foi bem-sucedida.

   1. Na conta de *origem*, faça login no console do CloudFront e escolha sua distribuição. Na guia **Registro em log**, em **Tipo**, você verá uma entrada criada para a entrega de logs entre contas do S3.

   1. Na conta de *destino*, faça login no console do Amazon S3 e escolha seu bucket do Amazon S3. Você verá o prefixo `MyLogPrefix` no nome do bucket e quaisquer logs de acesso entregues a essa pasta. 

## Formato do arquivo de saída
<a name="supported-log-file-format"></a>

Dependendo do destino de entrega escolhido, você pode especificar um dos seguintes formatos para arquivos de log:
+ JSON
+ Plain
+ w3c
+ Bruto
+ Parquet (somente para o Amazon S3)

**nota**  
Você só pode definir o formato de saída quando cria o destino de entrega pela primeira vez. Isso não pode ser atualizado mais tarde. Para alterar o formato de saída, exclua a entrega e crie outra.

Para ter mais informações, consulte [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html) na *Referência de API do Amazon CloudWatch Logs*.

## Editar as configurações do registro em log padrão
<a name="standard-logs-v2-edit-settings"></a>

Você pode habilitar ou desabilitar o registro em log e atualizar outras configurações de log usando o [console do CloudFront](https://console.aws.amazon.com/cloudfront/v4/home) ou a API do CloudWatch. As alterações feitas nas configurações de registro são aplicadas em até 12 horas.

Para saber mais, consulte os seguintes tópicos:
+ Para atualizar uma distribuição usando o console do CloudFront, consulte [Atualizar uma distribuição](HowToUpdateDistribution.md).
+ Para atualizar uma distribuição usando a API do CloudFront, consulte [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) na *Referência de API do Amazon CloudFront*.
+ Para ter mais informações sobre as operações de API do CloudWatch Logs, consulte a [Referência de API do Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/Welcome.html).

## Acessar campos de log
<a name="standard-logging-real-time-log-selection"></a>

Você pode selecionar os mesmos campos de registro em log que o registro em log padrão (legado) oferece. Consulte mais informações em [Campos de arquivo de log](standard-logs-reference.md#BasicDistributionFileFormat).

Além disso, você pode selecionar os [campos de log de acesso em tempo real](real-time-logs.md#understand-real-time-log-config) a seguir.

1. `timestamp(ms)`: carimbo de data/hora em milissegundos.

1. `origin-fbl`: o número de segundos de latência de primeiro byte entre o CloudFront e a origem. 

1. `origin-lbl`: o número de segundos de latência de último byte entre o CloudFront e a origem. 

1. `asn`: o número de sistema autônomo (ASN) do visualizador. 

1. `c-country`: um código de país que representa a localização geográfica do visualizador, conforme determinado pelo endereço IP do visualizador. Para obter uma lista de códigos de país, consulte [ISO 3166-1 alfa-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

1. `cache-behavior-path-pattern`: o padrão do caminho que identifica o comportamento de cache que correspondeu à solicitação do visualizador. 

## Enviar logs ao CloudWatch Logs
<a name="send-logs-cloudwatch-logs"></a>

Para enviar logs ao Amazon CloudWatch Logs, crie ou use um grupo de logs existente do CloudWatch Logs. Para ter mais informações sobre grupos de logs do CloudWatch Logs, consulte [Working with Log Groups and Log Streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

Depois de criar o grupo de logs, você deve ter as permissões necessárias para autorizar o registro em log padrão. Para ter mais informações sobre o CloudWatch Logs, consulte [Logs sent to CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs) no *Guia do usuário do Amazon CloudWatch Logs*. 

**Observações**  
Ao especificar o nome do grupo de logs do CloudWatch Logs, use somente o padrão regex `[\w-]`. Para ter mais informações, consulte a operação de API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) na *Referência de API do Amazon CloudWatch Logs*.
Verifique se a política de recursos do grupo de logs não excede o limite de tamanho. Consulte a seção [Log group resource policy size limit considerations](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs) no tópico CloudWatch Logs.

### Exemplo de log de acesso enviado ao CloudWatch Logs
<a name="example-access-logs-cwl"></a>

```
{ 
"date": "2024-11-14", 
"time": "21:34:06", 
"x-edge-location": "SOF50-P2", 
"asn": "16509", 
"timestamp(ms)": "1731620046814", 
"origin-fbl": "0.251", 
"origin-lbl": "0.251", 
"x-host-header": "d111111abcdef8.cloudfront.net", 
"cs(Cookie)": "examplecookie=value" 
}
```

## Enviar logs ao Firehose
<a name="send-logs-kinesis"></a>

Para enviar logs ao Firehose, crie ou use um fluxo de entrega existente do Firehose. Identifica um fluxo de entrega do Amazon Firehose como o destino da entrega de logs. Você deve especificar um fluxo de entrega do Firehose na região Leste dos EUA (Norte da Virgínia) (us-east-1).

Para obter mais informações sobre criar seu fluxo de entrega, consulte [Criar um fluxo de entrega do Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html). 

Depois de criar o fluxo de entrega, você deve ter as permissões necessárias para autorizar o registro em log padrão. Para ter mais informações, consulte [Logs sent do Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose) no *Guia do usuário do Amazon CloudWatch Logs*.

**nota**  
Ao especificar o nome do fluxo do Firehose, use somente o padrão regex `[\w-]`. Para ter mais informações, consulte a operação de API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) na *Referência de API do Amazon CloudWatch Logs*.

### Exemplo de log de acesso enviado ao Firehose
<a name="example-access-logs-firehose"></a>

```
{"date":"2024-11-15","time":"19:45:51","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699951183","origin-fbl":"0.254","origin-lbl":"0.254","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
{"date":"2024-11-15","time":"19:45:52","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699952950","origin-fbl":"0.125","origin-lbl":"0.125","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
```

## Enviar logs ao Amazon S3
<a name="send-logs-s3"></a>

Para enviar logs de acesso ao Amazon S3, crie ou use um bucket do S3 existente. Ao habilitar o registro em log no CloudFront, especifique o nome do bucket. Para ter informações sobre como criar um bucket, consulte [Criação de um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html), no *Guia do usuário do Amazon Simple Storage Service*.

Depois de criar o bucket, você deve ter as permissões necessárias para autorizar o registro em log padrão. Para obter mais informações, consulte [Logs enviados ao Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3) no *Guia do usuário do Amazon CloudWatch Logs*.
+ Após a habilitação do registro em log, a AWS adiciona automaticamente as políticas de bucket necessárias para você.
+ Você também pode usar buckets S3 nas [Regiões da AWS habilitadas](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html).

**nota**  
Se você já habilitou o registro em log padrão (legado) e deseja habilitar o registro em log padrão (v2) no Amazon S3, recomendamos que especifique um bucket do Amazon S3 *diferente* ou use um *caminho separado* no mesmo bucket (por exemplo, use um prefixo de log ou particionamento). Isso ajuda a controlar quais arquivos de log são associados a qual distribuição e evita que um substitua o outro.

**Topics**
+ [Especificar um bucket do S3](#prefix-s3-buckets)
+ [Particionamento](#partitioning)
+ [Formato de nome de arquivo compatível com o Hive](#hive-compatible-file-name-format)
+ [Exemplo de caminhos para acessar logs](#bucket-path-examples)
+ [Exemplo de log de acesso enviado ao Amazon S3](#example-access-logs-s3)

### Especificar um bucket do S3
<a name="prefix-s3-buckets"></a>

Ao especificar um bucket do S3 como destino de entrega, observe os fatores a seguir.

O nome do bucket do S3 só pode usar o padrão regex `[\w-]`. Para ter mais informações, consulte a operação de API [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) na *Referência de API do Amazon CloudWatch Logs*.

Se você especificou um prefixo para o bucket do S3, os logs aparecerão sob esse caminho. Se você não especificar um prefixo, o CloudFront anexará automaticamente o prefixo `AWSLogs/{account-id}/CloudFront` para você. 

Para obter mais informações, consulte [Exemplo de caminhos para acessar logs](#bucket-path-examples).

### Particionamento
<a name="partitioning"></a>

Você pode usar o particionamento para organizar os logs de acesso quando o CloudFront os envia ao bucket do S3. Isso ajuda você a organizar e localizar os logs de acesso com base no caminho que você deseja.

Você pode usar as variáveis a seguir para criar um caminho de pasta.
+ `{DistributionId}` ou `{distributionid}`
+ `{yyyy}`
+ `{MM}`
+ `{dd}`
+ `{HH}`
+ `{accountid}`

Você pode usar qualquer número de variáveis e especificar nomes de pasta em seu caminho. O CloudFront então usa esse caminho para criar uma estrutura de pastas para você no bucket do S3.

**Exemplos**
+ `my_distribution_log_data/{DistributionId}/logs`
+ `/cloudfront/{DistributionId}/my_distribution_log_data/{yyyy}/{MM}/{dd}/{HH}/logs `

**nota**  
 Você pode usar qualquer uma das variáveis para o ID da distribuição no caminho do sufixo. No entanto, se você estiver enviando logs de acesso ao AWS Glue, use a variável `{distributionid}` porque o AWS Glue supõe que os nomes de partição estejam em minúsculas. Atualize a configuração de log existente no CloudFront para substituir `{DistributionId}` por `{distributionid}`. 

### Formato de nome de arquivo compatível com o Hive
<a name="hive-compatible-file-name-format"></a>

Você pode usar essa opção para que os objetos do S3 que contêm logs de acesso entregues usem uma estrutura de prefixo que permita a integração com o Apache Hive. Para ter mais informações, consulte a operação de API [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html).

**Example Exemplo**  

```
/cloudfront/DistributionId={DistributionId}/my_distribution_log_data/year={yyyy}/month={MM}/day={dd}/hour={HH}/logs
```

Para ter mais informações sobre particionamento e as opções compatíveis com o Hive, consulte o elemento [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html) na *Referência de API do Amazon CloudWatch Logs*.

### Exemplo de caminhos para acessar logs
<a name="bucket-path-examples"></a>

Ao especificar um bucket do S3 como destino, você pode usar as seguintes opções para criar o caminho para os logs de acesso:
+ Um bucket do Amazon S3, com ou sem prefixo
+ Particionamento, usando uma variável fornecida pelo CloudFront ou inserindo sua própria
+ Habilitar a opção compatível com o Hive

As tabelas a seguir mostram como os logs de acesso aparecem no bucket, dependendo das opções que você escolher.

#### Bucket do Amazon S3 com um prefixo
<a name="bucket-with-prefix"></a>


| Nome do bucket do Amazon S3 | Partição que você especifica no caminho do sufixo | Caminho de sufixo atualizado | Compatibilidade com o Hive habilitada? | Os logs de acesso são enviados para | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket/MyLogPrefix | Nenhum | Nenhum | Não | amzn-s3-demo-bucket/MyLogPrefix/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/ | myFolderA/ | Não | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/\$1yyyy\$1 | myFolderA/\$1yyyy\$1 | Sim | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/year=2025 | 

#### Bucket do Amazon S3 com um prefixo
<a name="bucket-without-prefix"></a>


| Nome do bucket do Amazon S3 | Partição que você especifica no caminho do sufixo | Caminho de sufixo atualizado | Compatibilidade com o Hive habilitada? | Os logs de acesso são enviados para | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | Nenhum | AWSLogs/\$1account-id\$1/CloudFront/ | Não | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | Não | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | Sim | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/\$1yyyy\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1yyyy\$1 | Sim | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/year=2025 | 

#### ID da Conta da AWS como uma partição
<a name="bucket-account-id-partition"></a>


| Nome do bucket do Amazon S3 | Partição que você especifica no caminho do sufixo | Caminho de sufixo atualizado | Compatibilidade com o Hive habilitada? | Os logs de acesso são enviados para | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | Nenhum | AWSLogs/\$1account-id\$1/CloudFront/ | Sim | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/\$1accountid\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1accountid\$1 | Sim | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/accountid=<your-account-ID> | 

**Observações**  
A variável `{account-id}` é reservada para o CloudFront. O CloudFront adiciona automaticamente essa variável ao caminho de sufixo se você especificar um bucket do Amazon S3 *sem* um prefixo. Se os logs forem compatíveis com o Hive, essa variável aparecerá como `aws-account-id`.
Você pode usar a variável `{accountid}` para que o CloudFront adicione o ID da sua conta ao caminho do sufixo. Se os logs forem compatíveis com o Hive, essa variável aparecerá como `accountid`.
Para ter mais informações sobre o caminho do sufixo, consulte [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html).

### Exemplo de log de acesso enviado ao Amazon S3
<a name="example-access-logs-s3"></a>

```
#Fields: date time x-edge-location asn timestamp(ms) x-host-header cs(Cookie)
2024-11-14    22:30:25    SOF50-P2    16509    1731623425421    
d111111abcdef8.cloudfront.net    examplecookie=value2
```

## Desabilitar o registro em log padrão
<a name="delete-standard-log-destination"></a>

Você pode desabilitar o registro em log padrão da sua distribuição caso não precise mais dele.

**Como desabilitar o registro em log padrão**

1. Faça login no console do CloudFront.

1. Selecione **Distribuição** e escolha o ID de sua distribuição. 

1. Escolha **Registro em log** e, em **Destinos de log de acesso**, selecione o destino.

1. Selecione **Gerenciar** e, em seguida, **Excluir**.

1. Repita a etapa anterior se você tiver mais de um registro em log padrão.

**nota**  
Quando você exclui o registro em log padrão do console do CloudFront, essa ação exclui somente a entrega e o destino da entrega. Isso não exclui a origem de entrega da sua Conta da AWS. Para excluir uma origem de entrega, especifique o nome da origem de entrega no comando `aws logs delete-delivery-source --name DeliverySourceName`. Para ter mais informações, consulte [DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html) na *Referência de API do Amazon CloudWatch Logs*.

## Solução de problemas
<a name="troubleshooting-access-logs-v2"></a>

Use as informações a seguir para corrigir problemas comuns ao trabalhar com o registro em log padrão (v2) do CloudFront.

### A origem de entrega já existe
<a name="access-logging-resource-already-used"></a>

Ao habilitar o registro em log padrão para uma distribuição, você cria uma origem de entrega. Em seguida, você usa essa origem de entrega para criar entregas para o tipo de destino desejado: CloudWatch Logs, Firehose e Amazon S3. No momento, você só pode ter uma origem de entrega por distribuição. Se você tentar criar outra origem de entrega para a mesma distribuição, a mensagem de erro a seguir será exibida.

```
This ResourceId has already been used in another Delivery Source in this account
```

Para criar outra origem de entrega, exclua primeiro a existente. Para ter mais informações, consulte [DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html) na *Referência de API do Amazon CloudWatch Logs*.

### Alterei o caminho do sufixo e o bucket do Amazon S3 não pode receber meus logs
<a name="access-logging-s3-permission"></a>

Se você habilitou o registro em log padrão (v2) e especificou um ARN de bucket sem prefixo, o CloudFront anexará o seguinte padrão ao caminho do sufixo: `AWSLogs/{account-id}/CloudFront`. Se você usar o console do CloudFront ou a operação de API [UpdateDeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateDeliveryConfiguration.html) para especificar um caminho de sufixo diferente, deverá atualizar a política de bucket do Amazon S3 para usar o mesmo caminho.

**Example Exemplo: atualização do caminho do sufixo**  

1. O caminho de sufixo padrão é `AWSLogs/{account-id}/CloudFront` e você o substitui por `myFolderA`. 

1. Como o novo caminho de sufixo é diferente do caminho especificado na política de bucket do Amazon S3, os logs de acesso não serão entregues.

1. Você pode seguir uma destas etapas:
   + Atualize a permissão do bucket do Amazon S3 de `amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/*` para `amzn-s3-demo-bucket/myFolderA/*`.
   + Atualize a configuração de registro em log para usar o sufixo padrão novamente: `AWSLogs/{account-id}/CloudFront` 
Para obter mais informações, consulte [Permissões](#permissions-standard-logging).

## Excluir arquivos de log
<a name="standard-logs-v2-delete"></a>

O CloudFront não exclui automaticamente os arquivos de log do seu destino. Para ter informações sobre como excluir arquivos de log, consulte os seguintes tópicos:

**Amazon S3**
+ [Excluir objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html) no *Guia de usuário do Amazon Simple Storage Service*

**CloudWatch Logs**
+ [Working with log groups and log streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) no *Guia do usuário do Amazon CloudWatch Logs*
+ [DeleteLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteLogGroup.html) na *Referência de API do Amazon CloudWatch Logs*

**Firehose**
+ [DeleteDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStream.html) na *Referência de API do Amazon Data Firehose*

## Preços
<a name="pricing-standard-logs"></a>

O CloudFront não cobra pela habilitação de logs padrão. Entretanto, você pode incorrer em cobranças pela entrega, ingestão, armazenamento ou acesso, dependendo do destino de entrega de log selecionado. Para ter mais informações, consulte [Definição de preço do Amazon CloudWatch Logs](https://aws.amazon.com/cloudwatch/pricing/). Em **Nível pago**, escolha a guia **Logs** e, em **Logs fornecidos**, consulte as informações referentes a cada destino de entrega.

Para ter mais informações sobre o preço de cada AWS service (Serviço da AWS), consulte os seguintes tópicos:
+ [Definição de preço do Amazon CloudWatch Logs](https://aws.amazon.com/cloudwatch/pricing/)
+ [Definição de preço do Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/pricing/)
+ [Preços do Amazon S](https://aws.amazon.com/s3/pricing/) 
**nota**  
Não há cobranças adicionais pela entrega de logs para o Amazon S3, embora você incorra em cobranças do Amazon S3 pelo armazenamento e acesso aos arquivos de log. Se você habilitar a opção **Parquet** para converter os logs de acesso em Apache Parquet, essa opção incorrerá em cobranças do CloudWatch. Para ter mais informações, consulte a seção sobre logs fornecidos em [Definição de preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

# Configurar o registro em log padrão (legado)
<a name="standard-logging-legacy-s3"></a>

**Observações**  
Este tópico destina-se à versão anterior do registro em log padrão. Para obter a versão mais recente, consulte [Configurar o registro em log padrão (v2)](standard-logging.md).
Se você já habilitou o registro em log padrão (legado) e deseja habilitar o registro em log padrão (v2) no Amazon S3, recomendamos que especifique um bucket do Amazon S3 *diferente* ou use um *caminho separado* no mesmo bucket (por exemplo, use um prefixo de log ou particionamento). Isso ajuda a controlar quais arquivos de log são associados a qual distribuição e evita que um substitua o outro.

Para começar a usar o registro em log padrão (legado), conclua as seguintes etapas:

1. Escolha o bucket do Amazon S3 que receberá os logs e adicione as permissões necessárias.

1. Configure o registro em log padrão (legado) por meio do console ou da API do CloudFront. Você só pode escolher um bucket do Amazon S3 para receber os logs.

1. Visualize os logs de acesso.

## Escolher um bucket do Amazon S3 para logs padrão
<a name="access-logs-choosing-s3-bucket"></a>

Ao habilitar o registro de uma distribuição, você especifica o bucket do Amazon S3 no qual deseja que o CloudFront armazene os arquivos de log. Se você estiver usando o Amazon S3 como origem, recomendamos usar um bucket *separado* para os arquivos de log.

Especifique o bucket do Amazon S3 no qual você deseja que o CloudFront armazene logs de acesso; por exemplo, `amzn-s3-demo-bucket.s3.amazonaws.com`.

Você pode armazenar os arquivos de log de várias distribuições no mesmo bucket. Ao habilitar o registro, você pode especificar um prefixo opcional para os nomes dos arquivos, a fim de diferenciar quais arquivos de log são associados a quais distribuições.

**Como escolher um bucket do S3**  
O bucket deve ter a lista de controle de acesso (ACL) habilitada. Se você escolher um bucket sem a ACL habilitada no console do CloudFront, será exibida uma mensagem de erro. Consulte [Permissões](#AccessLogsBucketAndFileOwnership).
Não escolha um bucket do Amazon S3 com [Propriedade do objeto do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) configurado como **imposto pelo proprietário do bucket**. Essa configuração desativa as ACLs para o bucket e os objetos nele contidos, o que impede que o CloudFront entregue arquivos de log para o bucket.[Registro em log padrão V2](standard-logging.md)[Regiões da AWS](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html)

## Permissões
<a name="AccessLogsBucketAndFileOwnership"></a>

**Importante**  
A partir de abril de 2023, será necessário habilitar as ACLs do S3 para novos buckets do S3 usados para os logs padrão do CloudFront. É possível habilitar ACLs ao [criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-new-bucket.html) ou habilitar ACLs para um [bucket existente](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-existing-bucket.html).  
Para obter mais informações sobre as alterações, consulte [Perguntas frequentes sobre configurações padrão para novos buckets do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-faq.html) no *Guia do usuário do Amazon Simple Storage Service* e em [Alerta: Alterações na segurança do Amazon S3 chegarão em abril de 2023](https://aws.amazon.com/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/) no *blog de notícias da AWS.*

Sua Conta da AWS deve ter as seguintes permissões para o bucket especificado para os arquivos de log:
+ A ACL do bucket deve conceder `FULL_CONTROL` a você. Se você for o proprietário do bucket, sua conta terá essa permissão por padrão. Em caso negativo, o proprietário do bucket deverá atualizar a ACL do bucket.
+ `s3:GetBucketAcl`
+ `s3:PutBucketAcl`

**ACL do bucket**  
Ao criar ou atualizar uma distribuição e habilitar o registro em log, o CloudFront usa essas permissões para atualizar a ACL do bucket a fim de fornecer à conta `awslogsdelivery` a permissão `FULL_CONTROL`. A conta `awslogsdelivery` grava arquivos de log no bucket. Caso sua conta não tenha as permissões necessárias para atualizar a ACL, ocorrerá uma falha na criação ou atualização da distribuição.  
Em alguns casos, se você enviar, de forma programática, uma solicitação para criar um bucket, mas já existir um bucket com o nome especificado, o S3 redefinirá as permissões do bucket para o valor padrão. Se você configurou o CloudFront para salvar os logs de acesso em um bucket do S3 e interromper o registro nesse bucket, verifique as permissões dele para garantir que o CloudFront tenha as permissões necessárias.

**Restauração da ACL do bucket**  
Se você remover as permissões da conta `awslogsdelivery`, o CloudFront não poderá salvar os logs no bucket do S3. Para permitir que o CloudFront comece a salvar logs para sua distribuição novamente, restaure a permissão da ACL de uma das seguintes maneiras:  
+ Desabilite o registro em log de sua distribuição no CloudFront e habilite-o novamente. Para obter mais informações, consulte [Registro em log padrão](DownloadDistValuesGeneral.md#DownloadDistValuesLoggingOnOff).
+ Adicione a permissão da ACL para `awslogsdelivery` manualmente navegando até o bucket do S3 no console do Amazon S3 e adicionando a permissão. Para adicionar a ACL para `awslogsdelivery`, você deve fornecer o ID canônico da conta, que é o seguinte:

  `c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0`

  

  Consulte mais informações sobre como adicionar ACLs a buckets do S3 em [Configurar ACLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html) no *Guia do usuário do Amazon Simple Storage Service*.

**ACL para cada arquivo de log**  
Além da ACL no bucket, há uma ACL em cada arquivo de log. O proprietário do bucket tem permissão `FULL_CONTROL` em cada arquivo de log, o proprietário da distribuição (se não for o proprietário do bucket) não tem permissão e a conta `awslogsdelivery` tem permissões de leitura e de gravação. 

**Como desabilitar o registro**  
Se você desabilitar o registro, o CloudFront não excluirá as ACLs do bucket nem dos arquivos de log. Você pode excluir as ACLs, se necessário.

### Política de chaves obrigatória para buckets do SSE-KMS
<a name="AccessLogsKMSPermissions"></a>

Se o bucket do S3 para os logs padrão usar criptografia do lado do servidor com AWS KMS keys (SSE-KMS) usando uma chave gerenciada pelo cliente, você deverá adicionar a instrução a seguir à política de chaves para a chave gerenciada pelo cliente. Isso permite que o CloudFront grave arquivos de log no bucket. Não é possível usar a SSE-KMS com a Chave gerenciada pela AWS porque o CloudFront não poderá gravar arquivos de log no bucket.

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}
```

Se o bucket do S3 para os logs padrão usar SSE-KMS com uma [Chave de bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html), você também precisará adicionar a permissão `kms:Decrypt` à instrução da política. Nesse caso, a declaração de política completa se parece com a seguinte.

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*"
}
```

**nota**  
Ao habilitar a SSE-KMS para o bucket do S3, especifique o ARN completo para a chave gerenciada pelo cliente. Consulte mais informações em [Especificando criptografia no lado do servidor com o AWS KMS keys (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

## Habilitar o registro em log padrão (legado)
<a name="standard-logs-legacy-enable"></a>

Para habilitar logs padrão, use o console ou a API do CloudFront.

**Contents**
+ [Habilitar o registro em log padrão (legado) (console do CloudFront)](#standard-logs-legacy-enable-console)
+ [Habilitar o registro em log padrão (legado) (API do CloudFront)](#standard-logs-legacy-enable-api)

### Habilitar o registro em log padrão (legado) (console do CloudFront)
<a name="standard-logs-legacy-enable-console"></a>

**Como habilitar logs padrão para uma distribuição do CloudFront (console)**

1. Use o console do CloudFront para criar uma [nova distribuição](distribution-web-creating-console.md) ou [atualizar uma existente](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure).

1. Na seção **Registro em log padrão**, em **Entrega de logs**, escolha **Ativado**.

1. (Opcional) Em **Registro de cookie**, escolha **Ativado** se quiser incluir cookies nos logs. Para obter mais informações, consulte [Registro em log de cookies](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging).
**dica**  
O registro em log de cookies é uma configuração global que se aplica a *todos *os logs padrão da sua distribuição. Você não pode substituir essa configuração para destinos de entrega separados.

1. Na seção **Entregar para**, especifique **Amazon S3 (legado)**.

1. Especifique o bucket do Amazon S3. Se você ainda não tiver um, pode escolher **Criar** ou ver a documentação para [criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html).

1. (Opcional) Em **Prefixo de log**, especifique a string, se houver, a ser prefixada pelo CloudFront nos nomes de arquivo de log de acesso para essa distribuição; por exemplo, `exampleprefix/`. A barra no final (/) é opcional, mas recomendada para simplificar a navegação em seus arquivos de log. Para obter mais informações, consulte [Prefixo de log](DownloadDistValuesGeneral.md#DownloadDistValuesLogPrefix).

1. Conclua as etapas para atualizar ou criar sua distribuição.

1. Na página **Logs**, verifique se o status dos logs padrão está **ativado** ao lado da distribuição.

   Para ter mais informações sobre a entrega do registro em log padrão e os campos de log, consulte [Referência do registro em log padrão](standard-logs-reference.md).

### Habilitar o registro em log padrão (legado) (API do CloudFront)
<a name="standard-logs-legacy-enable-api"></a>

Você também pode usar a API do CloudFront para habilitar o registro em log padrão para suas distribuições. 

**Como habilitar logs padrão para uma distribuição (API do CloudFront)**
+ Use a operação de API [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) ou [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) e configure o objeto [LoggingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_LoggingConfig.html).

## Editar as configurações do registro em log padrão
<a name="ChangeSettings"></a>

Você pode habilitar ou desabilitar o registro, alterar o bucket do Amazon S3 no qual os logs são armazenados e alterar o prefixo dos arquivos de log usando o console ou a API do [CloudFront](https://console.aws.amazon.com/cloudfront/v4/home). As alterações feitas nas configurações de registro são aplicadas em até 12 horas.

Para obter mais informações, consulte os tópicos a seguir:
+ Para atualizar uma distribuição usando o console do CloudFront, consulte [Atualizar uma distribuição](HowToUpdateDistribution.md).
+ Para atualizar uma distribuição usando a API do CloudFront, consulte [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) na *Referência de API do Amazon CloudFront*.

## Enviar logs ao Amazon S3
<a name="standard-logs-in-s3"></a>

Quando você envia logs ao Amazon S3, eles aparecem no formato a seguir.

### Formato do nome do arquivo
<a name="AccessLogsFileNaming"></a>

O nome de cada arquivo de log salvo pelo CloudFront no seu bucket do Amazon S3 usa o seguinte formato do nome do arquivo:

`<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz`

A data e a hora estão em Tempo Universal Coordenado (UTC).

Por exemplo, se você usar `example-prefix` como prefixo e seu ID de distribuição for `EMLARXS9EXAMPLE`, seus nomes de arquivo serão semelhantes a este:

`example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz`

Ao habilitar o registro para uma distribuição, você pode especificar um prefixo opcional para os nomes dos arquivos, a fim de diferenciar quais arquivos de log são associados a quais distribuições. Se você incluir um valor para o prefixo do arquivo de log e seu prefixo não terminar com uma barra (`/`), o CloudFront acrescentará uma automaticamente. Se o seu prefixo terminar com uma barra, o CloudFront não adicionará outra.

O `.gz` no fim do nome do arquivo indica que o CloudFront compactou o arquivo de log usando gzip.

## Formato de arquivo de log padrão
<a name="LogFileFormat"></a>

Cada entrada em um arquivo de log fornece detalhes sobre uma única solicitação do visualizador. Os arquivos de log têm as seguintes características:
+ Use o [formato do arquivo de log estendido do W3C](https://www.w3.org/TR/WD-logfile.html).
+ Contêm valores separados por tabulação.
+ Contêm registros não necessariamente em ordem cronológica.
+ Contém duas linhas de cabeçalho: uma com a versão do formato do arquivo e outra que relaciona os campos do W3C incluídos em cada registro.
+ Contém equivalentes codificados em URL para espaços e alguns outros caracteres em valores de campo.

  Equivalentes codificados em URL são usados para os seguintes caracteres:
  + Códigos de caracteres ASCII 0 a 32, inclusive
  + Códigos de caracteres ASCII 127 e posterior
  + Todos os caracteres na tabela a seguir

  O padrão de codificação de URL é definido no [RFC 1738](https://tools.ietf.org/html/rfc1738.html).


|  Valor codificado em URL  |  Caractere  | 
| --- | --- | 
|  %3C  |  <  | 
|  %3E  |  >  | 
|  %22  |  "  | 
|  %23  |  \$1  | 
|  %25  |  %  | 
|  %7B  |  \$1  | 
|  %7D  |  \$1  | 
|  %7C  |  \$1  | 
|  %5C  |  \$1  | 
|  %5E  |  ^  | 
|  %7E  |  \$1  | 
|  %5B  |  [  | 
|  %5D  |  ]  | 
|  %60  |  `  | 
|  %27  |  '  | 
|  %20  |  espaço  | 

## Excluir arquivos de log
<a name="DeletingLogFiles"></a>

O CloudFront não exclui automaticamente os arquivos de log do bucket do Amazon S3. Para ter informações sobre como excluir arquivos de log de um bucket do Amazon S3, consulte [Excluir objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html) no *Guia do usuário do Amazon Simple Storage Service*.

## Preços
<a name="AccessLogsCharges"></a>

O registro em log padrão é um recurso opcional do CloudFront. O CloudFront não cobra pela habilitação de logs padrão. No entanto, você acumula as cobranças normais do Amazon S3 para armazenar e acessar os arquivos nele. É possível excluí-los a qualquer momento.

Para mais informações sobre a definição de preço do Amazon S3, consulte [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

Para mais informações sobre preços do CloudFront, consulte [Definição de preço do CloudFront](https://aws.amazon.com/cloudfront/pricing/).

# Referência do registro em log padrão
<a name="standard-logs-reference"></a>

As seções a seguir se aplicam tanto ao registro em log padrão (v2) quanto ao registro em log padrão (legado).

**Topics**
+ [Prazos de entrega dos arquivos de log](#access-logs-timing)
+ [Como as solicitações são registradas em log quando os cabeçalhos ou o URL de solicitação excedem o tamanho máximo](#access-logs-request-URL-size)
+ [Campos de arquivo de log](#BasicDistributionFileFormat)
+ [Analisar logs](#access-logs-analyzing)

## Prazos de entrega dos arquivos de log
<a name="access-logs-timing"></a>

O CloudFront oferece logs para uma distribuição até várias vezes por hora. Em geral, um arquivo de log contém informações sobre as solicitações recebidas pelo CloudFront durante um período específico. O CloudFront geralmente entrega o arquivo de log desse período ao seu destino em até uma hora após os eventos exibidos no log. No entanto, observe que algumas ou todas as entradas do arquivo de log referentes a um período podem demorar até 24 horas. Quando as entradas de log atrasam, o CloudFront as salva em um arquivo de log no qual o nome do arquivo inclui a data e a hora do período de *ocorrência* das solicitações, não de entrega do arquivo.

Ao criar um arquivo de log, o CloudFront consolida as informações da sua distribuição de todos os pontos de presença que receberam solicitações de seus objetos durante o período de cobertura do arquivo de log.

O CloudFront pode salvar mais de um arquivo por período, dependendo da quantidade de solicitações recebidas pelo CloudFront dos objetos associados a uma distribuição.

O CloudFront começa a entregar os logs de acesso cerca de quatro horas depois de você habilitar o registro. É possível que você receba alguns logs de acesso antes disso.

**nota**  
Se nenhum usuário solicitar seus objetos nesse período, você não receberá arquivos de log referentes a ele.

## Como as solicitações são registradas em log quando os cabeçalhos ou o URL de solicitação excedem o tamanho máximo
<a name="access-logs-request-URL-size"></a>

Se o tamanho total de todos os cabeçalhos de solicitação, incluindo cookies, exceder 20 KB, ou se o URL exceder 8192 bytes, o CloudFront não poderá analisar a solicitação completamente e não poderá registrá-la. Como a solicitação não está conectada, você não verá no log os arquivos que o código de status de erro HTTP retornou.

Se o corpo da solicitação exceder o tamanho máximo, a solicitação será registrada, incluindo o código de status de erro HTTP.

## Campos de arquivo de log
<a name="BasicDistributionFileFormat"></a>

O arquivo de log para uma distribuição contém 33 campos. A lista a seguir contém cada nome de campo, em ordem, juntamente com uma descrição das informações nesse campo.

1. **`date`**

   A data em que o evento ocorreu no formato `YYYY-MM-DD`. Por exemplo, `2019-06-30`. A data e a hora estão em Tempo Universal Coordenado (UTC). Para conexões WebSockets, esta é a data em que a conexão foi encerrada.

1. **`time`**

   A hora em que o servidor do CloudFront terminou de responder à solicitação (em UTC), por exemplo, `01:42:39`. Para conexões WebSockets, este é o momento em que a conexão é fechada.

1. **`x-edge-location`**

   O ponto de presença que atendeu à solicitação. Cada ponto de presença é identificado por um código de três letras e um número atribuído arbitrariamente (por exemplo, DFW3). O código de três letras normalmente corresponde ao código da Associação Internacional de Transportes Aéreos (IATA) de um aeroporto perto da localização geográfica do local da borda. (Essas abreviações podem mudar no futuro.)

1. **`sc-bytes`**

   O número total de bytes enviados pelo servidor para o visualizador em resposta à solicitação, inclusive os cabeçalhos. Para conexões WebSocket e gRPC, esse é o número total de bytes enviados do servidor para o cliente por meio da conexão.

1. **`c-ip`**

   O endereço IP do visualizador que fez a solicitação, por exemplo, `192.0.2.183` ou `2001:0db8:85a3::8a2e:0370:7334`. Se o visualizador usar um proxy HTTP ou um load balancer para enviar a solicitação, o valor desse campo será o endereço IP do proxy ou do load balancer. Veja também o campo `x-forwarded-for`.

1. **`cs-method`**

   O método de solicitação HTTP recebido do visualizador.

1. **`cs(Host)`**

   O nome de domínio da distribuição do CloudFront (por exemplo, d111111abcdef8.cloudfront.net).

1. **`cs-uri-stem`**

   A parte do URL da solicitação que identifica o caminho e o objeto (por exemplo, `/images/cat.jpg`). Os pontos de interrogação (?) em URLs e strings de consulta não são incluídos no log.

1. **`sc-status`**

   Contém um dos seguintes valores:
   + O código de status HTTP da resposta do servidor (por exemplo, `200`).
   + `000`, que indica que o visualizador fechou a conexão antes que o servidor pudesse responder à solicitação. Se o visualizador fecha a conexão após o servidor começar a enviar a resposta, esse campo contém o código de status HTTP da resposta que o servidor começou a enviar.

1. **`cs(Referer)`**

   O valor do cabeçalho `Referer` na solicitação. Esse é o nome do domínio que originou a solicitação. Indicadores comuns incluem: mecanismos de pesquisa, outros sites vinculados diretamente aos seus objetos e seu próprio site.

1. **`cs(User-Agent)`**

   O valor do cabeçalho `User-Agent` na solicitação. O cabeçalho `User-Agent` identifica a origem da solicitação, como o tipo de dispositivo e o navegador que enviou a solicitação e, se a solicitação for proveniente de um mecanismo de pesquisa, o mecanismo de pesquisa.

1. **`cs-uri-query`**

   A parte da string de consulta do URL da solicitação, se houver.

   Quando um URL não contém uma string de consulta, o valor desse campo é um hífen (-). Para obter mais informações, consulte [Conteúdo em cache com base em parâmetros de string de consulta](QueryStringParameters.md).

1. **`cs(Cookie)`**

   O cabeçalho `Cookie` na solicitação, incluindo pares de nome-valor e os atributos associados.

   Se você habilitar o registro de cookies, o CloudFront os registrará em todas as solicitações, independentemente de quais você optar por encaminhar para a origem. Quando uma solicitação não inclui um cabeçalho de cookie, o valor desse campo é um hífen (-). Para obter mais informações sobre cookies, consulte [Conteúdo em cache com base em cookies](Cookies.md).

1. **`x-edge-result-type`**

   Como o servidor classificou a resposta após o último byte sair do servidor. Em alguns casos, o tipo de resultado pode mudar entre a hora em que o servidor está pronto para enviar a resposta e a hora em que ele conclui o envio. Veja também o campo `x-edge-response-result-type`.

   Por exemplo, em streaming HTTP, suponha que o servidor encontre um segmento do stream no cache. Nesse cenário, o valor desse campo normalmente seria `Hit`. No entanto, se o visualizador encerrar a conexão antes de o servidor entregar o segmento inteiro, o tipo do resultado final (e, portanto, o valor desse campo) será `Error`.

   As conexões WebSocket e gRPC terão um valor de `Miss` para esse campo porque o conteúdo não é armazenável em cache e é enviado diretamente de volta ao servidor de origem.

   Os possíveis valores incluem:
   + `Hit`: o servidor forneceu o objeto do cache ao visualizador.
   + `RefreshHit`: o servidor encontrou o objeto no cache, mas o objeto expirou, portanto, o servidor entrou em contato com a origem para verificar se o cache tinha a versão mais recente do objeto.
   + `Miss`: não foi possível atender à solicitação por um objeto no cache e, portanto, o servidor a encaminhou ao servidor de origem e retornou o resultado ao visualizador.
   + `LimitExceeded`: a solicitação foi negada porque uma cota do CloudFront (anteriormente conhecida como limite) foi excedida.
   + `CapacityExceeded`: o servidor retornou um código de status HTTP 503 porque não tinha capacidade suficiente no momento da solicitação para fornecer o objeto.
   + `Error`: normalmente, isso significa que a solicitação resultou em um erro de cliente (o valor do campo `sc-status` está no intervalo `4xx`) ou em um erro de servidor (o valor do campo `sc-status` está no intervalo `5xx`). Se o valor do campo `sc-status` for `200` ou se o valor desse campo for `Error` e o valor do campo `x-edge-response-result-type` não for `Error`, isso significa que a solicitação HTTP foi bem-sucedida, mas o cliente desconectou antes de receber todos os bytes.
   + `Redirect`: o servidor redirecionou o visualizador de HTTP para HTTPS de acordo com as configurações de distribuição.
   + `LambdaExecutionError`: a função Lambda@Edge associada à distribuição não foi concluída devido a uma má-formação da associação, um tempo limite de função, um problema de dependência da AWS ou outro problema de disponibilidade geral.

1. **`x-edge-request-id`**

   Uma string opaca que identifica exclusivamente uma solicitação. O CloudFront também envia essa string no cabeçalho de resposta `x-amz-cf-id`.

1. **`x-host-header`**

   O valor incluído pelo visualizador no cabeçalho `Host` da solicitação. Se você estiver usando o nome de domínio do CloudFront nos URLs de objetos (como d111111abcdef8.cloudfront.net), esse campo conterá esse nome de domínio. Se você estiver usando nomes de domínio alternativos (CNAMES) nos URLs de objetos (como www.example.com), esse campo conterá o nome de domínio alternativo.

   Se você estiver usando nomes de domínio alternativos, consulte `cs(Host)` no campo 7 do nome de domínio associado a sua distribuição.

1. **`cs-protocol`**

   O protocolo da solicitação do visualizador (`http`, `https`, `grpcs`, `ws` ou `wss`).

1. **`cs-bytes`**

   O número de bytes de dados que o visualizador adicionou à solicitação, incluindo cabeçalhos. Para conexões WebSocket e gRPC, esse é o número total de bytes enviados do cliente para o servidor na conexão.

1. **`time-taken`**

   O número de segundos (até o milésimo de segundo, por exemplo, 0,082) de quando o servidor recebe a solicitação do visualizador até quando o servidor grava o último byte da resposta na fila de saída, conforme medido no servidor. Da perspectiva do visualizador, o tempo total para obter o objeto completo será mais longo que esse valor devido à latência da rede e o armazenamento em buffer do TCP.

1. **`x-forwarded-for`**

   Se o visualizador usar um proxy HTTP ou um load balancer para enviar a solicitação, o valor do campo `c-ip` será o endereço IP do proxy ou do load balancer. Nesse caso, esse campo é o endereço IP do visualizador que originou a solicitação. Esse campo pode conter vários endereços IP separados por vírgula. Cada endereço IP pode ser um endereço IPv4 (por exemplo, `192.0.2.183`) ou um endereço IPv6 (por exemplo, `2001:0db8:85a3::8a2e:0370:7334`).

   Se o visualizador não tiver usado um proxy HTTP ou um load balancer, o valor deste campo será um hífen (-).

1. **`ssl-protocol`**

   Quando a solicitação usa HTTPS, esse campo contém o protocolo SSL/TLS que o visualizador e o servidor negociaram para transmitir a solicitação e a resposta. Para obter uma lista de valores possíveis, consulte os protocolos SSL/TLS compatíveis em [Protocolos e cifras compatíveis entre visualizadores e o CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

   Quando `cs-protocol` no campo 17 for `http`, o valor desse campo será um hífen (-).

1. **`ssl-cipher`**

   Quando a solicitação usa HTTPS, esse campo contém a cifra SSL/TLS que o visualizador e o servidor negociaram para criptografar a solicitação e a resposta. Para obter uma lista de valores possíveis, consulte as cifras SSL/TLS compatíveis em [Protocolos e cifras compatíveis entre visualizadores e o CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

   Quando `cs-protocol` no campo 17 for `http`, o valor desse campo será um hífen (-).

1. **`x-edge-response-result-type`**

   Como o servidor classificou a resposta logo antes de devolvê-la para o visualizador. Veja também o campo `x-edge-result-type`. Os possíveis valores incluem:
   + `Hit`: o servidor forneceu o objeto do cache ao visualizador.
   + `RefreshHit`: o servidor encontrou o objeto no cache, mas o objeto expirou, portanto, o servidor entrou em contato com a origem para verificar se o cache tinha a versão mais recente do objeto.
   + `Miss`: não foi possível atender à solicitação por um objeto no cache, portanto, o servidor a encaminhou ao servidor de origem e retornou o resultado ao visualizador.
   + `LimitExceeded`: a solicitação foi negada porque uma cota do CloudFront (anteriormente conhecida como limite) foi excedida.
   + `CapacityExceeded`: o servidor retornou um erro 503 porque não tinha capacidade suficiente no momento da solicitação para fornecer o objeto.
   + `Error`: normalmente, isso significa que a solicitação resultou em um erro de cliente (o valor do campo `sc-status` está no intervalo `4xx`) ou em um erro de servidor (o valor do campo `sc-status` está no intervalo `5xx`).

     Se o valor do campo `x-edge-result-type` for `Error` e o valor desse campo não for `Error`, o cliente desconectou antes de concluir o download.
   + `Redirect`: o servidor redirecionou o visualizador de HTTP para HTTPS de acordo com as configurações de distribuição.
   + `LambdaExecutionError`: a função Lambda@Edge associada à distribuição não foi concluída devido a uma má-formação da associação, um tempo limite de função, um problema de dependência da AWS ou outro problema de disponibilidade geral.

1. **`cs-protocol-version`**

   A versão HTTP especificada pelo visualizador na solicitação. Os valores possíveis incluem `HTTP/0.9`, `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` e `HTTP/3.0`.

1. **`fle-status`**

   Quando a [criptografia em nível de campo](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html) é configurada para uma distribuição, esse campo contém um código que indica se o corpo da solicitação foi processado com êxito. Quando o servidor processa o corpo da solicitação, criptografa os valores nos campos especificados e encaminha a solicitação para a origem com êxito, o valor desse campo é `Processed`. Nesse caso, o valor de `x-edge-result-type` pode indicar um erro do lado do cliente ou do lado do servidor.

   Os valores possíveis para esse campo incluem:
   + `ForwardedByContentType`: o servidor encaminhou a solicitação para a origem sem análise nem criptografia, pois nenhum tipo de conteúdo foi configurado.
   + `ForwardedByQueryArgs`: o servidor encaminhou a solicitação para a origem sem análise nem criptografia, pois a solicitação contém um argumento de consulta que não foi configurado para a criptografia em nível de campo.
   + `ForwardedDueToNoProfile`: o servidor encaminhou a solicitação para a origem sem análise nem criptografia, pois nenhum perfil foi especificado na configuração da criptografia em nível de campo.
   + `MalformedContentTypeClientError`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois o valor do cabeçalho `Content-Type` estava em um formato inválido.
   + `MalformedInputClientError`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois o corpo da solicitação estava em um formato inválido.
   + `MalformedQueryArgsClientError`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois um argumento de consulta estava vazio ou em um formato inválido.
   + `RejectedByContentType`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois nenhum tipo de conteúdo foi especificado na configuração para criptografia em nível de campo.
   + `RejectedByQueryArgs`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois nenhum argumento de consulta foi especificado na configuração para criptografia em nível de campo.
   + `ServerError`: o servidor de origem retornou um erro.

   Se a solicitação exceder uma cota de criptografia em nível de campo (anteriormente conhecida como limite), esse campo conterá um dos seguintes códigos de erro, e o servidor retornará o código de status HTTP 400 ao visualizador. Para obter uma lista das cotas atuais de criptografia no nível de campo, consulte [Cotas para criptografia no nível de campo](cloudfront-limits.md#limits-field-level-encryption).
   + `FieldLengthLimitClientError`: um campo configurado para ser criptografado excedeu o tamanho máximo permitido.
   + `FieldNumberLimitClientError`: uma solicitação que a distribuição está configurada para criptografar contém o número de campos maior do que o permitido.
   + `RequestLengthLimitClientError`: o tamanho do corpo da solicitação excedeu o tamanho máximo permitido quando a criptografia no nível de campo foi configurada.

   Se a criptografia no nível de campo não estiver configurada para a distribuição, o valor desse campo será um hífen (-).

1. **`fle-encrypted-fields`**

   O número de campos de [criptografia em nível de campo](field-level-encryption.md) que o servidor de borda criptografou e encaminhou para a origem. Os servidores do CloudFront fazem streaming da solicitação processada para a origem à medida que criptografam dados, portanto, esse campo pode ter um valor, mesmo que o valor de `fle-status` seja um erro.

   Se a criptografia no nível de campo não estiver configurada para a distribuição, o valor desse campo será um hífen (-).

1. **`c-port`**

   O número da porta da solicitação do visualizador.

1. **`time-to-first-byte`**

   O número de segundos entre o recebimento da solicitação e a gravação do primeiro byte da resposta, conforme medido no servidor.

1. **`x-edge-detailed-result-type`**

   Esse campo conterá o mesmo valor que o campo `x-edge-result-type`, exceto nos seguintes casos:
   + Quando o objeto for enviado ao visualizador do cache da camada [Origin Shield](origin-shield.md), esse campo conterá `OriginShieldHit`.
   + Quando o objeto não estiver no cache do CloudFront e a resposta for gerada por uma [função Lambda@Edge de solicitação de origem](lambda-at-the-edge.md), esse campo conterá `MissGeneratedResponse`.
   + Quando o valor do campo `x-edge-result-type` for `Error`, esse campo conterá um dos seguintes valores com mais informações sobre o erro:
     + `AbortedOrigin`: o servidor encontrou um problema com a origem.
     + `ClientCommError`: a resposta ao visualizador foi interrompida devido a um problema de comunicação entre o servidor e o visualizador.
     + `ClientGeoBlocked`: a distribuição é configurada para recusar solicitações da localização geográfica do visualizador.
     + `ClientHungUpRequest` – o visualizador parou prematuramente ao enviar a solicitação.
     + `Error`: ocorreu um erro para o qual o tipo de erro não se encaixa em nenhuma das outras categorias. Esse tipo de erro pode ocorrer quando o servidor fornece uma resposta de erro do cache.
     + `InvalidRequest`: o servidor recebeu uma solicitação inválida do visualizador.
     + `InvalidRequestBlocked` – o acesso ao recurso solicitado é bloqueado.
     + `InvalidRequestCertificate`: a distribuição não corresponde ao certificado SSL/TLS para o qual a conexão HTTPS foi estabelecida.
     + `InvalidRequestHeader`: a solicitação continha um cabeçalho inválido.
     + `InvalidRequestMethod` – a distribuição não está configurada para lidar com o método de solicitação HTTP que foi usado. Isso pode acontecer quando a distribuição oferece suporte somente a solicitações armazenáveis em cache.
     + `OriginCommError`: a solicitação expirou durante a conexão à origem ou a leitura de dados da origem.
     + `OriginConnectError`: o servidor não pôde se conectar à origem.
     + `OriginContentRangeLengthError`: o cabeçalho `Content-Length` na resposta da origem não corresponde ao tamanho no cabeçalho `Content-Range`.
     + `OriginDnsError`: o servidor não pôde resolver o nome de domínio da origem.
     + `OriginError` – a origem retornou uma resposta incorreta.
     + `OriginHeaderTooBigError`: um cabeçalho retornado pela origem é muito grande para o processamento pelo servidor de borda.
     + `OriginInvalidResponseError` – a origem retornou uma resposta inválida.
     + `OriginReadError`: o servidor não pôde ler na origem.
     + `OriginWriteError`: o servidor não pôde gravar na origem.
     + `OriginZeroSizeObjectError` – um objeto de tamanho zero enviado da origem resultou em um erro.
     + `SlowReaderOriginError` – o visualizador ficou lento ao ler a mensagem que causou o erro de origem.

1. **`sc-content-type`**

   O valor do cabeçalho do HTTP `Content-Type` da resposta.

1. **`sc-content-len`**

   O valor do cabeçalho do HTTP `Content-Length` da resposta.

1. **`sc-range-start`**

   Quando a resposta contém o cabeçalho do HTTP `Content-Range`, esse campo contém o valor inicial do intervalo.

1. **`sc-range-end`**

   Quando a resposta contém o cabeçalho do HTTP `Content-Range`, esse campo contém o valor final do intervalo.

1. **`distribution-tenant-id`**

   O ID do locatário da distribuição.

1. **`connection-id`**

   Um identificador exclusivo para a conexão TLS. 

   Para receber informações para esse campo, primeiro é necessário habilitar a mTLS para suas distribuições. Para obter mais informações, consulte [Autenticação TLS mútua com o CloudFront (mTLS de visualizador)TLS mútua de origem com o CloudFront](mtls-authentication.md).

   

Veja a seguir um exemplo de arquivo de log para uma distribuição.

```
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow==	d111111abcdef8.cloudfront.net	https	23	0.000	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.000	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-	
2019-12-13	22:36:27	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/favicon.ico	502	http://www.example.com/	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ==	www.example.com	http	675	0.102	-	-	-	Error	HTTP/1.1	-	-	25260	0.102	OriginDnsError	text/html	507	-	-
2019-12-13	22:36:26	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg==	www.example.com	http	735	0.107	-	-	-	Error	HTTP/1.1	-	-	3802	0.107	OriginDnsError	text/html	507	-	-
2019-12-13	22:37:02	SEA19-C2	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	curl/7.55.1	-	-	Error	kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw==	www.example.com	http	387	0.103	-	-	-	Error	HTTP/1.1	-	-	12644	0.103	OriginDnsError	text/html	507	-	-
```

## Analisar logs
<a name="access-logs-analyzing"></a>

Como você pode receber vários logs de acesso por hora, recomendamos que combine todos os arquivos de log recebidos em um determinado período em um único arquivo. Assim você poderá analisar os dados desse período de forma mais precisa e completa.

Uma forma de analisar seus logs de acesso é usar o [Amazon Athena](https://aws.amazon.com/athena/). O Athena é um serviço de consulta interativo que pode ajudar você a analisar dados de serviços da AWS, incluindo o CloudFront. Para saber mais, consulte [ Consultar logs do Amazon CloudFront](https://docs.aws.amazon.com/athena/latest/ug/cloudfront-logs.html) no *Guia do usuário do Amazon Athena*.

Além disso, as seguintes postagens de blog da AWS discutem algumas maneiras de analisar os logs de acesso.
+ [ Registro em log de solicitações do Amazon CloudFront](https://aws.amazon.com/blogs/aws/amazon-cloudfront-request-logging/) (para conteúdo distribuído via HTTP)
+ [ Logs avançados do CloudFront, agora com strings de consulta](https://aws.amazon.com/blogs/aws/enhanced-cloudfront-logs-now-with-query-strings/)

# Usar logs de acesso em tempo real
<a name="real-time-logs"></a>

Com os logs de acesso em tempo real do CloudFront, é possível receber informações em tempo real sobre as solicitações feitas a uma distribuição (os logs são entregues em segundos após o recebimento das solicitações). É possível usar os logs de acesso em tempo real para monitorar, analisar e executar ações com base no desempenho da entrega de conteúdo.

Os logs de acesso em tempo real do CloudFront são configuráveis. É possível escolher:
+ A *taxa de amostragem* dos logs de acesso em tempo real; isto é, a porcentagem de solicitações para as quais deseja receber registros de logs de acesso em tempo real.
+ Os campos específicos que você deseja receber nos registros de log.
+ Os comportamentos de cache específicos (padrões de caminho) dos quais você deseja receber logs em tempo real.

Os logs de acesso em tempo real do CloudFront são entregues ao fluxo de dados de sua preferência no Amazon Kinesis Data Streams. É possível criar seu próprio [consumidor de fluxo de dados do Kinesis](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html) ou usar o Amazon Data Firehose para enviar dados de log para o Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service) ou um serviço de processamento de log de terceiros.

Além das cobranças de uso do Kinesis Data Streams, o CloudFront cobra por logs de acesso em tempo real. Para obter mais informações sobre definição de preço, consulte [Definição de preço do Amazon CloudFront](https://aws.amazon.com/cloudfront/pricing/) e [Definição de preço do Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

**Importante**  
Recomendamos que você use os logs para compreender a natureza das solicitações do seu conteúdo, não como uma contabilidade completa de todas as solicitações. O CloudFront tenta entregar logs de acesso em tempo real da melhor maneira possível. A entrada do log de uma solicitação específica pode ser entregue muito depois do processamento da solicitação e, raramente, nunca ser entregue. Quando uma entrada de log for omitida dos logs de acesso em tempo real, o número de entradas nesses logs não corresponderá ao uso exibido nos relatórios de uso e faturamento da AWS.

**Topics**
+ [Criar e usar configurações de log de acesso em tempo real](#create-real-time-log-config)
+ [Noções básicas sobre as configurações de log de acesso em tempo real](#understand-real-time-log-config)
+ [Criar um consumidor do Kinesis Data Streams](#real-time-log-consumer-guidance)
+ [Solução de problemas de logs de acesso em tempo real](#real-time-log-troubleshooting)

## Criar e usar configurações de log de acesso em tempo real
<a name="create-real-time-log-config"></a>

Para ter informações sobre solicitações feitas a uma distribuição em tempo real, use as configurações de log de acesso em tempo real. Os logs são entregues em segundos após o recebimento das solicitações. É possível criar uma configuração de log de acesso em tempo real no console do CloudFront, com a AWS Command Line Interface (AWS CLI) ou com a API do CloudFront.

Para usar uma configuração de log de acesso em tempo real, anexe-a a um ou mais comportamentos de cache em uma distribuição do CloudFront.

------
#### [ Console ]

**Como criar uma configuração de log de acesso em tempo real**

1. Faça login no Console de gerenciamento da AWS e abra a página **Logs** no console do CloudFront em [https://console.aws.amazon.com/cloudfront/v4/home?#/logs](https://console.aws.amazon.com/cloudfront/v4/home?#/logs).

1. Selecione a guia **Real-time log configurations** (Configurações de log em tempo real).

1. Escolha **Criar configuração**.

1. Em **Name** (Nome), insira um nome para a configuração.

1. Em **Sampling rate** (Taxa de amostragem), insira a porcentagem de solicitações para as quais deseja receber registros de log.

1. Em **Campos**, escolha os campos a serem recebidos nos logs de acesso em tempo real.
   + Para incluir todos os [campos CMCD](#CMCD-real-time-logging-fields) em seus registros de log, selecione **CMCD all keys** (todas as chaves CMCD).

1. Em **Endpoint**, escolha um ou mais fluxos de dados do Kinesis para receber logs de acesso em tempo real.
**nota**  
Os logs de acesso em tempo real do CloudFront são entregues ao fluxo de dados especificado no Kinesis Data Streams. Para ler e analisar os logs de acesso em tempo real, é possível criar seu próprio consumidor de fluxo de dados do Kinesis. Também é possível usar o Firehose para enviar dados de log para o Amazon S3, Amazon Redshift, Amazon OpenSearch Service ou um serviço de processamento de log de terceiros.

1. Em **IAM role** (Perfil do IAM), selecione **Create new service role** (Criar novo perfil de serviço) ou selecione um perfil existente. Você deve ter permissão para criar funções do IAM.

1. (Opcional) Em **Distribuição**, selecione um comportamento de cache e uma distribuição do CloudFront a serem anexados à configuração de log de acesso em tempo real.

1. Escolha **Criar configuração**.

Se a configuração for criada com êxito, o console mostrará os detalhes da configuração de log de acesso em tempo real que você acabou de criar.

Para obter mais informações, consulte [Noções básicas sobre as configurações de log de acesso em tempo real](#understand-real-time-log-config).

------
#### [ AWS CLI ]

Para criar uma configuração de log de acesso em tempo real com a AWS CLI, use o comando **aws cloudfront create-realtime-log-config**. É possível usar um arquivo de entrada para fornecer os parâmetros de entrada do comando, em vez de especificar cada parâmetro individual como entrada na linha de comando.

**Como criar uma configuração de log de acesso em tempo real (CLI com arquivo de entrada)**

1. Use o comando a seguir para criar um arquivo chamado `rtl-config.yaml` que contém todos os parâmetros de entrada para o comando **create-realtime-log-config**.

   ```
   aws cloudfront create-realtime-log-config --generate-cli-skeleton yaml-input > rtl-config.yaml
   ```

1. Abra o arquivo chamado `rtl-config.yaml` que você acabou de criar. Edite o arquivo para especificar as configurações de log de acesso em tempo real desejadas e salve o arquivo. Observe o seguinte:
   + Para `StreamType`, o único valor válido é `Kinesis`.

   Para obter mais informações sobre as configurações de log em tempo real, consulte [Noções básicas sobre as configurações de log de acesso em tempo real](#understand-real-time-log-config).

1. Use o comando a seguir para criar a configuração de log de acesso em tempo real utilizando parâmetros de entrada do arquivo `rtl-config.yaml`.

   ```
   aws cloudfront create-realtime-log-config --cli-input-yaml file://rtl-config.yaml
   ```

Se a configuração for criada com êxito, a saída do comando mostrará os detalhes da configuração de log de acesso em tempo real que você acabou de criar.

**Como anexar uma configuração de log de acesso em tempo real a uma distribuição existente (CLI com arquivo de entrada)**

1. Use o comando a seguir para salvar a configuração da distribuição do CloudFront que você deseja atualizar. Substitua *distribution\$1ID* pelo ID da distribuição.

   ```
   aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
   ```

1. Abra o arquivo chamado `dist-config.yaml` que você acabou de criar. Edite o arquivo, fazendo as alterações a seguir em cada comportamento de cache que você está atualizando para usar uma configuração de log de acesso em tempo real.
   + No comportamento de cache, adicione um campo chamado `RealtimeLogConfigArn`. Para o valor do campo, use o ARN da configuração de log de acesso em tempo real que você deseja anexar a esse comportamento de cache.
   + Renomeie o campo `ETag` para `IfMatch`, mas não altere o valor do campo.

   Ao concluir, salve o arquivo.

1. Use o comando a seguir para atualizar a distribuição e usar a configuração de log de acesso em tempo real. Substitua *distribution\$1ID* pelo ID da distribuição.

   ```
   aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml
   ```

Se tiver êxito, a saída do comando mostrará os detalhes da distribuição que você acabou de atualizar.

------
#### [ API ]

Para criar uma configuração de log de acesso em tempo real com a API do CloudFront, use a operação de API [CreateRealtimeLogConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateRealtimeLogConfig.html). Para obter mais informações sobre os parâmetros especificados nessa chamada de API, consulte [Noções básicas sobre as configurações de log de acesso em tempo real](#understand-real-time-log-config) e a documentação de referência da API do seu SDK da AWS ou de outro cliente de API.

Após a criação de uma configuração de log de acesso em tempo real, é possível anexá-la a um comportamento de cache, usando uma das seguintes operações de API:
+ Para anexá-la a um comportamento de cache em uma distribuição existente, use [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Para anexá-la a um comportamento de cache em uma nova distribuição, use [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Para ambas as operações de API, forneça o ARN da configuração de log de acesso em tempo real no campo `RealtimeLogConfigArn`, dentro de um comportamento de cache. Para mais informações sobre os outros campos especificados nessas chamadas de API, consulte [Referência de configurações de todas as distribuições](distribution-web-values-specify.md) e a documentação de referência da API do AWS SDK ou de outro cliente de API.

------

## Noções básicas sobre as configurações de log de acesso em tempo real
<a name="understand-real-time-log-config"></a>

Para usar os logs de acesso em tempo real do CloudFront, primeiro crie uma configuração de log de acesso em tempo real. A configuração de log de acesso em tempo real contém informações sobre quais campos de log você deseja receber, a *taxa de amostragem* de registros de log e o fluxo de dados do Kinesis ao qual você deseja entregar os logs.

Mais especificamente, uma configuração de log de acesso em tempo real contém as seguintes configurações:

**Contents**
+ [Nome](#real-time-logs-name)
+ [Taxa de amostragem](#real-time-logs-sampling-rate)
+ [Campos](#real-time-logs-fields)
+ [Endpoint (Kinesis Data Streams)](#real-time-logs-endpoint)
+ [perfil do IAM](#real-time-logs-IAM)

### Nome
<a name="real-time-logs-name"></a>

Um nome para identificar a configuração de log de acesso em tempo real.

### Taxa de amostragem
<a name="real-time-logs-sampling-rate"></a>

A taxa de amostragem é um número inteiro entre 1 e 100 (inclusive) que determina a porcentagem de solicitações de visualizador enviadas ao Kinesis Data Streams como registros de log de acesso em tempo real. Para incluir cada solicitação de visualizador nos logs de acesso em tempo real, especifique 100 como taxa de amostragem. É possível escolher uma taxa de amostragem mais baixa para reduzir custos e continuar recebendo uma amostra representativa de dados de solicitação nos logs de acesso em tempo real.

### Campos
<a name="real-time-logs-fields"></a>

Uma lista de campos incluídos em cada registro de log de acesso em tempo real. Cada registro de log pode conter até quarenta campos, e é possível optar por receber todos os campos disponíveis ou apenas os campos necessários para monitorar e analisar o desempenho.

A lista a seguir contém cada nome de campo e uma descrição das informações nesse campo. Os campos são listados na ordem em que aparecem nos registros de log que são entregues ao Kinesis Data Streams.

Os campos 46–63 são [Common Media Client Data (CMCD)](#CMCD-real-time-logging-fields) que os clientes do media player podem enviar às CDNs com cada solicitação. É possível usar esses dados para entender cada solicitação, como o tipo de mídia (áudio, vídeo), a taxa de reprodução e a duração da transmissão. Esses campos só aparecerão nos logs de acesso em tempo real se forem enviados ao CloudFront. 

1. **`timestamp`**

   A data e a hora em que o servidor de borda concluiu a resposta à solicitação.

1. **`c-ip`**

   O endereço IP do visualizador que fez a solicitação, por exemplo, `192.0.2.183` ou `2001:0db8:85a3::8a2e:0370:7334`. Se o visualizador usar um proxy HTTP ou um load balancer para enviar a solicitação, o valor desse campo será o endereço IP do proxy ou do load balancer. Veja também o campo `x-forwarded-for`.

1. **`s-ip`**

   O endereço IP do servidor do CloudFront que atendeu à solicitação; por exemplo, `192.0.2.183` ou `2001:0db8:85a3::8a2e:0370:7334`.

1. **`time-to-first-byte`**

   O número de segundos entre o recebimento da solicitação e a gravação do primeiro byte da resposta, conforme medido no servidor.

1. **`sc-status`**

   O código de status HTTP da resposta do servidor (por exemplo, `200`).

1. **`sc-bytes`**

   O número total de bytes enviados pelo servidor para o visualizador em resposta à solicitação, inclusive os cabeçalhos. Para conexões WebSocket e gRPC, esse é o número total de bytes enviados do servidor para o cliente por meio da conexão.

1. **`cs-method`**

   O método de solicitação HTTP recebido do visualizador.

1. **`cs-protocol`**

   O protocolo da solicitação do visualizador (`http`, `https`, `grpcs`, `ws` ou `wss`).

1. **`cs-host`**

   O valor incluído pelo visualizador no cabeçalho `Host` da solicitação. Se você estiver usando o nome de domínio do CloudFront nos URLs de objetos (como d111111abcdef8.cloudfront.net), esse campo conterá esse nome de domínio. Se você estiver usando nomes de domínio alternativos (CNAMES) nos URLs de objetos (como www.example.com), esse campo conterá o nome de domínio alternativo.

1. **`cs-uri-stem`**

   Todo o URL da solicitação, inclusive a string de consulta (se houver), mas sem o nome do domínio. Por exemplo, `/images/cat.jpg?mobile=true`.
**nota**  
Em [logs padrão](AccessLogs.md), o valor de `cs-uri-stem` não inclui a string de consulta.

1. **`cs-bytes`**

   O número de bytes de dados que o visualizador adicionou à solicitação, incluindo cabeçalhos. Para conexões WebSocket e gRPC, esse é o número total de bytes enviados do cliente para o servidor na conexão.

1. **`x-edge-location`**

   O ponto de presença que atendeu à solicitação. Cada ponto de presença é identificado por um código de três letras e um número atribuído arbitrariamente (por exemplo, DFW3). O código de três letras normalmente corresponde ao código da Associação Internacional de Transportes Aéreos (IATA) de um aeroporto perto da localização geográfica do local da borda. (Essas abreviações podem mudar no futuro.)

1. **`x-edge-request-id`**

   Uma string opaca que identifica exclusivamente uma solicitação. O CloudFront também envia essa string no cabeçalho de resposta `x-amz-cf-id`.

1. **`x-host-header`**

   O nome de domínio da distribuição do CloudFront (por exemplo, d111111abcdef8.cloudfront.net).

1. **`time-taken`**

   O número de segundos (até o milésimo de segundo, por exemplo, 0,082) de quando o servidor recebe a solicitação do visualizador até quando o servidor grava o último byte da resposta na fila de saída, conforme medido no servidor. Da perspectiva do visualizador, o tempo total para obter o objeto completo será mais longo que esse valor devido à latência da rede e o armazenamento em buffer do TCP.

1. **`cs-protocol-version`**

   A versão HTTP especificada pelo visualizador na solicitação. Os valores possíveis incluem `HTTP/0.9`, `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` e `HTTP/3.0`.

1. **`c-ip-version`**

   A versão IP da solicitação (IPv4 ou IPv6).

1. **`cs-user-agent`**

   O valor do cabeçalho `User-Agent` na solicitação. O cabeçalho `User-Agent` identifica a origem da solicitação, como o tipo de dispositivo e o navegador que enviou a solicitação e, se a solicitação for proveniente de um mecanismo de pesquisa, o mecanismo de pesquisa.

1. **`cs-referer`**

   O valor do cabeçalho `Referer` na solicitação. Esse é o nome do domínio que originou a solicitação. Indicadores comuns incluem: mecanismos de pesquisa, outros sites vinculados diretamente aos seus objetos e seu próprio site.

1. **`cs-cookie`**

   O cabeçalho `Cookie` na solicitação, incluindo pares de nome-valor e os atributos associados.
**nota**  
Este campo é truncado em 800 bytes.

1. **`cs-uri-query`**

   A parte da string de consulta do URL da solicitação, se houver.

1. **`x-edge-response-result-type`**

   Como o servidor classificou a resposta logo antes de devolvê-la para o visualizador. Veja também o campo `x-edge-result-type`. Os possíveis valores incluem:
   + `Hit`: o servidor forneceu o objeto do cache ao visualizador.
   + `RefreshHit`: o servidor encontrou o objeto no cache, mas o objeto expirou, portanto, o servidor entrou em contato com a origem para verificar se o cache tinha a versão mais recente do objeto.
   + `Miss`: não foi possível atender à solicitação por um objeto no cache, portanto, o servidor a encaminhou ao servidor de origem e retornou o resultado ao visualizador.
   + `LimitExceeded`: a solicitação foi negada porque uma cota do CloudFront (anteriormente conhecida como limite) foi excedida.
   + `CapacityExceeded`: o servidor retornou um erro 503 porque não tinha capacidade suficiente no momento da solicitação para fornecer o objeto.
   + `Error`: normalmente, isso significa que a solicitação resultou em um erro de cliente (o valor do campo `sc-status` está no intervalo `4xx`) ou em um erro de servidor (o valor do campo `sc-status` está no intervalo `5xx`).

     Se o valor do campo `x-edge-result-type` for `Error` e o valor desse campo não for `Error`, o cliente desconectou antes de concluir o download.
   + `Redirect`: o servidor redirecionou o visualizador de HTTP para HTTPS de acordo com as configurações de distribuição.
   + `LambdaExecutionError`: a função Lambda@Edge associada à distribuição não foi concluída devido a uma má-formação da associação, um tempo limite de função, um problema de dependência da AWS ou outro problema de disponibilidade geral.

1. **`x-forwarded-for`**

   Se o visualizador usar um proxy HTTP ou um load balancer para enviar a solicitação, o valor do campo `c-ip` será o endereço IP do proxy ou do load balancer. Nesse caso, esse campo é o endereço IP do visualizador que originou a solicitação. Esse campo pode conter vários endereços IP separados por vírgula. Cada endereço IP pode ser um endereço IPv4 (por exemplo, `192.0.2.183`) ou um endereço IPv6 (por exemplo, `2001:0db8:85a3::8a2e:0370:7334`).

1. **`ssl-protocol`**

   Quando a solicitação usa HTTPS, esse campo contém o protocolo SSL/TLS que o visualizador e o servidor negociaram para transmitir a solicitação e a resposta. Para obter uma lista de valores possíveis, consulte os protocolos SSL/TLS compatíveis em [Protocolos e cifras compatíveis entre visualizadores e o CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

1. **`ssl-cipher`**

   Quando a solicitação usa HTTPS, esse campo contém a cifra SSL/TLS que o visualizador e o servidor negociaram para criptografar a solicitação e a resposta. Para obter uma lista de valores possíveis, consulte as cifras SSL/TLS compatíveis em [Protocolos e cifras compatíveis entre visualizadores e o CloudFront](secure-connections-supported-viewer-protocols-ciphers.md).

1. **`x-edge-result-type`**

   Como o servidor classificou a resposta após o último byte sair do servidor. Em alguns casos, o tipo de resultado pode mudar entre a hora em que o servidor está pronto para enviar a resposta e a hora em que ele conclui o envio. Veja também o campo `x-edge-response-result-type`.

   Por exemplo, em streaming HTTP, suponha que o servidor encontre um segmento do stream no cache. Nesse cenário, o valor desse campo normalmente seria `Hit`. No entanto, se o visualizador encerrar a conexão antes de o servidor entregar o segmento inteiro, o tipo do resultado final (e, portanto, o valor desse campo) será `Error`.

   As conexões WebSocket e gRPC terão um valor de `Miss` para esse campo porque o conteúdo não é armazenável em cache e é enviado diretamente de volta ao servidor de origem.

   Os possíveis valores incluem:
   + `Hit`: o servidor forneceu o objeto do cache ao visualizador.
   + `RefreshHit`: o servidor encontrou o objeto no cache, mas o objeto expirou, portanto, o servidor entrou em contato com a origem para verificar se o cache tinha a versão mais recente do objeto.
   + `Miss`: não foi possível atender à solicitação por um objeto no cache e, portanto, o servidor a encaminhou ao servidor de origem e retornou o resultado ao visualizador.
   + `LimitExceeded`: a solicitação foi negada porque uma cota do CloudFront (anteriormente conhecida como limite) foi excedida.
   + `CapacityExceeded`: o servidor retornou um código de status HTTP 503 porque não tinha capacidade suficiente no momento da solicitação para fornecer o objeto.
   + `Error`: normalmente, isso significa que a solicitação resultou em um erro de cliente (o valor do campo `sc-status` está no intervalo `4xx`) ou em um erro de servidor (o valor do campo `sc-status` está no intervalo `5xx`). Se o valor do campo `sc-status` for `200` ou se o valor desse campo for `Error` e o valor do campo `x-edge-response-result-type` não for `Error`, isso significa que a solicitação HTTP foi bem-sucedida, mas o cliente desconectou antes de receber todos os bytes.
   + `Redirect`: o servidor redirecionou o visualizador de HTTP para HTTPS de acordo com as configurações de distribuição.
   + `LambdaExecutionError`: a função Lambda@Edge associada à distribuição não foi concluída devido a uma má-formação da associação, um tempo limite de função, um problema de dependência da AWS ou outro problema de disponibilidade geral.

1. **`fle-encrypted-fields`**

   O número de campos de [criptografia em nível de campo](field-level-encryption.md) que o servidor de borda criptografou e encaminhou para a origem. Os servidores do CloudFront fazem streaming da solicitação processada para a origem à medida que criptografam dados, portanto, esse campo pode ter um valor, mesmo que o valor de `fle-status` seja um erro.

1. **`fle-status`**

   Quando a [criptografia em nível de campo](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html) é configurada para uma distribuição, esse campo contém um código que indica se o corpo da solicitação foi processado com êxito. Quando o servidor processa o corpo da solicitação, criptografa os valores nos campos especificados e encaminha a solicitação para a origem com êxito, o valor desse campo é `Processed`. Nesse caso, o valor de `x-edge-result-type` pode indicar um erro do lado do cliente ou do lado do servidor.

   Os valores possíveis para esse campo incluem:
   + `ForwardedByContentType`: o servidor encaminhou a solicitação para a origem sem análise nem criptografia, pois nenhum tipo de conteúdo foi configurado.
   + `ForwardedByQueryArgs`: o servidor encaminhou a solicitação para a origem sem análise nem criptografia, pois a solicitação contém um argumento de consulta que não foi configurado para a criptografia em nível de campo.
   + `ForwardedDueToNoProfile`: o servidor encaminhou a solicitação para a origem sem análise nem criptografia, pois nenhum perfil foi especificado na configuração da criptografia em nível de campo.
   + `MalformedContentTypeClientError`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois o valor do cabeçalho `Content-Type` estava em um formato inválido.
   + `MalformedInputClientError`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois o corpo da solicitação estava em um formato inválido.
   + `MalformedQueryArgsClientError`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois um argumento de consulta estava vazio ou em um formato inválido.
   + `RejectedByContentType`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois nenhum tipo de conteúdo foi especificado na configuração para criptografia em nível de campo.
   + `RejectedByQueryArgs`: o servidor rejeitou a solicitação e retornou o código de status HTTP 400 para o visualizador, pois nenhum argumento de consulta foi especificado na configuração para criptografia em nível de campo.
   + `ServerError`: o servidor de origem retornou um erro.

   Se a solicitação exceder uma cota de criptografia em nível de campo (anteriormente conhecida como limite), esse campo conterá um dos seguintes códigos de erro, e o servidor retornará o código de status HTTP 400 ao visualizador. Para obter uma lista das cotas atuais de criptografia no nível de campo, consulte [Cotas para criptografia no nível de campo](cloudfront-limits.md#limits-field-level-encryption).
   + `FieldLengthLimitClientError`: um campo configurado para ser criptografado excedeu o tamanho máximo permitido.
   + `FieldNumberLimitClientError`: uma solicitação que a distribuição está configurada para criptografar contém o número de campos maior do que o permitido.
   + `RequestLengthLimitClientError`: o tamanho do corpo da solicitação excedeu o tamanho máximo permitido quando a criptografia no nível de campo foi configurada.

1. **`sc-content-type`**

   O valor do cabeçalho do HTTP `Content-Type` da resposta.

1. **`sc-content-len`**

   O valor do cabeçalho do HTTP `Content-Length` da resposta.

1. **`sc-range-start`**

   Quando a resposta contém o cabeçalho do HTTP `Content-Range`, esse campo contém o valor inicial do intervalo.

1. **`sc-range-end`**

   Quando a resposta contém o cabeçalho do HTTP `Content-Range`, esse campo contém o valor final do intervalo.

1. **`c-port`**

   O número da porta da solicitação do visualizador.

1. **`x-edge-detailed-result-type`**

   Esse campo conterá o mesmo valor que o campo `x-edge-result-type`, exceto nos seguintes casos:
   + Quando o objeto for enviado ao visualizador do cache da camada [Origin Shield](origin-shield.md), esse campo conterá `OriginShieldHit`.
   + Quando o objeto não estiver no cache do CloudFront e a resposta for gerada por uma [função Lambda@Edge de solicitação de origem](lambda-at-the-edge.md), esse campo conterá `MissGeneratedResponse`.
   + Quando o valor do campo `x-edge-result-type` for `Error`, esse campo conterá um dos seguintes valores com mais informações sobre o erro:
     + `AbortedOrigin`: o servidor encontrou um problema com a origem.
     + `ClientCommError`: a resposta ao visualizador foi interrompida devido a um problema de comunicação entre o servidor e o visualizador.
     + `ClientGeoBlocked`: a distribuição é configurada para recusar solicitações da localização geográfica do visualizador.
     + `ClientHungUpRequest` – o visualizador parou prematuramente ao enviar a solicitação.
     + `Error`: ocorreu um erro para o qual o tipo de erro não se encaixa em nenhuma das outras categorias. Esse tipo de erro pode ocorrer quando o servidor fornece uma resposta de erro do cache.
     + `InvalidRequest`: o servidor recebeu uma solicitação inválida do visualizador.
     + `InvalidRequestBlocked` – o acesso ao recurso solicitado é bloqueado.
     + `InvalidRequestCertificate`: a distribuição não corresponde ao certificado SSL/TLS para o qual a conexão HTTPS foi estabelecida.
     + `InvalidRequestHeader`: a solicitação continha um cabeçalho inválido.
     + `InvalidRequestMethod` – a distribuição não está configurada para lidar com o método de solicitação HTTP que foi usado. Isso pode acontecer quando a distribuição oferece suporte somente a solicitações armazenáveis em cache.
     + `OriginCommError`: a solicitação expirou durante a conexão à origem ou a leitura de dados da origem.
     + `OriginConnectError`: o servidor não pôde se conectar à origem.
     + `OriginContentRangeLengthError`: o cabeçalho `Content-Length` na resposta da origem não corresponde ao tamanho no cabeçalho `Content-Range`.
     + `OriginDnsError`: o servidor não pôde resolver o nome de domínio da origem.
     + `OriginError` – a origem retornou uma resposta incorreta.
     + `OriginHeaderTooBigError`: um cabeçalho retornado pela origem é muito grande para o processamento pelo servidor de borda.
     + `OriginInvalidResponseError` – a origem retornou uma resposta inválida.
     + `OriginReadError`: o servidor não pôde ler na origem.
     + `OriginWriteError`: o servidor não pôde gravar na origem.
     + `OriginZeroSizeObjectError` – um objeto de tamanho zero enviado da origem resultou em um erro.
     + `SlowReaderOriginError` – o visualizador ficou lento ao ler a mensagem que causou o erro de origem.

1. **`c-country`**

   Um código de país que representa a localização geográfica do visualizador, conforme determinado pelo endereço IP do visualizador. Para obter uma lista de códigos de país, consulte [ISO 3166-1 alfa-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

1. **`cs-accept-encoding`**

    O valor do cabeçalho `Accept-Encoding` na solicitação do visualizador.

1. **`cs-accept`**

   O valor do cabeçalho `Accept` na solicitação do visualizador.

1. **`cache-behavior-path-pattern`**

   O padrão do caminho que identifica o comportamento de cache que correspondeu à solicitação do visualizador.

1. **`cs-headers`**

   Os cabeçalhos HTTP (nomes e valores) na solicitação do visualizador.
**nota**  
Este campo é truncado em 800 bytes.

1. **`cs-header-names`**

   Os nomes dos cabeçalhos HTTP (não valores) na solicitação do visualizador.
**nota**  
Este campo é truncado em 800 bytes.

1. **`cs-headers-count`**

    O número de cabeçalhos HTTP na solicitação do visualizador.

1. **`primary-distribution-id`**

   Quando a implantação contínua está habilitada, essa ID identifica qual distribuição é a principal na distribuição atual.

1. **`primary-distribution-dns-name`**

   Quando a implantação contínua está habilitada, esse valor mostra o nome de domínio principal relacionado à distribuição atual do CloudFront (por exemplo, d111111abcdef8.cloudfront.net).

1. **`origin-fbl`**

   O número de segundos de latência de primeiro byte entre o CloudFront e a origem.

1. **`origin-lbl`**

   O número de segundos de latência de último byte entre o CloudFront e a origem.

1. **`asn`**

   O número de sistema autônomo (ASN) do visualizador.

1. <a name="CMCD-real-time-logging-fields"></a>
**Campos de CMCD em logs de acesso em tempo real**  
Para ter mais informações sobre esses campos, consulte o documento [Ecossistema em vídeo de aplicativo da web de especificação CTA: Common Media Client Data CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).

1. **`cmcd-encoded-bitrate`**

   A taxa de bits codificada do objeto de áudio ou vídeo solicitado. 

1. **`cmcd-buffer-length`**

   O tamanho do buffer do objeto de mídia solicitado.

1. **`cmcd-buffer-starvation`**

   Se o buffer ficou inativo em algum momento entre a solicitação anterior e a solicitação do objeto. Isso pode fazer com que o player fique em um estado de rearmazenamento em buffer, o que pode interromper a reprodução de vídeo ou áudio. 

1. **`cmcd-content-id`**

   Uma string exclusiva que identifica o conteúdo atual.

1. **`cmcd-object-duration`**

   A duração da reprodução do objeto solicitado (em milissegundos). 

1. **`cmcd-deadline`**

   O prazo a partir do momento da solicitação em que a primeira amostra desse objeto deve estar disponível, para que um estado de buffer inoperante ou outros problemas de reprodução sejam evitados. 

1. **`cmcd-measured-throughput`**

   O throughput entre o cliente e o servidor, conforme medido pelo cliente.

1. **`cmcd-next-object-request`**

   O caminho relativo do próximo objeto solicitado.

1. **`cmcd-next-range-request`**

   Se a próxima solicitação for uma solicitação de objeto parcial, essa string indica o intervalo de bytes a ser solicitado.

1. **`cmcd-object-type`**

   O tipo de mídia do objeto atual que está sendo solicitado.

1. **`cmcd-playback-rate`**

   1 se estiver em tempo real, 2 se estiver em velocidade dupla, 0 se não estiver sendo reproduzido. 

1. **`cmcd-requested-maximum-throughput`**

   O throughput máximo solicitado que o cliente considera suficiente para a entrega de ativos.

1. **`cmcd-streaming-format`**

   O formato de streaming que define a solicitação atual.

1. **`cmcd-session-id`**

   Um GUID que identifica a sessão de reprodução atual.

1. **`cmcd-stream-type`**

   Token que identifica a disponibilidade do segmento. `v` = todos os segmentos estão disponíveis. `l` = os segmentos ficam disponíveis ao longo do tempo.

1. **`cmcd-startup`**

   A chave é incluída sem um valor se o objeto for necessário com urgência durante o startup, busca ou recuperação após um evento de esvaziamento do buffer.

1. **`cmcd-top-bitrate`**

   A representação de taxa de bits mais alta que o cliente pode reproduzir.

1. **`cmcd-version`**

   A versão dessa especificação usada para interpretar os nomes e chave-valor definidos. Se essa chave for omitida, o cliente e o servidor *devem* interpretar os valores como definidos pela versão 1.

1. **`r-host`**

   Esse campo é enviado para solicitações para a origem e indica o domínio do servidor de origem usado para fornecer o objeto. Em caso de erros, você pode usar esse campo para encontrar a última origem que foi tentada; por exemplo: `cd8jhdejh6a.mediapackagev2.us-east-1.amazonaws.com`.

1. **`sr-reason`**

   Esse campo fornece o motivo pelo qual a origem foi selecionada. Ele fica vazio quando uma solicitação para a origem primária é bem-sucedida.

   Se ocorrer um failover de origem, o campo conterá o código de erro HTTP que provocou o failover, como `Failover:403` ou `Failover:502`. Em caso de failover de origem, se a solicitação repetida também falhar e você não tiver configurado páginas de erro personalizadas, `r-status` indicará a resposta da segunda origem. Entretanto, se você tiver configurado páginas de erro personalizadas com o failover de origem, isso conterá a resposta da segunda origem se a solicitação falhar e, em vez disso, for exibida uma página de erro personalizada.

   Se não ocorrer nenhum failover de origem, mas ocorrer seleção de origem por meio do recurso Resiliência com Reconhecimento de Qualidade da Mídia (MQAR), isso será registrado como `MediaQuality`. Para obter mais informações, consulte [Resiliência com Reconhecimento de Qualidade da Mídia](media-quality-score.md).

1. **`x-edge-mqcs`**

   Esse campo indica a Pontuação de Confiança na Qualidade da Mídia (MQCS) (intervalo: 0-100) para segmentos de mídia que o CloudFront recuperou nos cabeçalhos de resposta do CMSD do MediaPackage v2. Ele está disponível para solicitações que correspondam a um comportamento de cache que tenha um grupo de origem habilitado para MQAR. O CloudFront registra esse campo em log para segmentos de mídia que também são fornecidos pelo respectivo cache, além das solicitações para a origem. Para obter mais informações, consulte [Resiliência com Reconhecimento de Qualidade da Mídia](media-quality-score.md).

1. **`distribution-tenant-id`**

   O ID do locatário da distribuição.

1. **`connection-id`**

   Um identificador exclusivo para a conexão TLS. 

   Para receber informações para esse campo, primeiro é necessário habilitar a mTLS para suas distribuições. Para obter mais informações, consulte [Autenticação TLS mútua com o CloudFront (mTLS de visualizador)TLS mútua de origem com o CloudFront](mtls-authentication.md).

### Endpoint (Kinesis Data Streams)
<a name="real-time-logs-endpoint"></a>

O endpoint contém informações sobre o Kinesis Data Streams para o qual você quer enviar logs em tempo real. Forneça o nome de recurso da Amazon (ARN) do stream de dados.

Consulte mais informações sobre como criar um Kinesis Data Streams nos tópicos a seguir no *Guia do desenvolvedor do Amazon Kinesis Data Streams*.
+ [Criar e gerenciar fluxos](https://docs.aws.amazon.com/streams/latest/dev/working-with-streams.html)
+ [Executar operações básicas do Kinesis Data Streams usando a AWS CLI](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html)
+ [Criar um fluxo](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-create-stream.html) (usa o AWS SDK para Java)

Ao criar um stream de dados, você precisa especificar o número de fragmentos. Use as seguintes informações para ajudá-lo a estimar o número de fragmentos necessários.

**Como estimar o número de fragmentos para o stream de dados do Kinesis**

1. Calcule (ou estime) o número de solicitações por segundo recebidas pela sua distribuição do CloudFront.

   Você pode usar os [relatórios de uso do CloudFront](https://console.aws.amazon.com/cloudfront/v4/home#/usage) (no console do CloudFront) e as [métricas do CloudFront](viewing-cloudfront-metrics.md#monitoring-console.distributions) (nos consoles do CloudFront e do Amazon CloudWatch) para ajudar você a calcular as solicitações por segundo.

1. Determine o tamanho típico de um único registro de log de acesso em tempo real.

   Em geral, um único registro de log tem cerca de 500 bytes. Um grande registro que inclui todos os campos disponíveis costuma ter cerca de 1 KB.

   Caso não tenha certeza do tamanho do registro de log, você poderá habilitar logs em tempo real com uma taxa de amostragem baixa (por exemplo, 1%), depois calcular o tamanho médio do registro usando dados de monitoramento no Kinesis Data Streams (total de bytes de entrada dividido pelo número total de registros).

1. Na [página de preços do Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/), em AWS Calculadora de Preços, selecione **Crie já sua estimativa personalizada**.
   + Na calculadora, insira o número de solicitações (registros) por segundo.
   + Insira o tamanho médio de um único registro de log.
   + Selecione **Mostrar cálculos**.

   A calculadora de preços exibe o número de fragmentos de que você precisa e o custo estimado.

### perfil do IAM
<a name="real-time-logs-IAM"></a>

O perfil do AWS Identity and Access Management (IAM) que concede ao CloudFront permissão para entregar logs de acesso em tempo real ao fluxo de dados do Kinesis.

Ao criar uma configuração de log de acesso em tempo real com o console do CloudFront, é possível escolher **Criar perfil de serviço** para permitir que o console crie o perfil do IAM para você.

Ao criar uma configuração de log de acesso em tempo real com o AWS CloudFormation ou a API do CloudFront (AWS CLI ou SDK), será necessário criar um perfil do IAM e fornecer o respectivo ARN. Para criar o perfil do IAM por conta própria, use as políticas a seguir.

**Política de confiança do perfil do IAM**

Para usar a seguinte política de confiança de perfil do IAM, substitua *111122223333* pelo número de sua Conta da AWS. O elemento `Condition` nessa política ajuda a evitar o [problema confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) porque o CloudFront só pode assumir essa função em nome de uma distribuição em sua Conta da AWS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

**Política de permissões da função do IAM para um stream de dados não criptografado**

Para usar a política a seguir, substitua *arn:aws:kinesis:us-east-2:123456789012:stream/StreamName* pelo ARN do seu stream de dados do Kinesis.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName"
            ]
        }
    ]
}
```

------

**Política de permissões da função do IAM para um stream de dados criptografado**

Para usar a política a seguir, substitua *arn:aws:kinesis:us-east-2:123456789012:stream/StreamName* pelo ARN do seu stream de dados do Kinesis e *arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486*pelo ARN da sua AWS KMS key.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486"
            ]
        }
    ]
}
```

------

****  

## Criar um consumidor do Kinesis Data Streams
<a name="real-time-log-consumer-guidance"></a>

Para ler e analisar os logs de acesso em tempo real, crie ou use um *consumidor* do Kinesis Data Streams. Ao criar um consumidor para logs de acesso em tempo real do CloudFront, é importante saber que os campos em cada registro de log de acesso em tempo real são sempre entregues na mesma ordem, conforme listado na seção [Campos](#real-time-logs-fields). Crie o consumidor para acomodar essa ordem fixa.

Por exemplo, considere uma configuração de log de acesso em tempo real que inclua apenas estes três campos: `time-to-first-byte`, `sc-status` e `c-country`. Nesse cenário, o último campo, `c-country`, é sempre o campo número 3 em cada registro de log. No entanto, se posteriormente você adicionar campos à configuração de log de acesso em tempo real, o posicionamento de cada campo em um registro pode ser alterado.

Por exemplo, se você adicionar os campos `sc-bytes` e `time-taken` à configuração de log de acesso em tempo real, esses campos serão inseridos em cada registro de log de acordo com a ordem mostrada na seção [Campos](#real-time-logs-fields). A ordem resultante de todos os cinco campos é `time-to-first-byte`, `sc-status`, `sc-bytes`, `time-taken` e `c-country`. Originalmente, o campo `c-country` era o campo número 3, mas agora é o campo número 5. Verifique se o consumidor da aplicação consegue lidar com campos que mudam de posição em um registro de log, caso você adicione campos à configuração de log de acesso em tempo real.

## Solução de problemas de logs de acesso em tempo real
<a name="real-time-log-troubleshooting"></a>

Após a criação de uma configuração de log de acesso em tempo real, é possível descobrir que nenhum registro ou nem todos os registros são entregues ao Kinesis Data Streams. Nesse caso, primeiro verifique se a distribuição do CloudFront está recebendo solicitações do visualizador. Se estiver, você poderá verificar a seguinte configuração para continuar a solução de problemas.

**Permissões de função do IAM**  
Para entregar registros de log de acesso em tempo real ao fluxo de dados do Kinesis, o CloudFront usa um perfil do IAM na configuração de log de acesso em tempo real. Verifique se a política de confiança da função e a política de permissões da função correspondem às políticas mostradas em [perfil do IAM](#real-time-logs-IAM).

**Limitação do Kinesis Data Streams**  
Se o CloudFront gravar registros de log de acesso em tempo real no fluxo de dados do Kinesis de forma mais rápida do que o fluxo consegue processar, o Kinesis Data Streams poderá limitar as solicitações do CloudFront. Nesse caso, é possível aumentar o número de fragmentos no fluxo de dados do Kinesis. Cada fragmento pode oferecer suporte a gravações de até 1.000 registros por segundo, até um número máximo de gravações de 1 MB de dados por segundo.

# Logs de funções de borda
<a name="edge-functions-logs"></a>

É possível usar o Amazon CloudWatch Logs para obter logs para as funções de borda, tanto do [Lambda@Edge](lambda-at-the-edge.md) quanto do [CloudFront Functions](cloudfront-functions.md). É possível acessar os logs usando o console do CloudWatch ou a API do CloudWatch Logs.

**Importante**  
Recomendamos que você use os logs para compreender a natureza das solicitações do seu conteúdo, não como uma contabilidade completa de todas as solicitações. O CloudFront entrega logs de função de borda com base no melhor esforço. A entrada do log de uma solicitação específica pode ser entregue muito depois do processamento da solicitação e, raramente, nunca ser entregue. Quando uma entrada de log for omitida dos logs de função de borda, o número de entradas nos logs não corresponderá ao uso exibido nos relatórios de uso e faturamento da AWS.

**Topics**
+ [Logs do Lambda@Edge](#lambda-at-edge-logs)
+ [Logs do CloudFront Functions](#cloudfront-function-logs)

## Logs do Lambda@Edge
<a name="lambda-at-edge-logs"></a>

O Lambda@Edge envia logs de função para o CloudWatch Logs automaticamente, criando fluxos de logs nas Regiões da AWS onde as funções são invocadas. Ao criar ou modificar uma função no AWS Lambda, você pode usar o nome padrão do grupo de logs do CloudWatch ou personalizá-lo.
+ O nome do grupo de logs está no formato `/aws/lambda/<FunctionName>`, em que `<FunctionName>` é o nome que você deu à função quando a criou. Ao enviar logs ao CloudWatch, o Lambda@Edge adicionará automaticamente o prefixo `us-east-1` ao nome da função, de modo que o nome do grupo de logs seja `/aws/lambda/us-east-1.<FunctionName>` Esse prefixo corresponde à Região da AWS local em que a função foi criada. Esse prefixo permanece como parte do nome do grupo de logs, mesmo em outras regiões em que a função é invocada. 
+ Se você especificar um nome de grupo de logs personalizado, como`/MyLogGroup`, o Lambda@Edge não adicionará o prefixo da região. O nome do grupo de logs permanece o mesmo em todas as outras regiões em que a função é invocada.

**nota**  
Se você criar um grupo de logs personalizado e especificar o mesmo nome padrão `/aws/lambda/<FunctionName>`, o Lambda@Edge adicionará o prefixo `us-east-1` ao nome da função.

Além de permitir personalizar o nome do grupo de logs, as funções do Lambda@Edge aceitam logs no formato de texto simples e JSON, além de filtragem em nível de log. Para obter mais informações, consulte [Configurar controles avançados de registro em log para funções do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs-advanced.html) no *Guia do desenvolvedor do AWS Lambda*.

**nota**  
O Lambda@Edge controla os logs com base no volume da solicitação e no tamanho dos logs.

Você deve revisar os arquivos de log do CloudWatch na região correta da para ver os arquivos de log da função do Lambda@Edge. Para ver as regiões onde a função do Lambda@Edge está em execução, visualize os grafos das métricas da função no console do CloudFront. As métricas são exibidas para cada região da . Na mesma página, é possível selecionar uma região e, depois, visualizar os arquivos de log referentes a ela, para investigar problemas.

Consulte mais informações sobre como usar o CloudWatch Logs com funções do Lambda@Edge nos seguintes tópicos:
+ Para obter mais informações sobre como visualizar gráficos na seção **Monitoring (Monitoramento)** no console do CloudFront, consulte [Monitorar métricas do CloudFront com o Amazon CloudWatch](monitoring-using-cloudwatch.md).
+ Para informações sobre as permissões necessárias para enviar dados para o CloudWatch Logs, consulte [Configurar permissões e perfis do IAM para o Lambda@Edge](lambda-edge-permissions.md).
+ Para obter informações sobre como adicionar registro em log a uma função do Lambda@Edge, consulte [Registro em log da função do AWS Lambda em Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-logging.html) ou [Registro em log da função do AWS Lambda em Python](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html) no *Guia do desenvolvedor do AWS Lambda*.
+ Para obter informações sobre as cotas do CloudWatch Logs (anteriormente conhecidas como limites), consulte [Cotas do CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) no *Guia do usuário do Amazon CloudWatch Logs*.

## Logs do CloudFront Functions
<a name="cloudfront-function-logs"></a>

Se o código de uma função do CloudFront contiver instruções `console.log()`, o CloudFront Functions enviará automaticamente essas linhas de log para o CloudWatch Logs. Se não houver instruções `console.log()`, nada será enviado para o CloudWatch Logs.

O CloudFront Functions sempre cria streams de log na região Leste dos EUA (Norte da Virgínia) (`us-east-1`), independentemente de qual local da borda executou a função. O nome do stream de log está no formato `YYYY/M/D/UUID`.

O grupo de logs usa o seguinte formato:
+ No CloudFront Functions, em nível de comportamento de cache, o formato é `/aws/cloudfront/function/<FunctionName>`.
+ No CloudFront Functions, em nível de distribuição (funções de conexão), o formato é `/aws/cloudfront/connection-function/<FunctionName>`.

O `<FunctionName>` é o nome que você atribuiu à função quando a criou.

**Example Solicitações de visualizador**  
Abaixo, é possível visualizar uma mensagem de log de exemplo enviada ao CloudWatch Logs. Cada linha começa com um ID que identifica exclusivamente uma solicitação do CloudFront. A mensagem começa com uma linha `START` que inclui o ID de distribuição do CloudFront e termina com uma linha `END`. Entre as linhas `START` e `END` estão as linhas de log geradas pelas instruções `console.log()` na função.  

```
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADAXZZ
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== Example function log output
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
```

**Example Solicitações de conexão**  
Abaixo, é possível visualizar uma mensagem de log de exemplo enviada ao CloudWatch Logs. Cada linha começa com um ID que identifica exclusivamente uma solicitação do CloudFront. A mensagem começa com uma linha `START` que inclui o ID de distribuição do CloudFront e termina com uma linha `END`. Entre as linhas `START` e `END` estão as linhas de log geradas pelas instruções `console.log()` na função.  

```
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADA123
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== 1.2.3.4
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
```

**nota**  
O CloudFront Functions envia logs ao CloudWatch apenas para funções na fase `LIVE` que são executadas em resposta a solicitações e respostas de produção. Quando você [testa uma função](test-function.md), o CloudFront não envia métricas nem logs para o CloudWatch. A saída de teste contém informações sobre erros, utilização de computação e logs de funções (instruções `console.log()`), mas essas informações não são enviadas para o CloudWatch.

O CloudFront Functions usa uma [função vinculada ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) do AWS Identity and Access Management (IAM) para enviar logs para o CloudWatch Logs em sua conta. Um perfil vinculado ao serviço é um perfil do IAM que está vinculado diretamente a um AWS service (Serviço da AWS). Os perfis vinculados a serviços são predefinidos pelo serviço e incluem todas as permissões que o serviço exige para chamar outros Serviços da AWS para você. O CloudFront Functions usa o perfil vinculado ao serviço chamado **AWSServiceRoleForCloudFrontLogger**. Para obter mais informações sobre essa função, consulte [Funções vinculadas ao serviço para o Lambda@Edge](lambda-edge-permissions.md#using-service-linked-roles-lambda-edge) (O Lambda@Edge usa a mesma função vinculada ao serviço).

Quando uma função falha e exibe um erro de validação ou de execução, as informações são registradas nos [logs padrão](AccessLogs.md) e nos [logs de acesso em tempo real](real-time-logs.md). Consulte informações específicas sobre o erro nos campos `x-edge-result-type`, `x-edge-response-result-type` e `x-edge-detailed-result-type`.

# Registrar em log chamadas de API do Amazon CloudFront usando o AWS CloudTrail
<a name="logging_using_cloudtrail"></a>

O CloudFront é integrado ao [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html), um serviço que fornece um registro das ações realizadas por um usuário, um perfil ou um AWS service (Serviço da AWS). O CloudTrail captura todas as chamadas de API para o CloudFront como eventos. As chamadas capturadas incluem as chamadas do console do CloudFront e as chamadas de código para as operações de API do CloudFront. Ao fazer uso das informações coletadas pelo CloudTrail, é possível determinar a solicitação feita ao CloudFront, o endereço IP no qual a solicitação foi feita, quando a solicitação foi feita e detalhes adicionais.

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de identidade ajudam a determinar o seguinte:
+ Se a solicitação foi feita com credenciais de usuário raiz ou credenciais de usuário.
+ Se a solicitação foi feita em nome de um usuário do Centro de Identidade do IAM.
+ Se a solicitação foi feita com credenciais de segurança temporárias de um perfil ou de um usuário federado.
+ Se a solicitação foi feita por outro AWS service (Serviço da AWS).

Quando a Conta da AWS é criada, o CloudTrail torna-se ativo nela e você tem acesso automático ao **Histórico de eventos** do CloudTrail. O **Histórico de eventos** do CloudTrail fornece um registro visualizável, pesquisável, baixável e imutável dos últimos 90 dias de eventos de gerenciamento gravados em uma Região da AWS. Para obter mais informações, consulte [Trabalhar com histórico de eventos do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) no *Guia do usuário do AWS CloudTrail*. Não há cobranças do CloudTrail pela visualização do **Histórico de eventos**.

Para obter um registro contínuo de eventos em sua Conta da AWS nos últimos 90 dias, crie uma trilha ou um armazenamento de dados de eventos do [CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html).

**Trilhas do CloudTrail**  
Uma *trilha* permite que o CloudTrail entregue arquivos de log a um bucket do Amazon S3. As trilhas criadas usando o Console de gerenciamento da AWS são de várias regiões. Só é possível criar uma trilha de região única ou de várias regiões usando a AWS CLI. Criar uma trilha de várias regiões é uma prática recomendada, pois você captura atividades em todas as Regiões da AWS da conta. Ao criar uma trilha de região única, é possível visualizar somente os eventos registrados na Região da AWS da trilha. Para obter mais informações sobre trilhas, consulte [Criar uma trilha para a Conta da AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) e [Criar uma trilha para uma organização](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html) no *Guia do usuário do AWS CloudTrail*.  
Uma cópia dos eventos de gerenciamento em andamento pode ser entregue no bucket do Amazon S3 sem nenhum custo via CloudTrail com a criação de uma trilha; no entanto, há cobranças de armazenamento do Amazon S3. Para obter mais informações sobre os preços do CloudTrail, consulte [Preços do AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/). Para receber informações sobre a definição de preços do Amazon S3, consulte [Definição de preços do Amazon S3](https://aws.amazon.com/s3/pricing/).

**Armazenamentos de dados de eventos do CloudTrail Lake**  
O *CloudTrail Lake* permite executar consultas baseadas em SQL nos eventos. O CloudTrail Lake converte eventos existentes em formato JSON baseado em linhas para o formato [Apache ORC](https://orc.apache.org/). O ORC é um formato colunar de armazenamento otimizado para recuperação rápida de dados. Os eventos são agregados em *armazenamentos de dados de eventos*, que são coleções imutáveis de eventos baseados nos critérios selecionados com a aplicação de [seletores de eventos avançados](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-concepts.html#adv-event-selectors). Os seletores que aplicados a um armazenamento de dados de eventos controlam quais eventos persistem e estão disponíveis para consulta. Para obter mais informações sobre o CloudTrail Lake, consulte [Trabalhar com o AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html), no *Guia do usuário do AWS CloudTrail*.  
Os armazenamentos de dados de eventos e consultas do CloudTrail Lake incorrem em custos. Ao criar um armazenamento de dados de eventos, você escolhe a [opção de preço](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-manage-costs.html#cloudtrail-lake-manage-costs-pricing-option) que deseja usar para ele. A opção de preço determina o custo para a ingestão e para o armazenamento de eventos, e o período de retenção padrão e máximo para o armazenamento de dados de eventos. Para saber mais sobre os preços do CloudTrail, consulte [Preços do AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/).

**nota**  
O CloudFront é um serviço global. O CloudTrail registra eventos do CloudFront na região Leste dos EUA (Norte da Virgínia). Para ter mais informações, consulte [Eventos de serviços globais](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-global-service-events) no *Guia do usuário do AWS CloudTrail*.  
Se você usar credenciais de segurança temporárias usando o AWS Security Token Service, as chamadas para endpoints regionais, como `us-west-2`, serão registradas no CloudTrail em sua região apropriada.   
Para ter mais informações sobre endpoints do Amazon CloudFront, consulte [Endpoints e cotas do CloudFront](https://docs.aws.amazon.com/general/latest/gr/cf_region.html) na *Referência geral da AWS*.

## Eventos de dados do CloudFront no CloudTrail
<a name="cloudtrail-data-events"></a>

Os [eventos de dados](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events) fornecem informações sobre as operações de recursos realizadas em um recurso (por exemplo, leitura ou gravação em uma distribuição do CloudFront). Também são conhecidas como operações de plano de dados. Os eventos de dados costumam ser atividades de alto volume. Por padrão, o CloudTrail não registra eventos de dados em log. O **Histórico de eventos** do CloudTrail não registra eventos de dados.

Há cobranças adicionais para eventos de dados. Para saber mais sobre os preços do CloudTrail, consulte [Preços do AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/).

É possível registrar logs de eventos de dados para os tipos de recursos do CloudFront usando o console do CloudTrail, a AWS CLI ou operações da API do CloudTrail. Para saber mais sobre como registrar eventos de dados em log, consulte [Registrar eventos de dados com o Console de gerenciamento da AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console) e [Registrar eventos de dados com a AWS Command Line Interface](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI) no *Guia do usuário do AWS CloudTrail*.

A tabela a seguir lista o tipo de recurso do CloudFront para o qual você pode registrar eventos de dados em log. A coluna **Tipo de evento de dados (console)** mostra o valor a ser escolhido na lista **Tipo de evento de dados** no console do CloudTrail. A coluna do valor **resources.type** mostra o valor de `resources.type` que você especificaria ao configurar seletores de eventos avançados usando a AWS CLI ou as APIs do CloudTrail. A coluna **APIs de dados registradas no CloudTrail** mostra as chamadas de API registradas no CloudTrail para o tipo de recurso. 


| Tipo de evento de dados (console) | valor resources.type | APIs de dados registradas no CloudTrail | 
| --- | --- | --- | 
| KeyValueStore do CloudFront |  AWS::CloudFront::KeyValueStore  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonCloudFront/latest/DeveloperGuide/logging_using_cloudtrail.html)  | 

É possível configurar seletores de eventos avançados para filtrar os campos `eventName`, `readOnly` e `resources.ARN` para registrar em log somente os eventos que são importantes para você. Para saber mais sobre esses campos, consulte [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html) na *Referência de API do AWS CloudTrail*.

## Eventos de gerenciamento do CloudFront no CloudTrail
<a name="cloudtrail-management-events"></a>

Os [eventos de gerenciamento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events) fornecem informações sobre operações de gerenciamento executadas em recursos na Conta da AWS. Elas também são conhecidas como operações de ambiente de gerenciamento. Por padrão, o CloudTrail registra eventos de gerenciamento em logs.

O Amazon CloudFront registra em log todas as operações do ambiente de gerenciamento do CloudFront como eventos de gerenciamento. Para ter uma lista das operações do ambiente de gerenciamento do Amazon CloudFront que o CloudFront registra em log no CloudTrail, consulte a [Referência da API do Amazon CloudFront](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_Operations_Amazon_CloudFront.html).

## Exemplos de eventos do CloudFront
<a name="cloudtrail-event-examples"></a>

Um evento representa uma única solicitação de qualquer origem e inclui informações sobre a operação solicitada, a data e a hora da operação da API, os parâmetros de solicitação etc. Os arquivos de log do CloudTrail não são um rastreamento de pilha ordenada de chamadas de API públicas, portanto não são exibidos em uma ordem específica.

**Contents**
+ [Exemplo: UpdateDistribution](#example-cloudfront-service-cloudtrail-log)
+ [Exemplo: UpdateKeys](#example-cloudfront-kvs-cloudtrail-log)

### Exemplo: UpdateDistribution
<a name="example-cloudfront-service-cloudtrail-log"></a>

O exemplo a seguir mostra um evento do CloudTrail que demonstra a operação [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).

Para chamadas para a API do CloudFront, `eventSource` é `cloudfront.amazonaws.com`.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:role-session-name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/role-session-name",
        "accountId": "111122223333",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-02-02T19:23:50Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2024-02-02T19:26:01Z",
    "eventSource": "cloudfront.amazonaws.com",
    "eventName": "UpdateDistribution",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "52.94.133.137",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
    "requestParameters": {
        "distributionConfig": {
            "defaultRootObject": "",
            "aliases": {
                "quantity": 3,
                "items": [
                    "alejandro_rosalez.awsps.myinstance.com",
                    "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                    "*.alejandro_rosalez.awsps.myinstance.com"
                ]
            },
            "cacheBehaviors": {
                "quantity": 0,
                "items": []
            },
            "httpVersion": "http2and3",
            "originGroups": {
                "quantity": 0,
                "items": []
            },
            "viewerCertificate": {
                "minimumProtocolVersion": "TLSv1.2_2021",
                "cloudFrontDefaultCertificate": false,
                "aCMCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                "sSLSupportMethod": "sni-only"
            },
            "webACLId": "arn:aws:wafv2:us-east-1:111122223333:global/webacl/testing-acl/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
            "customErrorResponses": {
                "quantity": 0,
                "items": []
            },
            "logging": {
                "includeCookies": false,
                "prefix": "",
                "enabled": false,
                "bucket": ""
            },
            "priceClass": "PriceClass_All",
            "restrictions": {
                "geoRestriction": {
                    "restrictionType": "none",
                    "quantity": 0,
                    "items": []
                }
            },
            "isIPV6Enabled": true,
            "callerReference": "1578329170895",
            "continuousDeploymentPolicyId": "",
            "enabled": true,
            "defaultCacheBehavior": {
                "targetOriginId": "d111111abcdef8",
                "minTTL": 0,
                "compress": false,
                "maxTTL": 31536000,
                "functionAssociations": {
                    "quantity": 0,
                    "items": []
                },
                "trustedKeyGroups": {
                    "quantity": 0,
                    "items": [],
                    "enabled": false
                },
                "smoothStreaming": false,
                "fieldLevelEncryptionId": "",
                "defaultTTL": 86400,
                "lambdaFunctionAssociations": {
                    "quantity": 0,
                    "items": []
                },
                "viewerProtocolPolicy": "redirect-to-https",
                "forwardedValues": {
                    "cookies": {"forward": "none"},
                    "queryStringCacheKeys": {
                        "quantity": 0,
                        "items": []
                    },
                    "queryString": false,
                    "headers": {
                        "quantity": 1,
                        "items": ["*"]
                    }
                },
                "trustedSigners": {
                    "items": [],
                    "enabled": false,
                    "quantity": 0
                },
                "allowedMethods": {
                    "quantity": 2,
                    "items": [
                        "HEAD",
                        "GET"
                    ],
                    "cachedMethods": {
                        "quantity": 2,
                        "items": [
                            "HEAD",
                            "GET"
                        ]
                    }
                }
            },
            "staging": false,
            "origins": {
                "quantity": 1,
                "items": [
                    {
                        "originPath": "",
                        "connectionTimeout": 10,
                        "customOriginConfig": {
                            "originReadTimeout": 30,
                            "hTTPSPort": 443,
                            "originProtocolPolicy": "https-only",
                            "originKeepaliveTimeout": 5,
                            "hTTPPort": 80,
                            "originSslProtocols": {
                                "quantity": 3,
                                "items": [
                                    "TLSv1",
                                    "TLSv1.1",
                                    "TLSv1.2"
                                ]
                            }
                        },
                        "id": "d111111abcdef8",
                        "domainName": "d111111abcdef8.cloudfront.net",
                        "connectionAttempts": 3,
                        "customHeaders": {
                            "quantity": 0,
                            "items": []
                        },
                        "originShield": {"enabled": false},
                        "originAccessControlId": ""
                    }
                ]
            },
            "comment": "HIDDEN_DUE_TO_SECURITY_REASONS"
        },
        "id": "EDFDVBD6EXAMPLE",
        "ifMatch": "E1RTLUR9YES76O"
    },
    "responseElements": {
        "distribution": {
            "activeTrustedSigners": {
                "quantity": 0,
                "enabled": false
            },
            "id": "EDFDVBD6EXAMPLE",
            "domainName": "d111111abcdef8.cloudfront.net",
            "distributionConfig": {
                "defaultRootObject": "",
                "aliases": {
                    "quantity": 3,
                    "items": [
                        "alejandro_rosalez.awsps.myinstance.com",
                        "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                        "*.alejandro_rosalez.awsps.myinstance.com"
                    ]
                },
                "cacheBehaviors": {"quantity": 0},
                "httpVersion": "http2and3",
                "originGroups": {"quantity": 0},
                "viewerCertificate": {
                    "minimumProtocolVersion": "TLSv1.2_2021",
                    "cloudFrontDefaultCertificate": false,
                    "aCMCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                    "sSLSupportMethod": "sni-only",
                    "certificateSource": "acm",
                    "certificate": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
                },
                "webACLId": "arn:aws:wafv2:us-east-1:111122223333:global/webacl/testing-acl/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
                "customErrorResponses": {"quantity": 0},
                "logging": {
                    "includeCookies": false,
                    "prefix": "",
                    "enabled": false,
                    "bucket": ""
                },
                "priceClass": "PriceClass_All",
                "restrictions": {
                    "geoRestriction": {
                        "restrictionType": "none",
                        "quantity": 0
                    }
                },
                "isIPV6Enabled": true,
                "callerReference": "1578329170895",
                "continuousDeploymentPolicyId": "",
                "enabled": true,
                "defaultCacheBehavior": {
                    "targetOriginId": "d111111abcdef8",
                    "minTTL": 0,
                    "compress": false,
                    "maxTTL": 31536000,
                    "functionAssociations": {"quantity": 0},
                    "trustedKeyGroups": {
                        "quantity": 0,
                        "enabled": false
                    },
                    "smoothStreaming": false,
                    "fieldLevelEncryptionId": "",
                    "defaultTTL": 86400,
                    "lambdaFunctionAssociations": {"quantity": 0},
                    "viewerProtocolPolicy": "redirect-to-https",
                    "forwardedValues": {
                        "cookies": {"forward": "none"},
                        "queryStringCacheKeys": {"quantity": 0},
                        "queryString": false,
                        "headers": {
                            "quantity": 1,
                            "items": ["*"]
                        }
                    },
                    "trustedSigners": {
                        "enabled": false,
                        "quantity": 0
                    },
                    "allowedMethods": {
                        "quantity": 2,
                        "items": [
                            "HEAD",
                            "GET"
                        ],
                        "cachedMethods": {
                            "quantity": 2,
                            "items": [
                                "HEAD",
                                "GET"
                            ]
                        }
                    }
                },
                "staging": false,
                "origins": {
                    "quantity": 1,
                    "items": [
                        {
                            "originPath": "",
                            "connectionTimeout": 10,
                            "customOriginConfig": {
                                "originReadTimeout": 30,
                                "hTTPSPort": 443,
                                "originProtocolPolicy": "https-only",
                                "originKeepaliveTimeout": 5,
                                "hTTPPort": 80,
                                "originSslProtocols": {
                                    "quantity": 3,
                                    "items": [
                                        "TLSv1",
                                        "TLSv1.1",
                                        "TLSv1.2"
                                    ]
                                }
                            },
                            "id": "d111111abcdef8",
                            "domainName": "d111111abcdef8.cloudfront.net",
                            "connectionAttempts": 3,
                            "customHeaders": {"quantity": 0},
                            "originShield": {"enabled": false},
                            "originAccessControlId": ""
                        }
                    ]
                },
                "comment": "HIDDEN_DUE_TO_SECURITY_REASONS"
            },
            "aliasICPRecordals": [
                {
                    "cNAME": "alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                },
                {
                    "cNAME": "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                },
                {
                    "cNAME": "*.alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                }
            ],
            "aRN": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE",
            "status": "InProgress",
            "lastModifiedTime": "Feb 2, 2024 7:26:01 PM",
            "activeTrustedKeyGroups": {
                "enabled": false,
                "quantity": 0
            },
            "inProgressInvalidationBatches": 0
        },
        "eTag": "E1YHBLAB2BJY1G"
    },
    "requestID": "4e6b66f9-d548-11e3-a8a9-73e33example",
    "eventID": "5ab02562-0fc5-43d0-b7b6-90293example",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "apiVersion": "2020_05_31",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "cloudfront.amazonaws.com"
    },
    "sessionCredentialFromConsole": "true"
}
```

### Exemplo: UpdateKeys
<a name="example-cloudfront-kvs-cloudtrail-log"></a>

O exemplo a seguir mostra um evento do CloudTrail que demonstra a operação [UpdateKeys](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_UpdateKeys.html).

Para chamadas para a API do KeyValueStore do CloudFront, `eventSource` é `edgekeyvaluestore.amazonaws.com` em vez de `cloudfront.amazonaws.com`.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:role-session-name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/role-session-name",
        "accountId": "111122223333",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2023-11-01T23:41:14Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-11-01T23:41:28Z",
    "eventSource": "edgekeyvaluestore.amazonaws.com",
    "eventName": "UpdateKeys",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "3.235.183.252",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36,
    "requestParameters": {
        "kvsARN": "arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "ifMatch": "KV3O6B1CX531EBP",
        "deletes": [
            {"key": "key1"}
        ]
    },
    "responseElements": {
        "itemCount": 0,
        "totalSizeInBytes": 0,
        "eTag": "KVDC9VEVZ71ZGO"
    },
    "requestID": "5ccf104c-acce-4ea1-b7fc-73e33example",
    "eventID": "a0b1b5c7-906c-439d-9925-90293example",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::CloudFront::KeyValueStore",
            "ARN": "arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "111122223333.cloudfront-kvs.global.api.aws"
    }
}
```

Para obter informações sobre o conteúdo dos registros do CloudTrail, consulte [Conteúdo dos registros do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html) no *Guia do usuário do AWS CloudTrail*.