

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kueri log aliran VPC Amazon
<a name="vpc-flow-logs"></a>

Log aliran Amazon Virtual Private Cloud menangkap informasi tentang lalu lintas IP yang pergi ke dan dari antarmuka jaringan di VPC. Gunakan log untuk menyelidiki pola lalu lintas jaringan dan mengidentifikasi ancaman dan risiko di seluruh jaringan VPC Anda.

Untuk menanyakan log aliran VPC Amazon Anda, Anda memiliki dua opsi:

****
+ **Konsol VPC Amazon** — Gunakan fitur integrasi Athena di Konsol VPC Amazon untuk membuat template CloudFormation yang membuat database Athena, workgroup, dan tabel flow log dengan partisi untuk Anda. Template ini juga membuat serangkaian [kueri log alur yang telah ditentukan sebelumnya](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-athena.html#predefined-queries) yang dapat Anda gunakan untuk mendapatkan wawasan tentang lalu lintas yang mengalir melalui VPC Anda.

  Untuk informasi tentang pendekatan ini, lihat [Log alur kueri menggunakan Amazon Athena](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-athena.html) di Panduan Pengguna Amazon *VPC*.
+ **Konsol Amazon Athena** — Buat tabel dan kueri langsung di konsol Athena. Untuk informasi lebih lanjut, lanjutkan membaca halaman ini.

Sebelum Anda mulai mengkueri log di Athena,[Aktifkan log alur VPC](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html), dan konfigurasikan untuk disimpan ke bucket Amazon S3. Setelah Anda membuat log, biarkan mereka berjalan selama beberapa menit untuk mengumpulkan beberapa data. Log dibuat dalam format kompresi GZIP yang Athena memungkinkan Anda kueri secara langsung. 

Saat Anda membuat log aliran VPC, Anda dapat menggunakan format khusus saat Anda ingin menentukan bidang yang akan dikembalikan dalam log aliran dan urutan bidang yang muncul. Untuk informasi selengkapnya tentang catatan log alur, lihat [Catatan log aliran](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records) di *Panduan Pengguna Amazon VPC*.

## Pertimbangan dan batasan
<a name="vpc-flow-logs-common-considerations"></a>

Saat Anda membuat tabel di Athena untuk log aliran VPC Amazon, ingat poin-poin berikut:
+ Secara default, di Athena, Parket akan mengakses kolom berdasarkan nama. Untuk informasi selengkapnya, lihat [Menangani pembaruan skema](handling-schema-updates-chapter.md).
+ Gunakan nama dalam catatan log alur untuk nama kolom di Athena. Nama-nama kolom dalam skema Athena harus sama persis dengan nama bidang di log aliran VPC Amazon, dengan perbedaan berikut: 
  + Ganti tanda hubung di nama bidang log Amazon VPC dengan garis bawah di nama kolom Athena. Untuk informasi tentang karakter yang dapat diterima untuk nama database, nama tabel, dan nama kolom di Athena, lihat. [Nama database, tabel, dan kolom](tables-databases-columns-names.md)
  + Lepaskan nama catatan log alur yang merupakan [kata kunci yang dicadangkan](reserved-words.md) di Athena dengan melampirkannya dengan backticks. 
+ Log aliran VPC bersifat Akun AWS spesifik. Saat Anda memublikasikan file log Anda ke Amazon S3, jalur yang dibuat Amazon VPC di Amazon S3 menyertakan ID yang digunakan untuk Akun AWS membuat log aliran. Untuk informasi selengkapnya, lihat [Menerbitkan log alur ke Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-s3.html) di Panduan Pengguna Amazon *VPC*.

**Topics**
+ [Pertimbangan dan batasan](#vpc-flow-logs-common-considerations)
+ [Buat tabel untuk log aliran VPC Amazon dan kueri](vpc-flow-logs-create-table-statement.md)
+ [Buat tabel untuk log aliran dalam format Apache Parquet](vpc-flow-logs-parquet.md)
+ [Buat dan kueri tabel untuk log aliran VPC Amazon menggunakan proyeksi partisi](vpc-flow-logs-partition-projection.md)
+ [Buat tabel untuk log aliran dalam format Apache Parquet menggunakan proyeksi partisi](vpc-flow-logs-partition-projection-parquet-example.md)
+ [Sumber daya tambahan](query-examples-vpc-logs-additional-resources.md)

# Buat tabel untuk log aliran VPC Amazon dan kueri
<a name="vpc-flow-logs-create-table-statement"></a>

Prosedur berikut membuat tabel VPC Amazon untuk log aliran VPC Amazon. Saat Anda membuat log alur dengan format kustom, Anda membuat tabel dengan bidang yang cocok dengan bidang yang Anda tentukan saat membuat log alur dalam urutan yang sama dengan yang Anda tentukan.

**Untuk membuat tabel Athena untuk log aliran VPC Amazon**

1. Masukkan pernyataan DDL seperti berikut ini ke editor kueri konsol Athena, mengikuti pedoman di [Pertimbangan dan batasan](vpc-flow-logs.md#vpc-flow-logs-common-considerations) bagian ini. Pernyataan sampel membuat tabel yang memiliki kolom untuk log aliran VPC Amazon versi 2 hingga 5 seperti yang didokumentasikan dalam [catatan log Flow](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records). Jika Anda menggunakan kumpulan kolom atau urutan kolom yang berbeda, ubah pernyataan yang sesuai.

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

   Perhatikan poin-poin berikut:
   + Query menentukan `ROW FORMAT DELIMITED` dan menghilangkan menentukan. SerDe Ini berarti bahwa kueri menggunakan[Lazy Simple SerDe untuk CSV, TSV, dan file yang dibatasi khusus](lazy-simple-serde.md). Dalam kueri ini, bidang diakhiri oleh spasi.
   + Parameter`PARTITIONED BY`Klausul menggunakan`date`Jenis. Ini memungkinkan untuk menggunakan operator matematika dalam kueri untuk memilih apa yang lebih tua atau lebih baru dari tanggal tertentu.
**catatan**  
Karena `date` merupakan kata kunci yang dicadangkan dalam pernyataan DDL, itu lolos oleh karakter centang kembali. Untuk informasi selengkapnya, lihat [Melarikan diri dari kata kunci yang dicadangkan dalam kueri](reserved-words.md).
   + Untuk log aliran VPC dengan format kustom yang berbeda, ubah bidang agar sesuai dengan bidang yang Anda tentukan saat membuat log alur.

1. Memodifikasi`LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/'`Untuk menunjuk ke bucket Amazon S3 yang berisi data log Anda.

1. Jalankan kueri di konsol Athena. Setelah kueri selesai, Athena register`vpc_flow_logs`tabel, membuat data di dalamnya siap bagi Anda untuk mengeluarkan kueri.

1. Membuat partisi untuk dapat membaca data, seperti dalam contoh kueri berikut. Kueri ini menciptakan partisi tunggal untuk tanggal yang ditentukan. Ganti placeholder untuk tanggal dan lokasi yang diperlukan. 
**catatan**  
Kueri ini menciptakan satu partisi saja, untuk tanggal yang Anda tentukan. [Untuk mengotomatisasi proses, gunakan skrip yang menjalankan query ini dan membuat partisi dengan cara ini untuk`year/month/day`, atau gunakan `CREATE TABLE` pernyataan yang menentukan proyeksi partisi.](vpc-flow-logs-partition-projection.md)

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

## Contoh kueri untuk tabel vpc\$1flow\$1logs
<a name="query-examples-vpc-logs"></a>

Gunakan editor kueri di konsol Athena untuk menjalankan pernyataan SQL pada tabel yang Anda buat. Anda dapat menyimpan kueri, melihat kueri sebelumnya, atau mengunduh hasil kueri dalam format CSV. Dalam contoh berikut, ganti `vpc_flow_logs` dengan nama tabel Anda. Ubah nilai kolom dan variabel lain sesuai dengan kebutuhan Anda.

Contoh kueri berikut mencantumkan maksimum 100 log alur untuk tanggal yang ditentukan.

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

Kueri berikut mencantumkan semua koneksi TCP ditolak dan menggunakan kolom partisi tanggal yang baru dibuat,`date`, untuk mengekstraknya dari hari dalam seminggu dimana peristiwa-peristiwa ini terjadi.

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

Untuk melihat server mana yang menerima permintaan HTTPS dengan jumlah tertinggi, gunakan kueri berikut. Ini menghitung jumlah paket yang diterima pada HTTPS port 443, grup mereka berdasarkan alamat IP tujuan, dan mengembalikan 10 besar dari minggu lalu.

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

# Buat tabel untuk log aliran dalam format Apache Parquet
<a name="vpc-flow-logs-parquet"></a>

Prosedur berikut membuat tabel VPC Amazon untuk log aliran Amazon VPC dalam format Apache Parquet.

**Untuk membuat tabel Athena untuk log aliran Amazon VPC dalam format Parket**

1. Masukkan pernyataan DDL seperti berikut ini ke editor kueri konsol Athena, mengikuti pedoman di [Pertimbangan dan batasan](vpc-flow-logs.md#vpc-flow-logs-common-considerations) bagian ini. Pernyataan sampel membuat tabel yang memiliki kolom untuk log aliran VPC Amazon versi 2 hingga 5 seperti yang didokumentasikan dalam [catatan log Aliran](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records) dalam format Parket, Hive dipartisi setiap jam. Jika Anda tidak memiliki partisi per jam, hapus `hour` dari klausa. `PARTITIONED BY`

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS vpc_flow_logs_parquet (
     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 (
     `aws-account-id` string,
     `aws-service` string,
     `aws-region` string,
     `year` string, 
     `month` string, 
     `day` string,
     `hour` string
   )
   ROW FORMAT SERDE 
     'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
   STORED AS INPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
   OUTPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket/prefix/AWSLogs/'
   TBLPROPERTIES (
     'EXTERNAL'='true', 
     'skip.header.line.count'='1'
     )
   ```

1. Ubah sampel `LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/'` untuk menunjuk ke jalur Amazon S3 yang berisi data log Anda.

1. Jalankan kueri di konsol Athena.

1. Jika data Anda dalam format yang kompatibel dengan HIVE, jalankan perintah berikut di konsol Athena untuk memperbarui dan memuat partisi Hive di metastore. Setelah kueri selesai, Anda dapat menanyakan data dalam `vpc_flow_logs_parquet` tabel.

   ```
   MSCK REPAIR TABLE vpc_flow_logs_parquet
   ```

   Jika Anda tidak menggunakan data yang kompatibel dengan Hive, jalankan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) untuk memuat partisi.

*Untuk informasi selengkapnya tentang penggunaan Athena untuk menanyakan log aliran VPC Amazon dalam format Parket, lihat posting [Optimalkan kinerja dan kurangi biaya untuk analitik jaringan dengan Log Aliran VPC dalam format Parket Apache di Blog Big](https://aws.amazon.com/blogs/big-data/optimize-performance-and-reduce-costs-for-network-analytics-with-vpc-flow-logs-in-apache-parquet-format/) Data.AWS *

# Buat dan kueri tabel untuk log aliran VPC Amazon menggunakan proyeksi partisi
<a name="vpc-flow-logs-partition-projection"></a>

Gunakan `CREATE TABLE` pernyataan seperti berikut ini untuk membuat tabel, partisi tabel, dan mengisi partisi secara otomatis dengan menggunakan proyeksi [partisi](partition-projection.md). Ganti nama tabel `test_table_vpclogs` dalam contoh dengan nama tabel Anda. Edit `LOCATION` klausa untuk menentukan bucket Amazon S3 yang berisi data log VPC Amazon Anda.

`CREATE TABLE`Pernyataan berikut adalah untuk log aliran VPC yang dikirimkan dalam format partisi gaya non-HIVE. Contoh ini memungkinkan agregasi multi-akun. Jika Anda memusatkan log VPC Flow dari beberapa akun ke dalam satu bucket Amazon S3, ID akun harus dimasukkan di jalur 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}"
)
```

## Contoh kueri untuk test\$1table\$1vpclogs
<a name="query-examples-vpc-logs-pp"></a>

Contoh query berikut `test_table_vpclogs` dibuat oleh pernyataan sebelumnya`CREATE TABLE`. Ganti `test_table_vpclogs` dalam kueri dengan nama tabel Anda sendiri. Ubah nilai kolom dan variabel lain sesuai dengan kebutuhan Anda.

Untuk mengembalikan 100 entri log akses pertama dalam urutan kronologis untuk jangka waktu tertentu, jalankan kueri seperti berikut ini.

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

Untuk melihat server mana yang menerima sepuluh besar paket HTTP untuk jangka waktu tertentu, jalankan kueri seperti berikut ini. Kueri menghitung jumlah paket yang diterima pada port HTTPS 443, mengelompokkannya berdasarkan alamat IP tujuan, dan mengembalikan 10 entri teratas dari minggu sebelumnya.

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

Untuk mengembalikan log yang dibuat selama periode waktu tertentu, jalankan kueri seperti berikut ini.

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

Untuk mengembalikan log akses untuk alamat IP sumber antara periode waktu tertentu, jalankan kueri seperti berikut ini.

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

Untuk membuat daftar koneksi TCP yang ditolak, jalankan kueri seperti berikut ini.

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

Untuk mengembalikan log akses untuk rentang alamat IP yang dimulai dengan`10.117`, jalankan kueri seperti berikut ini.

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

Untuk mengembalikan log akses untuk alamat IP tujuan antara rentang waktu tertentu, jalankan kueri seperti berikut ini.

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

# Buat tabel untuk log aliran dalam format Apache Parquet menggunakan proyeksi partisi
<a name="vpc-flow-logs-partition-projection-parquet-example"></a>

`CREATE TABLE`Pernyataan proyeksi partisi berikut untuk log aliran VPC dalam format Apache Parquet, tidak kompatibel dengan Hive, dan dipartisi berdasarkan jam dan tanggal, bukan hari. Ganti nama tabel `test_table_vpclogs_parquet` dalam contoh dengan nama tabel Anda. Edit `LOCATION` klausa untuk menentukan bucket Amazon S3 yang berisi data log VPC Amazon Anda.

```
CREATE EXTERNAL TABLE IF NOT EXISTS test_table_vpclogs_parquet (
  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 (region string, date string, hour string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/{account_id}/vpcflowlogs/'
TBLPROPERTIES (
"EXTERNAL"="true",
"skip.header.line.count" = "1",
"projection.enabled" = "true",
"projection.region.type" = "enum",
"projection.region.values" = "us-east-1,us-west-2,ap-south-1,eu-west-1",
"projection.date.type" = "date",
"projection.date.range" = "2021/01/01,NOW",
"projection.date.format" = "yyyy/MM/dd",
"projection.hour.type" = "integer",
"projection.hour.range" = "00,23",
"projection.hour.digits" = "2",
"storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/AWSLogs/${account_id}/vpcflowlogs/${region}/${date}/${hour}"
)
```

# Sumber daya tambahan
<a name="query-examples-vpc-logs-additional-resources"></a>

Untuk informasi selengkapnya tentang penggunaan Athena untuk menganalisis log aliran VPC, lihat posting blog AWS Big Data berikut:
+ [Analisis Log Aliran VPC dengan integrasi Amazon point-and-click Athena](https://aws.amazon.com/blogs/networking-and-content-delivery/analyze-vpc-flow-logs-with-point-and-click-amazon-athena-integration/) 
+ [Menganalisis log aliran VPC menggunakan Amazon Athena dan Quick](https://aws.amazon.com/blogs/big-data/analyzing-vpc-flow-logs-using-amazon-athena-and-amazon-quicksight/)
+ [Mengoptimalkan performa dan mengurangi biaya untuk analitik jaringan dengan VPC Flow Logs dalam format Apache Parquet ](https://aws.amazon.com/blogs/big-data/optimize-performance-and-reduce-costs-for-network-analytics-with-vpc-flow-logs-in-apache-parquet-format/)