Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'une table pour les AWS WAF journaux sans partitionnement
Cette section explique comment créer une table pour les AWS WAF journaux sans partitionnement ni projection de partition.
Note
Pour des raisons de performance et de coût, nous vous déconseillons d'utiliser un schéma non partitionné pour les requêtes. Pour plus d'informations, consultez les 10 meilleurs conseils d'optimisation des performances pour Amazon Athena
Pour créer le AWS WAF tableau
-
Copiez et collez l'DDLinstruction suivante dans la console Athena. Modifiez les champs si nécessaire pour qu'ils correspondent à la sortie de votre journal. Modifiez l'emplacement
LOCATION
pour le compartiment Amazon S3 correspondant à celui qui stocke vos journaux.Cette requête utilise le OpenX JSON SerDe.
Note
Le SerDe s'attend à ce que chaque JSON document se trouve sur une seule ligne de texte, aucun caractère de fin de ligne ne séparant les champs de l'enregistrement. Si le JSON texte est dans un joli format d'impression, vous pouvez recevoir un message d'erreur tel que
HIVECURSOR_ _ ERROR : La ligne n'est pas un JSON objet valide
ouHIVECURSOR_ _ ERROR JsonParseException end-of-input : Inattendu : marqueur de fermeture attendu OBJECT
lorsque vous essayez d'interroger la table après l'avoir créée. Pour plus d'informations, consultez la section Fichiers de JSON donnéesdans la SerDe documentation OpenX sur. 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
/' -
Exécutez l'instruction
CREATE EXTERNAL TABLE
dans l'éditeur de requête de la console Athena. Cette opération permet d'enregistrer la tablewaf_logs
et de mettre les données qu'elle contient à la disposition des requêtes d'Athena.