Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen Sie eine Tabelle für AWS WAF Protokolle ohne Partitionierung
In diesem Abschnitt wird beschrieben, wie Sie eine Tabelle für AWS WAF Protokolle ohne Partitionierung oder Partitionsprojektion erstellen.
Anmerkung
Aus Leistungs- und Kostengründen empfehlen wir nicht, ein nicht partitioniertes Schema für Abfragen zu verwenden. Weitere Informationen finden Sie im AWS Big Data-Blog unter Die 10 besten Tipps zur Leistungsoptimierung für Amazon Athena
Um die Tabelle zu erstellen AWS WAF
-
Kopieren Sie die folgende DDL Anweisung und fügen Sie sie in die Athena-Konsole ein. Ändern Sie die Felder nach Bedarf, damit diese mit Ihrer Protokollausgabe übereinstimmen. Ändern Sie den
LOCATION
des Amazon-S3-Bucket, in dem die Protokolle gespeichert werden.Diese Abfrage verwendet die OpenX JSON SerDe.
Anmerkung
Das SerDe erwartet, dass sich jedes JSON Dokument in einer einzigen Textzeile befindet, ohne dass die Felder im Datensatz durch Zeilenabschlusszeichen voneinander getrennt werden. Wenn der JSON Text ein hübsches Druckformat hat, erhalten Sie möglicherweise eine Fehlermeldung wie
HIVE_ CURSOR _ERROR: Zeile ist kein gültiges JSON Objekt
oderHIVE_ CURSOR _ERROR:: Unerwartet JsonParseException end-of-input: erwartetes Schließzeichen für OBJECT
den Versuch, die Tabelle abzufragen, nachdem Sie sie erstellt haben. Weitere Informationen finden Sie unter JSONDatendateienin der SerDe OpenX-Dokumentation von. 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
/' -
Führen Sie die
CREATE EXTERNAL TABLE
-Anweisung im Abfrage-Editor der Athena-Konsole aus. Dadurch wird diewaf_logs
-Tabelle registriert und die darin enthaltenen Daten für Abfragen von Athena verfügbar gemacht.