Erstellen der Tabelle für ALB-Zugriffsprotokolle - Amazon Athena

Erstellen der Tabelle für ALB-Zugriffsprotokolle

  1. Kopieren Sie die folgende CREATE TABLE-Anweisung, fügen Sie sie in den Abfrage-Editor der Athena-Konsole ein und ändern Sie sie dann nach Bedarf für Ihre eigenen Anforderungen an die Protokolleinträge. Weitere Informationen zu den ersten Schritten mit der Athena-Konsole finden Sie unter Erste Schritte. Ersetzen Sie den Pfad in der LOCATION-Klausel durch den Speicherort Ihres Amazon S3-Zugriffsprotokollordners. Weitere Informationen zum Speicherort der Zugriffsprotokolldatei finden Sie unter Zugriffsprotokoll-Dateien im Benutzerhandbuch für Application Load Balancer.

    Informationen zu den einzelnen Protokolldateien-Feldern finden Sie unter Zugriffsprotokoll-Einträge im Benutzerhandbuch für Application Load Balancer.

    Anmerkung

    Die folgende CREATE TABLE-Beispielanweisung enthält die kürzlich hinzugefügten Spalten classification, classification_reason und conn_trace_id ('Verfolgungs-ID' oder TID). Um eine Tabelle für Application Load Balancer-Zugriffsprotokolle zu erstellen, die diese Einträge nicht enthalten, entfernen Sie die entsprechenden Spalten aus der CREATE TABLE-Anweisung und ändern Sie den regulären Ausdruck entsprechend.

    CREATE EXTERNAL TABLE IF NOT EXISTS alb_access_logs ( type string, time string, elb string, client_ip string, client_port int, target_ip string, target_port int, request_processing_time double, target_processing_time double, response_processing_time double, elb_status_code int, target_status_code string, received_bytes bigint, sent_bytes bigint, request_verb string, request_url string, request_proto string, user_agent string, ssl_cipher string, ssl_protocol string, target_group_arn string, trace_id string, domain_name string, chosen_cert_arn string, matched_rule_priority string, request_creation_time string, actions_executed string, redirect_url string, lambda_error_reason string, target_port_list string, target_status_code_list string, classification string, classification_reason string, conn_trace_id string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\\s]+?)\" \"([^\\s]+)\" \"([^ ]*)\" \"([^ ]*)\" ?([^ ]*)? ?( .*)?' ) LOCATION 's3://amzn-s3-demo-bucket/access-log-folder-path/'
    Anmerkung

    Wir empfehlen, das Muster ?( .*)? am Ende des input.regex-Parameters immer beizubehalten, um künftige Protokolleinträge zu verarbeiten, falls neue ALB-Protokollfelder hinzugefügt werden.

  2. Führen Sie die Abfrage in der Athena-Konsole aus. Nach Beendigung der Abfrage registriert Athena die alb_access_logs-Tabelle, sodass Sie die Daten zum Ausgeben von Abfragen nutzen können.