

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Erstellen und Abfragen einer Tabelle für Amazon-VPC-Flow-Protokolle mit Partitionsprojektion
<a name="vpc-flow-logs-partition-projection"></a>

Verwenden Sie eine `CREATE TABLE`-Anweisung wie die folgende, um eine Tabelle zu erstellen, die Tabelle zu partitionieren und die Partitionen mithilfe der [partition projection](partition-projection.md) (Partitionsprojektion) automatisch aufzufüllen. Ersetzt den Tabellennamen `test_table_vpclogs` im Beispiel mit dem Namen Ihrer Tabelle. Bearbeiten Sie die `LOCATION`-Klausel, um den Amazon-S3-Bucket anzugeben, der Ihre Amazon-VPC-Protokolldaten enthält.

Folgende `CREATE TABLE`-Anweisung gilt für VPC-Flow-Protokolle, die im Partitionierungsformat im Nicht-Hive-Stil geliefert werden. Das Beispiel ermöglicht die Aggregation mehrerer Konten. Wenn Sie VPC-Ablaufprotokolle von mehreren Konten in einem Amazon-S3-Bucket zentralisieren, muss die Konto-ID im Amazon-S3-Pfad angegeben werden.

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

## Beispielabfragen für test\$1table\$1vpclogs
<a name="query-examples-vpc-logs-pp"></a>

Die folgenden Beispielabfragen fragen `test_table_vpclogs` ab, das von der vorherigen `CREATE TABLE`-Anweisung erstellt wurde. Ersetzen Sie `test_table_vpclogs` in den Abfragen mit dem Namen Ihrer eigenen Tabelle. Ändern Sie die Spaltenwerte und andere Variablen entsprechend Ihren Anforderungen.

Um die ersten 100 Zugriffsprotokolleinträge für einen bestimmten Zeitraum in chronologischer Reihenfolge zurückzugeben, führen Sie eine Abfrage wie die folgende aus.

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

Um anzuzeigen, welcher Server die zehn wichtigsten HTTP-Pakete für einen bestimmten Zeitraum erhält, führen Sie eine Abfrage wie die folgende aus. Die Abfrage zählt die Anzahl der auf HTTPS-Port 443 empfangenen Pakete, gruppiert sie nach Ziel-IP-Adresse und gibt die Top-10-Einträge der Vorwoche zurück.

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

Um die Protokolle zurückzugeben, die während eines bestimmten Zeitraums erstellt wurden, führen Sie eine Abfrage wie die folgende aus.

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

Um die Zugriffsprotokolle für eine Quell-IP-Adresse zwischen bestimmten Zeiträumen zurückzugeben, führen Sie eine Abfrage wie die folgende aus.

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

Führen Sie eine Abfrage wie die folgende aus, um abgelehnte TCP-Verbindungen aufzulisten.

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

Führen Sie eine Abfrage wie die folgende aus, um die Zugriffsprotokolle für den IP-Adressbereich zurückzugeben, der mit `10.117` beginnt.

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

Um die Zugriffsprotokolle für eine Ziel-IP-Adresse in einem bestimmten Zeitraum zurückzugeben, führen Sie eine Abfrage wie die folgende aus.

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