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 le CDN Amazon CloudFront pour exporter les journaux d'accès de distribution web vers Amazon Simple Storage Service. Utilisez ces journaux pour explorer les modèles de navigation des utilisateurs dans vos propriétés web diffusées par CloudFront.

Avant de commencer l'exécution de requêtes sur les journaux, activez le journal d'accès aux distributions web sur votre distribution CloudFront préférée. Pour plus d'informations, consultez Journaux d'accès dans le Manuel du développeur Amazon CloudFront.

Notez le compartiment Amazon S3 dans lequel enregistrer ces journaux.

Note

Cette procédure fonctionne pour les journaux d'accès aux distributions web dans CloudFront. Elle ne s'applique pas aux journaux de streaming issus des distributions RTMP.

Création de la table pour les journaux CloudFront

Pour créer la table CloudFront

  1. Copiez et collez l'instruction DDL suivante dans la console Athena. Modifiez le code LOCATION pour le compartiment Amazon S3 qui stocke vos journaux.

    Cette requête utilise LazySimpleSerDe par défaut et elle est omise.

    La colonne date est une séquence d'échappement avec « accents graves » (`), car il s'agit d'un mot réservé dans Athena. Pour plus d'informations, consultez Mots-clés réservés.

    CREATE EXTERNAL TABLE IF NOT EXISTS default.cloudfront_logs ( `date` DATE, time STRING, location STRING, bytes BIGINT, request_ip STRING, method STRING, host STRING, uri STRING, status INT, referrer STRING, user_agent STRING, query_string STRING, cookie STRING, result_type STRING, request_id STRING, host_header STRING, request_protocol STRING, request_bytes BIGINT, time_taken FLOAT, xforwarded_for STRING, ssl_protocol STRING, ssl_cipher STRING, response_result_type STRING, http_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://CloudFront_bucket_name/CloudFront/' 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_logs, de telle sorte que les données soient prêtes pour que vous puissiez émettre des requêtes.

Exemple de requête pour les journaux CloudFront

La requête suivante ajoute le nombre d'octets diffusés par 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_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_logs LIMIT 10;

Ressources supplémentaires

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

Easily query AWS service logs using Amazon Athena (Interrogation facile des journaux de service AWS avec Amazon Athena) (29 mai 2019).

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

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