Referência do registro em log padrão
As seções a seguir se aplicam tanto ao registro em log padrão (v2) quanto ao registro em log padrão (legado).
Tópicos
Prazos de entrega dos arquivos de log
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
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
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.
-
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. -
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. -
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.)
-
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.
-
c-ip
O endereço IP do visualizador que fez a solicitação, por exemplo,
192.0.2.183
ou2001: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 campox-forwarded-for
. -
cs-method
O método de solicitação HTTP recebido do visualizador.
-
cs(Host)
O nome de domínio da distribuição do CloudFront (por exemplo, d111111abcdef8.cloudfront.net).
-
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. -
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.
-
-
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. -
cs(User-Agent)
O valor do cabeçalho
User-Agent
na solicitação. O cabeçalhoUser-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. -
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 ter mais informações, consulte Conteúdo em cache com base em parâmetros de string de consulta.
-
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.
-
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 camposc-status
está no intervalo4xx
) ou em um erro de servidor (o valor do camposc-status
está no intervalo5xx
). Se o valor do camposc-status
for200
ou se o valor desse campo forError
e o valor do campox-edge-response-result-type
não forError
, 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.
-
-
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
. -
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. -
cs-protocol
O protocolo da solicitação do visualizador (
http
,http
,grpcs
,ws
ouwss
). -
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.
-
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.
-
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 (-).
-
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.
Quando
cs-protocol
no campo 17 forhttp
, o valor desse campo será um hífen (-). -
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.
Quando
cs-protocol
no campo 17 forhttp
, o valor desse campo será um hífen (-). -
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 camposc-status
está no intervalo4xx
) ou em um erro de servidor (o valor do camposc-status
está no intervalo5xx
).Se o valor do campo
x-edge-result-type
forError
e o valor desse campo não forError
, 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.
-
-
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
eHTTP/3.0
. -
fle-status
Quando a criptografia em nível de campo é 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 dex-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çalhoContent-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.
-
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 (-).
-
-
fle-encrypted-fields
O número de campos de criptografia em nível de campo 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 (-).
-
c-port
O número da porta da solicitação do visualizador.
-
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.
-
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, 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, esse campo conterá
MissGeneratedResponse
. -
Quando o valor do campo
x-edge-result-type
forError
, 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çalhoContent-Length
na resposta da origem não corresponde ao tamanho no cabeçalhoContent-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.
-
-
-
sc-content-type
O valor do cabeçalho do HTTP
Content-Type
da resposta. -
sc-content-len
O valor do cabeçalho do HTTP
Content-Length
da resposta. -
sc-range-start
Quando a resposta contém o cabeçalho do HTTP
Content-Range
, esse campo contém o valor inicial do intervalo. -
sc-range-end
Quando a resposta contém o cabeçalho do HTTP
Content-Range
, esse campo contém o valor final do intervalo.
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 http 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 http 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 http 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
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
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
(para conteúdo distribuído via HTTP)