CloudFront Amazon-Logs abfragen - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CloudFront Amazon-Logs abfragen

Sie können Amazon CloudFront CDN so konfigurieren, dass Zugriffsprotokolle für die Webdistribution nach Amazon Simple Storage Service exportiert werden. Verwenden Sie diese Protokolle, um das Surfverhalten der Benutzer auf Ihren Websites zu untersuchen, die von CloudFront bereitgestellt werden.

Bevor Sie mit der Abfrage der Protokolle beginnen, aktivieren Sie das Zugriffsprotokoll für Webverteilungen auf Ihrer bevorzugten CloudFront Distribution. Weitere Informationen finden Sie unter Zugriffsprotokolle im Amazon CloudFront Developer Guide. Notieren Sie sich den Amazon S3 S3-Bucket, in dem Sie diese Protokolle speichern.

Eine Tabelle für CloudFront Standardprotokolle erstellen

Anmerkung

Dieses Verfahren funktioniert für die Anmeldung über den Zugriff auf die Webdistribution CloudFront. Es kann nicht für Streaming-Protokolle von RTMP-Verteilungen eingesetzt werden.

Um eine Tabelle für CloudFront Standard-Protokolldateifelder zu erstellen

  1. Kopieren Sie die folgende beispielhafte DDL-Anweisung und fügen Sie sie in den Abfrageeditor der Athena-Konsole ein. Die Beispielanweisung verwendet die Protokolldateifelder, die im Abschnitt Standard-Protokolldateifelder des Amazon CloudFront Developer Guide dokumentiert sind. Ändern Sie LOCATION in den Amazon-S3-Bucket, in dem die Protokolle gespeichert werden. Weitere Informationen zur Verwendung des visuellen Abfrage-Editors finden Sie unter Erste Schritte.

    Diese Abfrage spezifiziert ROW FORMAT DELIMITED und gibt FIELDS TERMINATED BY '\t' an, dass die Felder durch Tabulatorzeichen getrennt sind. Denn ROW FORMAT DELIMITED Athena verwendet LazySimpleSerDestandardmäßig das. Die Spalte date ist mit Escape-Zeichen – einfachen umgekehrten Anführungszeichen (`) – versehen, da es sich um ein reserviertes Wort in Athena handelt. Weitere Informationen finden Sie unter Reservierte Schlüsselwörter.

    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. Führen Sie die Abfrage in der Athena-Konsole aus. Nach Beendigung der Abfrage registriert Athena die cloudfront_standard_logs-Tabelle, sodass Sie die Daten zum Ausgeben von Abfragen nutzen können.

Erstellen einer Tabelle für CloudFront Echtzeitprotokolle

Um eine Tabelle für CloudFront Echtzeit-Protokolldateifelder zu erstellen

  1. Kopieren Sie die folgende beispielhafte DDL-Anweisung und fügen Sie sie in den Abfrageeditor der Athena-Konsole ein. Die Beispielanweisung verwendet die Protokolldateifelder, die im Abschnitt Echtzeitprotokolle des Amazon CloudFront Developer Guide dokumentiert sind. Ändern Sie LOCATION in den Amazon-S3-Bucket, in dem die Protokolle gespeichert werden. Weitere Informationen zur Verwendung des visuellen Abfrage-Editors finden Sie unter Erste Schritte.

    Diese Abfrage spezifiziert ROW FORMAT DELIMITED und gibt FIELDS TERMINATED BY '\t' an, dass die Felder durch Tabulatorzeichen getrennt sind. Denn ROW FORMAT DELIMITED Athena verwendet LazySimpleSerDestandardmäßig das. Die Spalte timestamp ist mit Escape-Zeichen – einfachen umgekehrten Anführungszeichen (`) – versehen, da es sich um ein reserviertes Wort in Athena handelt. Weitere Informationen finden Sie unter Reservierte Schlüsselwörter.

    Das folgende Beispiel enthält alle verfügbaren Felder. Sie können Felder, die Sie nicht benötigen, auskommentieren oder entfernen.

    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. Führen Sie die Abfrage in der Athena-Konsole aus. Nach Beendigung der Abfrage registriert Athena die cloudfront_real_time_logs-Tabelle, sodass Sie die Daten zum Ausgeben von Abfragen nutzen können.

Beispielabfragen für CloudFront Standardprotokolle

Die folgende Abfrage summiert die Anzahl der Byte, die CloudFront zwischen dem 9. Juni und dem 11. Juni 2018 bereitgestellt wurden. Setzen Sie den Spaltennamen "date" in doppelte Anführungszeichen, da es sich um ein reserviertes Wort handelt.

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

Um doppelte Zeilen (z. B. doppelte Leerzeilen) aus den Abfrageergebnissen zu entfernen, können Sie, wie im folgenden Beispiel die SELECT DISTINCT-Anweisung verwenden.

SELECT DISTINCT * FROM cloudfront_standard_logs LIMIT 10;

Weitere Ressourcen

Weitere Informationen zur Verwendung von Athena zum Abfragen von CloudFront Protokollen finden Sie in den folgenden Beiträgen aus dem AWS Big-Data-Blog.

Einfache Abfrage von AWS -Service Protokollen mit Amazon Athena (29. Mai 2019).

Analysieren Sie Ihre CloudFront Amazon-Zugriffsprotokolle in großem Umfang (21. Dezember 2018).

Erstellen Sie eine serverlose Architektur zur Analyse von CloudFront Amazon-Zugriffsprotokollen mithilfe von AWS Lambda Amazon Athena und Amazon Managed Service für Apache Flink (26. Mai 2017).