Interrogation des journaux Amazon CloudFront - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Interrogation des journaux Amazon CloudFront

Vous pouvez configurer Amazon CloudFront CDN pour exporter les journaux d'accès à la distribution Web vers Amazon Simple Storage Service. Utilisez ces journaux pour explorer les habitudes de navigation des utilisateurs sur les propriétés Web que vous utilisez CloudFront.

Avant de commencer à interroger les journaux, activez le journal d'accès aux distributions Web sur votre CloudFront distribution préférée. Pour plus d'informations, consultez les journaux d'accès dans le manuel Amazon CloudFront Developer Guide. Notez le compartiment Amazon S3 dans lequel vous enregistrez ces journaux.

Création d'une table pour les journaux CloudFront standard

Note

Cette procédure fonctionne pour les connexions d'accès à la distribution Web CloudFront. Elle ne s'applique pas aux journaux de streaming issus des distributions RTMP.

Pour créer une table pour les champs de fichier journal CloudFront standard

  1. Copiez et collez l'exemple d'instruction DDL suivante dans l'éditeur de requête de la console Athena. L'exemple d'instruction utilise les champs du fichier journal décrits dans la section Champs de fichier journal standard du Amazon CloudFront Developer Guide. Modifiez l'emplacement (LOCATION) pour le compartiment Simple Storage Service (Amazon S3) qui stocke vos journaux. Pour plus d'informations sur l'utilisation de l'éditeur de requête, voir Mise en route.

    Cette requête indique ROW FORMAT DELIMITED et FIELDS TERMINATED BY '\t' indique que les champs sont délimités par des tabulations. En ROW FORMAT DELIMITED effet, Athéna utilise le LazySimpleSerDepar défaut. La colonne date est une séquence d'échappement avec des guillemets simples inversés (`), car il s'agit d'un mot réservé dans Athena. Pour plus d’informations, veuillez consulter Mots-clés réservés.

    CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_standard_logs ( `date` DATE, time STRING, x_edge_location STRING, sc_bytes BIGINT, c_ip STRING, cs_method STRING, cs_host STRING, cs_uri_stem STRING, sc_status INT, cs_referrer STRING, cs_user_agent STRING, cs_uri_query STRING, cs_cookie STRING, x_edge_result_type STRING, x_edge_request_id STRING, x_host_header STRING, cs_protocol STRING, cs_bytes BIGINT, time_taken FLOAT, x_forwarded_for STRING, ssl_protocol STRING, ssl_cipher STRING, x_edge_response_result_type STRING, cs_protocol_version STRING, fle_status STRING, fle_encrypted_fields INT, c_port INT, time_to_first_byte FLOAT, x_edge_detailed_result_type STRING, sc_content_type STRING, sc_content_len BIGINT, sc_range_start BIGINT, sc_range_end BIGINT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3://DOC-EXAMPLE-BUCKET/' TBLPROPERTIES ( 'skip.header.line.count'='2' )
  2. Exécutez la requête dans la console Athena. Une fois que la requête est terminée, Athena enregistre la table cloudfront_standard_logs, de telle sorte que les données soient prêtes pour que vous puissiez émettre des requêtes.

Création d'un tableau pour les journaux CloudFront en temps réel

Pour créer une table pour les champs du fichier journal CloudFront en temps réel

  1. Copiez et collez l'exemple d'instruction DDL suivante dans l'éditeur de requête de la console Athena. L'exemple d'instruction utilise les champs du fichier journal décrits dans la section Journaux en temps réel du Amazon CloudFront Developer Guide. Modifiez l'emplacement (LOCATION) pour le compartiment Simple Storage Service (Amazon S3) qui stocke vos journaux. Pour plus d'informations sur l'utilisation de l'éditeur de requête, voir Mise en route.

    Cette requête indique ROW FORMAT DELIMITED et FIELDS TERMINATED BY '\t' indique que les champs sont délimités par des tabulations. En ROW FORMAT DELIMITED effet, Athéna utilise le LazySimpleSerDepar défaut. La colonne timestamp est une séquence d'échappement avec des guillemets simples inversés (`), car il s'agit d'un mot réservé dans Athena. Pour plus d’informations, veuillez consulter Mots-clés réservés.

    L'exemple suivant contient tous les champs disponibles. Vous pouvez ajouter des commentaires ou supprimer des champs dont vous n'avez pas besoin.

    CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_real_time_logs ( `timestamp` STRING, c_ip STRING, time_to_first_byte BIGINT, sc_status BIGINT, sc_bytes BIGINT, cs_method STRING, cs_protocol STRING, cs_host STRING, cs_uri_stem STRING, cs_bytes BIGINT, x_edge_location STRING, x_edge_request_id STRING, x_host_header STRING, time_taken BIGINT, cs_protocol_version STRING, c_ip_version STRING, cs_user_agent STRING, cs_referer STRING, cs_cookie STRING, cs_uri_query STRING, x_edge_response_result_type STRING, x_forwarded_for STRING, ssl_protocol STRING, ssl_cipher STRING, x_edge_result_type STRING, fle_encrypted_fields STRING, fle_status STRING, sc_content_type STRING, sc_content_len BIGINT, sc_range_start STRING, sc_range_end STRING, c_port BIGINT, x_edge_detailed_result_type STRING, c_country STRING, cs_accept_encoding STRING, cs_accept STRING, cache_behavior_path_pattern STRING, cs_headers STRING, cs_header_names STRING, cs_headers_count BIGINT, primary_distribution_id STRING, primary_distribution_dns_name STRING, origin_fbl STRING, origin_lbl STRING, asn STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3://DOC-EXAMPLE-BUCKET/' TBLPROPERTIES ( 'skip.header.line.count'='2' )
  2. Exécutez la requête dans la console Athena. Une fois que la requête est terminée, Athena enregistre la table cloudfront_real_time_logs, de telle sorte que les données soient prêtes pour que vous puissiez émettre des requêtes.

Exemples de requêtes pour les CloudFront journaux standard

La requête suivante additionne le nombre d'octets servis CloudFront entre le 9 juin et le 11 juin 2018. Placez le nom de colonne de date entre guillemets doubles car c'est un mot réservé.

SELECT SUM(bytes) AS total_bytes FROM cloudfront_standard_logs WHERE "date" BETWEEN DATE '2018-06-09' AND DATE '2018-06-11' LIMIT 100;

Pour éliminer les lignes en double (par exemple, les lignes vides en double) des résultats de la requête, vous pouvez utiliser l'instruction SELECT DISTINCT, comme dans l'exemple suivant.

SELECT DISTINCT * FROM cloudfront_standard_logs LIMIT 10;

Ressources supplémentaires

Pour plus d'informations sur l'utilisation d'Athena pour interroger CloudFront les journaux, consultez les articles suivants du blog AWS Big Data.

Interrogez facilement AWS service les journaux à l'aide d'Amazon Athena (29 mai 2019).

Analysez vos journaux CloudFront d'accès Amazon à grande échelle (21 décembre 2018).

Créez une architecture sans serveur pour analyser les journaux CloudFront d'accès Amazon à l'aide AWS Lambda d'Amazon Athena et d'Amazon Managed Service pour Apache Flink (26 mai 2017).