Buat dan kueri tabel untuk log VPC aliran Amazon menggunakan proyeksi partisi - Amazon Athena

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

Buat dan kueri tabel untuk log VPC aliran Amazon menggunakan proyeksi partisi

Gunakan CREATE TABLE pernyataan seperti berikut ini untuk membuat tabel, partisi tabel, dan mengisi partisi secara otomatis dengan menggunakan proyeksi partisi. 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 TABLEPernyataan berikut adalah untuk log VPC aliran 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_table_vpclogs

Contoh query berikut test_table_vpclogs dibuat oleh pernyataan sebelumnyaCREATE 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 HTTP paket teratas untuk jangka waktu tertentu, jalankan kueri seperti berikut ini. Kueri menghitung jumlah paket yang diterima pada HTTPS port 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 TCP koneksi 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 dengan10.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'