Erstellen Sie eine Tabelle für Amazon VPC Flow Logs und fragen Sie sie ab - 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.

Erstellen Sie eine Tabelle für Amazon VPC Flow Logs und fragen Sie sie ab

Mit dem folgenden Verfahren wird eine VPC Amazon-Tabelle für VPC Amazon-Flow-Logs erstellt. Wenn Sie ein Flow-Protokoll mit einem benutzerdefinierten Format erstellen, erstellen Sie eine Tabelle mit Feldern, die mit den Feldern übereinstimmen, die Sie bei der Erstellung des Flow-Protokolls in der gleichen Reihenfolge angegeben haben, in der Sie sie angegeben haben.

So erstellen Sie eine Athena-Tabelle für Amazon VPC Flow Logs
  1. Geben Sie eine DDL Anweisung wie die folgende in den Abfrageeditor der Athena-Konsole ein und folgen Sie dabei den Richtlinien im Überlegungen und Einschränkungen Abschnitt. Die Beispielanweisung erstellt eine Tabelle mit den Spalten für die Amazon VPC Flow Logs-Versionen 2 bis 5, wie in den Flow-Protokolldatensätzen dokumentiert. Wenn Sie einen anderen Spaltensatz oder eine andere Spaltenreihenfolge verwenden, ändern Sie die Anweisung entsprechend.

    CREATE EXTERNAL TABLE IF NOT EXISTS `vpc_flow_logs` ( version int, account_id string, interface_id string, srcaddr string, dstaddr string, srcport int, dstport int, protocol bigint, packets bigint, bytes bigint, start bigint, `end` bigint, action string, log_status string, vpc_id string, subnet_id string, instance_id string, tcp_flags int, type string, pkt_srcaddr string, pkt_dstaddr string, region string, az_id string, sublocation_type string, sublocation_id string, pkt_src_aws_service string, pkt_dst_aws_service string, flow_direction string, traffic_path int ) PARTITIONED BY (`date` date) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/' TBLPROPERTIES ("skip.header.line.count"="1");

    Beachten Sie folgende Punkte:

    • In der Abfrage wird die Angabe von a SerDe angegeben ROW FORMAT DELIMITED und nicht angegeben. Das heißt, die Abfrage verwendet Lazy Simple SerDe für CSVTSV, und benutzerdefinierte Dateien mit Trennzeichen. Bei dieser Abfrage werden Felder durch ein Leerzeichen beendet.

    • Die PARTITIONED BY-Klausel verwendet den date-Typ. Dies ermöglicht es, in Abfragen mathematische Operatoren für eine Auswahl vor oder nach einem bestimmten Datum zu verwenden.

      Anmerkung

      Da date es sich um ein reserviertes Schlüsselwort in DDL Anweisungen handelt, wird es durch Backstriche maskiert. Weitere Informationen finden Sie unter Reservierte Schlüsselwörter in Abfragen umgehen.

    • Bei einem VPC Flow-Protokoll mit einem anderen benutzerdefinierten Format ändern Sie die Felder so, dass sie mit den Feldern übereinstimmen, die Sie bei der Erstellung des Flow-Protokolls angegeben haben.

  2. Ändern Sie LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/' so, dass auf den Amazon-S3-Bucket gezeigt wird, der Ihre Protokolldaten enthält.

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

  4. Erstellen Sie Partitionen, um die Daten lesen zu können, wie in der folgenden Beispielabfrage. Diese Abfrage erstellt eine einfache Partition für ein angegebenes Datum. Ersetzen Sie die Platzhalter für Datum und Standort nach Bedarf.

    Anmerkung

    Diese Abfrage erstellt für einen von Ihnen angegebenen Zeitraum lediglich eine einzige Partition. Um den Prozess zu automatisieren, verwenden Sie ein Skript, das diese Abfrage ausführt und auf diese Weise Partitionen für year/month/day erstellt, oder verwenden Sie eine CREATE TABLE-Anweisung, die die partition projection (Partitionsprojektion) angibt.

    ALTER TABLE vpc_flow_logs ADD PARTITION (`date`='YYYY-MM-dd') LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/YYYY/MM/dd';

Beispielabfragen für die Tabelle vpc_flow_logs

Verwenden Sie den Abfrage-Editor in der Athena-Konsole, um SQL Anweisungen für die Tabelle auszuführen, die Sie erstellen. Sie können die Abfragen speichern, frühere Abfragen anzeigen oder Abfrageergebnisse im CSV Format herunterladen. Ersetzen Sie in den folgenden Beispielen vpc_flow_logs mit dem Namen Ihrer Tabelle. Ändern Sie die Spaltenwerte und andere Variablen entsprechend Ihren Anforderungen.

Die folgende Beispielabfrage listet maximal 100 Flow-Protokolle für das angegebene Datum auf.

SELECT * FROM vpc_flow_logs WHERE date = DATE('2020-05-04') LIMIT 100;

Die folgende Abfrage listet alle abgelehnten TCP Verbindungen auf und verwendet die neu erstellte Datumspartitionsspaltedate,, um daraus den Wochentag zu extrahieren, an dem diese Ereignisse eingetreten sind.

SELECT day_of_week(date) AS day, date, interface_id, srcaddr, action, protocol FROM vpc_flow_logs WHERE action = 'REJECT' AND protocol = 6 LIMIT 100;

Verwenden Sie die folgende Abfrage, um zu ermitteln, welcher Ihrer Server die meisten HTTPS Anfragen empfängt. Sie zählt die Anzahl der auf HTTPS Port 443 empfangenen Pakete, gruppiert sie nach Ziel-IP-Adresse und gibt die Top 10 der letzten Woche zurück.

SELECT SUM(packets) AS packetcount, dstaddr FROM vpc_flow_logs WHERE dstport = 443 AND date > current_date - interval '7' day GROUP BY dstaddr ORDER BY packetcount DESC LIMIT 10;