Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crea una tabella per i AWS WAF log senza partizionamento
Questa sezione descrive come creare una tabella per i AWS WAF log senza partizionamento o proiezione delle partizioni.
Nota
Per motivi di prestazioni e costi, non è consigliabile utilizzare uno schema non partizionato per le query. Per ulteriori informazioni, consulta i 10 migliori consigli per l'ottimizzazione delle prestazioni per Amazon
Per creare la tabella AWS WAF
-
Copia e incolla la seguente DDL dichiarazione nella console Athena. Modifica i campi secondo necessità in base all'output del log. Modifica il parametro
LOCATION
per il bucket Amazon S3 in cui sono archiviati i registri.Questa query utilizza il metodo OpenX JSON SerDe.
Nota
SerDe Si aspetta che ogni JSON documento si trovi su una singola riga di testo senza caratteri di terminazione di riga che separano i campi del record. Se il JSON testo è in un bel formato di stampa, potresti ricevere un messaggio di errore come
HIVE_ CURSOR _ERROR: Row is not a valid JSON Object o HIVE _ CURSOR _ERROR:: Unexpected JsonParseException end-of-input: un
indicatore di chiusura previsto per OBJECT
quando tenti di interrogare la tabella dopo averla creata. Per ulteriori informazioni, consulta File di JSON datinella SerDe documentazione di OpenX su. GitHub CREATE EXTERNAL TABLE `waf_logs`( `timestamp` bigint, `formatversion` int, `webaclid` string, `terminatingruleid` string, `terminatingruletype` string, `action` string, `terminatingrulematchdetails` array < struct < conditiontype: string, sensitivitylevel: string, location: string, matcheddata: array < string > > >, `httpsourcename` string, `httpsourceid` string, `rulegrouplist` array < struct < rulegroupid: string, terminatingrule: struct < ruleid: string, action: string, rulematchdetails: array < struct < conditiontype: string, sensitivitylevel: string, location: string, matcheddata: array < string > > > >, nonterminatingmatchingrules: array < struct < ruleid: string, action: string, overriddenaction: string, rulematchdetails: array < struct < conditiontype: string, sensitivitylevel: string, location: string, matcheddata: array < string > > >, challengeresponse: struct < responsecode: string, solvetimestamp: string >, captcharesponse: struct < responsecode: string, solvetimestamp: string > > >, excludedrules: string > >, `ratebasedrulelist` array < struct < ratebasedruleid: string, limitkey: string, maxrateallowed: int > >, `nonterminatingmatchingrules` array < struct < ruleid: string, action: string, rulematchdetails: array < struct < conditiontype: string, sensitivitylevel: string, location: string, matcheddata: array < string > > >, challengeresponse: struct < responsecode: string, solvetimestamp: string >, captcharesponse: struct < responsecode: string, solvetimestamp: string > > >, `requestheadersinserted` array < struct < name: string, value: string > >, `responsecodesent` string, `httprequest` struct < clientip: string, country: string, headers: array < struct < name: string, value: string > >, uri: string, args: string, httpversion: string, httpmethod: string, requestid: string >, `labels` array < struct < name: string > >, `captcharesponse` struct < responsecode: string, solvetimestamp: string, failureReason: string >, `challengeresponse` struct < responsecode: string, solvetimestamp: string, failureReason: string >, `ja3Fingerprint` string, `oversizefields` string, `requestbodysize` int, `requestbodysizeinspectedbywaf` int ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/
prefix
/' -
Esegui l'istruzione
CREATE EXTERNAL TABLE
nell'editor di query della console Athena. Questo registra la tabellawaf_logs
e rende i dati in essa contenuti disponibili per le query da Athena.