

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création et interrogation d’une table pour les journaux de flux Amazon VPC à l’aide de la projection de partitions
<a name="vpc-flow-logs-partition-projection"></a>

Utilisez une instruction `CREATE TABLE` comme la suivante pour créer une table, partitionner la table et remplir automatiquement les partitions en utilisant [projection de partition](partition-projection.md). Remplacer le nom de la table `test_table_vpclogs` dans l'exemple par le nom de votre table. Modifiez la clause `LOCATION` pour spécifier le compartiment Amazon S3 qui contient les données de vos journaux Amazon VPC.

L'instruction `CREATE TABLE` suivante concerne les journaux de flux VPC livrés dans un format de partitionnement de style non Hive. L’exemple permet l’agrégation de plusieurs comptes. Si vous centralisez les journaux de flux VPC de plusieurs comptes dans un compartiment Amazon S3, l'ID du compte doit être saisi dans le chemin d'accès 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}"
)
```

## Exemples de requêtes pour la table test\$1table\$1vpclogs
<a name="query-examples-vpc-logs-pp"></a>

L'exemple de requête suivant interroge la table `test_table_vpclogs` créée par l'instruction précédente `CREATE TABLE`. Remplacez `test_table_vpclogs` dans les requêtes par le nom de votre table. Modifiez les valeurs de colonne et d'autres variables en fonction de vos besoins.

Pour renvoyer les 100 premières entrées du journal d'accès dans l'ordre chronologique pendant une période donnée, exécutez une requête comme la suivante.

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

Pour voir quel serveur reçoit les dix premiers paquets HTTP pendant une période de temps spécifiée, exécutez une requête semblable à la suivante. La requête compte le nombre de paquets reçus sur le port HTTPS 443, les regroupe par adresse IP de destination et renvoie les 10 premières entrées de la semaine précédente.

```
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
```

Pour renvoyer les journaux créés pendant une période donnée, exécutez une requête semblable à la suivante.

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

Pour renvoyer les journaux d'accès d'une adresse IP source entre des périodes spécifiées, exécutez une requête semblable à la suivante.

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

La requête ci-dessous affiche toutes les connexions TCP rejetées.

```
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
```

Pour renvoyer les journaux d'accès de la plage d'adresses IP commençant par `10.117`, exécutez une requête similaire à la suivante.

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

Pour renvoyer les journaux d'accès d'une adresse IP de destination entre une certaine plage de temps, exécutez une requête semblable à la suivante.

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