Erstellen und Abfragen einer Tabelle für VPC Amazon-Flow-Logs mithilfe der Partitionsprojektion - 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 und Abfragen einer Tabelle für VPC Amazon-Flow-Logs mithilfe der Partitionsprojektion

Verwenden Sie eine CREATE TABLE-Anweisung wie die folgende, um eine Tabelle zu erstellen, die Tabelle zu partitionieren und die Partitionen mithilfe der partition projection (Partitionsprojektion) automatisch aufzufüllen. Ersetzt den Tabellennamen test_table_vpclogs im Beispiel mit dem Namen Ihrer Tabelle. Bearbeiten Sie die LOCATION Klausel, um den Amazon S3 S3-Bucket anzugeben, der Ihre VPC Amazon-Protokolldaten enthält.

Die folgende CREATE TABLE Anweisung bezieht sich auf VPC Flow-Logs, die nicht in einem Partitionierungsformat im Hive-Stil geliefert werden. Das Beispiel ermöglicht die Aggregation mehrerer Konten. Wenn Sie VPC Flow-Protokolle von mehreren Konten in einem Amazon S3 S3-Bucket zentralisieren, muss die Konto-ID in den Amazon S3 S3-Pfad eingegeben werden.

CREATE EXTERNAL TABLE IF NOT EXISTS test_table_vpclogs ( 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, 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 (accid string, region string, day string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION '$LOCATION_OF_LOGS' TBLPROPERTIES ( "skip.header.line.count"="1", "projection.enabled" = "true", "projection.accid.type" = "enum", "projection.accid.values" = "$ACCID_1,$ACCID_2", "projection.region.type" = "enum", "projection.region.values" = "$REGION_1,$REGION_2,$REGION_3", "projection.day.type" = "date", "projection.day.range" = "$START_RANGE,NOW", "projection.day.format" = "yyyy/MM/dd", "storage.location.template" = "s3://amzn-s3-demo-bucket/AWSLogs/${accid}/vpcflowlogs/${region}/${day}" )

Beispielabfragen für test_table_vpclogs

Die folgenden Beispielabfragen fragen test_table_vpclogs ab, das von der vorherigen CREATE TABLE-Anweisung erstellt wurde. Ersetzen Sie test_table_vpclogs in den Abfragen mit dem Namen Ihrer eigenen Tabelle. Ändern Sie die Spaltenwerte und andere Variablen entsprechend Ihren Anforderungen.

Um die ersten 100 Zugriffsprotokolleinträge für einen bestimmten Zeitraum in chronologischer Reihenfolge zurückzugeben, führen Sie eine Abfrage wie die folgende aus.

SELECT * FROM test_table_vpclogs WHERE day >= '2021/02/01' AND day < '2021/02/28' ORDER BY day ASC LIMIT 100

Um zu sehen, welcher Server die zehn wichtigsten HTTP Pakete für einen bestimmten Zeitraum empfängt, führen Sie eine Abfrage wie die folgende aus. Die Abfrage zählt die Anzahl der auf HTTPS Port 443 empfangenen Pakete, gruppiert sie nach Ziel-IP-Adresse und gibt die zehn wichtigsten Einträge der Vorwoche zurück.

SELECT SUM(packets) AS packetcount, dstaddr FROM test_table_vpclogs WHERE dstport = 443 AND day >= '2021/03/01' AND day < '2021/03/31' GROUP BY dstaddr ORDER BY packetcount DESC LIMIT 10

Um die Protokolle zurückzugeben, die während eines bestimmten Zeitraums erstellt wurden, führen Sie eine Abfrage wie die folgende aus.

SELECT interface_id, srcaddr, action, protocol, to_iso8601(from_unixtime(start)) AS start_time, to_iso8601(from_unixtime("end")) AS end_time FROM test_table_vpclogs WHERE DAY >= '2021/04/01' AND DAY < '2021/04/30'

Um die Zugriffsprotokolle für eine Quell-IP-Adresse zwischen bestimmten Zeiträumen zurückzugeben, führen Sie eine Abfrage wie die folgende aus.

SELECT * FROM test_table_vpclogs WHERE srcaddr = '10.117.1.22' AND day >= '2021/02/01' AND day < '2021/02/28'

Führen Sie eine Abfrage wie die folgende aus, um abgelehnte TCP Verbindungen aufzulisten.

SELECT day, interface_id, srcaddr, action, protocol FROM test_table_vpclogs WHERE action = 'REJECT' AND protocol = 6 AND day >= '2021/02/01' AND day < '2021/02/28' LIMIT 10

Führen Sie eine Abfrage wie die folgende aus, um die Zugriffsprotokolle für den IP-Adressbereich zurückzugeben, der mit 10.117 beginnt.

SELECT * FROM test_table_vpclogs WHERE split_part(srcaddr,'.', 1)='10' AND split_part(srcaddr,'.', 2) ='117'

Um die Zugriffsprotokolle für eine Ziel-IP-Adresse in einem bestimmten Zeitraum zurückzugeben, führen Sie eine Abfrage wie die folgende aus.

SELECT * FROM test_table_vpclogs WHERE dstaddr = '10.0.1.14' AND day >= '2021/01/01' AND day < '2021/01/31'