Crea una tabella per i log di VPC flusso di Amazon ed esegui una query - 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 una tabella per i log di VPC flusso di Amazon ed esegui una query

La procedura seguente crea una VPC tabella Amazon per i log di VPC flusso di Amazon. Quando crei un log di flusso con un formato personalizzato, crea una tabella con campi che corrispondano a quelli specificati durante la creazione del log di flusso, nello stesso ordine in cui li hai specificati.

Per creare una tabella Athena per i log di flusso di Amazon VPC
  1. Inserisci un'DDListruzione come la seguente nell'editor di query della console Athena, seguendo le linee guida nella Considerazioni e limitazioni sezione. L'istruzione di esempio crea una tabella con le colonne per le versioni da 2 a 5 dei log di VPC flusso di Amazon, come documentato nei record di log di Flow. Se si utilizza un set di colonne o un ordine di colonne diverso, modificare questa istruzione di conseguenza.

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

    Notare i seguenti punti:

    • La query specifica ROW FORMAT DELIMITED e omette di specificare un. SerDe Ciò significa che la query utilizza il metodo Lazy SerDe Simple per CSV file TSV delimitati in modo personalizzato. In questa query, i campi terminano con uno spazio.

    • La clausola PARTITIONED BY utilizza il tipo date. In questo modo è possibile utilizzare operatori matematici nelle query per selezionare ciò che è più vecchio o più recente rispetto a una determinata data.

      Nota

      Poiché date è una parola chiave riservata nelle DDL istruzioni, viene evitata dai caratteri di spunta inversa. Per ulteriori informazioni, consulta Evita le parole chiave riservate nelle query.

    • Per un log di VPC flusso con un formato personalizzato diverso, modifica i campi in modo che corrispondano ai campi specificati al momento della creazione del log di flusso.

  2. Modificare LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/' perché punti al bucket Amazon S3 che contiene i dati di log.

  3. Eseguire la query nella console Athena. Una volta completata la query, Athena registra la tabella vpc_flow_logs, rendendo i dati in essa contenuti pronti per l'esecuzione di query.

  4. Creare partizioni per poter leggere i dati, come nella seguente query di esempio. Questa query crea una singola partizione per una data specificata. Sostituire i segnaposto per data e posizione in base alle esigenze.

    Nota

    Questa query crea unicamente una singola partizione, per la data specificata. Per automatizzare il processo, utilizzare uno script che esegue questa query e crea partizioni in questo modo per year/month/day oppure utilizzare un'istruzione CREATE TABLE che specifica la proiezione delle partizioni.

    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';

Query di esempio per la tabella vpc_flow_logs

Usa l'editor di query nella console Athena per eseguire SQL istruzioni sulla tabella che crei. È possibile salvare le interrogazioni, visualizzare le interrogazioni precedenti o scaricare i risultati delle query in formato. CSV Negli esempi seguenti, sostituire vpc_flow_logs con il nome della tabella. Modificare i valori delle colonne e altre variabili in base alle proprie esigenze.

La query di esempio seguente elenca un massimo di 100 log di flusso per la data specificata.

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

La seguente query elenca tutte le TCP connessioni rifiutate e utilizza la colonna di partizione della data appena creata per estrarre da essa il giorno della settimana in cui si sono verificati questi eventi. date

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;

Per vedere quale dei tuoi server sta ricevendo il maggior numero di HTTPS richieste, usa la seguente query. Conta il numero di pacchetti ricevuti sulla HTTPS porta 443, li raggruppa per indirizzo IP di destinazione e restituisce i primi 10 dell'ultima settimana.

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;