Buat tabel untuk log VPC aliran Amazon dan kueri - Amazon Athena

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

Buat tabel untuk log VPC aliran Amazon dan kueri

Prosedur berikut membuat VPC tabel Amazon untuk log VPC aliran Amazon. Saat 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 Amazon VPC
  1. Masukkan DDL pernyataan seperti berikut ini ke editor kueri konsol Athena, mengikuti pedoman di bagian iniPertimbangan dan batasan. Pernyataan sampel membuat tabel yang memiliki kolom untuk Amazon VPC flow log versi 2 sampai 5 seperti yang didokumentasikan dalam catatan log Flow. 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 bidang berikut:

    • Query menentukan ROW FORMAT DELIMITED dan menghilangkan menentukan. SerDe Ini berarti bahwa kueri menggunakanMalas Sederhana SerDe untukCSV,TSV, dan file yang dibatasi khusus. Dalam kueri ini, bidang diakhiri oleh spasi.

    • ParameterPARTITIONED BYKlausul menggunakandateJenis. 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 DDL pernyataan, itu lolos oleh karakter centang belakang. Untuk informasi selengkapnya, lihat Melarikan diri dari kata kunci yang dicadangkan dalam kueri.

    • Untuk log VPC alur dengan format kustom yang berbeda, ubah bidang agar sesuai dengan bidang yang Anda tentukan saat membuat log alur.

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

  3. Jalankan kueri di konsol Athena. Setelah kueri selesai, Athena registervpc_flow_logstabel, membuat data di dalamnya siap bagi Anda untuk mengeluarkan kueri.

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

    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_flow_logs

Gunakan editor kueri di konsol Athena untuk menjalankan SQL pernyataan pada tabel yang Anda buat. Anda dapat menyimpan kueri, melihat kueri sebelumnya, atau mengunduh hasil kueri dalam CSV format. 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 TCP koneksi yang ditolak dan menggunakan kolom partisi tanggal yang baru dibuatdate,, untuk mengekstrak darinya hari dalam seminggu di mana 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 salah satu server Anda yang menerima jumlah HTTPS permintaan tertinggi, gunakan kueri berikut. Ini menghitung jumlah paket yang diterima pada HTTPS port 443, mengelompokkannya berdasarkan alamat IP tujuan, dan mengembalikan 10 besar dari minggu terakhir.

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;