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 VPC flux Amazon à l'aide de la projection de partition
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. Remplacer le nom de la table test_table_vpclogs
dans l'exemple par le nom de votre table. Modifiez la LOCATION
clause pour spécifier le compartiment Amazon S3 qui contient les données de votre VPC journal Amazon.
L'CREATE TABLE
instruction suivante concerne les journaux de VPC flux fournis dans un format de partitionnement autre que celui de Hive. L’exemple permet l’agrégation de plusieurs comptes. Si vous centralisez les journaux VPC Flow de plusieurs comptes dans un seul compartiment Amazon S3, l'ID du compte doit être saisi dans le chemin 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_table_vpclogs
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 savoir quel serveur reçoit le plus grand nombre de HTTP paquets pendant une période donnée, exécutez une requête comme celle-ci. La requête compte le nombre de paquets reçus sur le HTTPS port 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'
Pour répertorier TCP les connexions rejetées, exécutez une requête comme celle-ci.
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'