Creazione della tabella per i log di connessione ALB in Athena utilizzando la proiezione delle partizioni - Amazon Athena

Creazione della tabella per i log di connessione ALB in Athena utilizzando la proiezione delle partizioni

Poiché i log di connessione ALB dispongono di una struttura nota il cui schema di partizione può essere specificato in anticipo, è possibile ridurre il runtime delle query e automatizzare la gestione delle partizioni utilizzando la funzionalità di proiezione delle partizioni di Athena. La proiezione delle partizioni aggiunge automaticamente nuove partizioni man mano che vengono aggiunti nuovi dati. Ciò elimina la necessità di aggiungere manualmente le partizioni utilizzando ALTER TABLE ADD PARTITION.

L'esempio di istruzione seguente CREATE TABLE utilizza automaticamente la proiezione delle partizioni nei log di connessione ALB da una data specificata fino alla presente per una singola regione AWS. L'istruzione si basa sull'esempio della sezione precedente, ma aggiunge le clausole PARTITIONED BY e TBLPROPERTIES per abilitare la proiezione delle partizioni. Nelle clausole LOCATION e storage.location.template, sostituire i segnaposto con valori che identificano la posizione del bucket Amazon S3 dei propri log di connessione ALB. Per ulteriori informazioni sulla posizione dei file di log delle connessioni, vedere File di log delle connessioni nella Guida dell'utente per Application Load Balancer. Su projection.day.range, sostituire 2023/01/01 con la data di inizio che si desidera usare. Dopo aver eseguito la query con esito positivo, è possibile eseguire query sulla tabella. Non è necessario eseguire ALTER TABLE ADD PARTITION per caricare le partizioni. Per informazioni su ogni campo del file di vedere, vedere Immissioni log di connessione.

CREATE EXTERNAL TABLE IF NOT EXISTS alb_connection_logs ( time string, client_ip string, client_port int, listener_port int, tls_protocol string, tls_cipher string, tls_handshake_latency double, leaf_client_cert_subject string, leaf_client_cert_validity string, leaf_client_cert_serial_number string, tls_verify_status string, conn_trace_id string ) PARTITIONED BY ( day STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*) ([0-9]*) ([0-9]*) ([A-Za-z0-9.-]*) ([^ ]*) ([-.0-9]*) \"([^\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?' ) LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/' TBLPROPERTIES ( "projection.enabled" = "true", "projection.day.type" = "date", "projection.day.range" = "2023/01/01,NOW", "projection.day.format" = "yyyy/MM/dd", "projection.day.interval" = "1", "projection.day.interval.unit" = "DAYS", "storage.location.template" = "s3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/${day}" )

Per maggiori informazioni sulla proiezione delle partizioni, consulta Proiezione delle partizioni con Amazon Athena.