

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à.

# Creare ed eseguire query su una tabella per il flusso di log di Amazon VPC tramite la proiezione delle partizioni
<a name="vpc-flow-logs-partition-projection"></a>

Utilizzare una istruzione `CREATE TABLE` come la seguente per creare una tabella, partizionarla e popolare automaticamente le partizioni utilizzando la [proiezione delle partizioni](partition-projection.md). Sostituire il nome della tabella `test_table_vpclogs` nell'esempio con il nome della propria tabella. Modificare la clausola `LOCATION` per specificare il bucket Amazon S3 che contiene i dati di log di Amazon VPC.

La seguente istruzione `CREATE TABLE` è per il flusso di log VPC fornito in formato di partizionamento in stile non Hive. L'esempio consente l'aggregazione di più account. Se stai centralizzando i log di flusso VPC da più account in un 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
<a name="query-examples-vpc-logs-pp"></a>

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 i dieci pacchetti HTTP principali per un determinato periodo di tempo, eseguire una query come la seguente. La query conta il numero di pacchetti ricevuti sulla porta HTTPS 443, li raggruppa in base all'indirizzo IP di destinazione e restituisce le prime 10 voci principali dalla 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 le connessioni TCP rifiutate, eseguire 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'
```