Crea e interroga una tabella per i log di VPC flusso di Amazon utilizzando la proiezione delle partizioni - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea e interroga una tabella per i log di VPC flusso di Amazon utilizzando la proiezione delle partizioni

Utilizzare una istruzione CREATE TABLE come la seguente per creare una tabella, partizionarla e popolare automaticamente le partizioni utilizzando la proiezione delle partizioni. Sostituire il nome della tabella test_table_vpclogs nell'esempio con il nome della propria tabella. Modifica la LOCATION clausola per specificare il bucket Amazon S3 che contiene i dati di log di AmazonVPC.

La seguente CREATE TABLE dichiarazione si riferisce ai log di VPC flusso forniti in un formato di partizionamento non in stile Hive. L'esempio consente l'aggregazione di più account. Se stai centralizzando i log di VPC flusso di più account in un unico bucket Amazon S3, l'ID dell'account deve essere inserito nel percorso Amazon S3.

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}" )

Query di esempio per test_table_vpclogs

Nelle seguenti query di esempio viene interrogata la test_table_vpclogs creata dall'istruzione CREATE TABLE precedente. Sostituire test_table_vpclogs nelle query con il nome della propria tabella. Modificare i valori delle colonne e altre variabili in base alle proprie esigenze.

Per restituire le prime 100 voci di log di accesso in ordine cronologico per un determinato periodo di tempo, eseguire una query come la seguente.

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

Per visualizzare quale server riceve il primo numero di HTTP pacchetti per un periodo di tempo specificato, esegui una query come la seguente. La query conta il numero di pacchetti ricevuti sulla HTTPS porta 443, li raggruppa per indirizzo IP di destinazione e restituisce le prime 10 voci della settimana precedente.

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

Per restituire i registri creati durante un determinato periodo di tempo, eseguire una query come la seguente.

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'

Per restituire i registri di accesso per un indirizzo IP di origine tra i periodi di tempo specificati, eseguire una query come la seguente.

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

Per elencare TCP le connessioni rifiutate, esegui una query come la seguente.

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

Per restituire i registri di accesso per l'intervallo di indirizzi IP che inizia con 10.117, eseguire una query come la seguente.

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

Per restituire i registri di accesso per un indirizzo IP di destinazione tra i periodi di tempo specificati, eseguire una query come la seguente.

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