Création d'une table pour les AWS WAF journaux sans partitionnement - Amazon Athena

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 sur le blog AWS Big Data.

Pour créer le AWS WAF tableau
  1. 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 ou HIVECURSOR_ _ 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ées dans 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/'
  2. Exécutez l'instruction CREATE EXTERNAL TABLE dans l'éditeur de requête de la console Athena. Cette opération permet d'enregistrer la table waf_logs et de mettre les données qu'elle contient à la disposition des requêtes d'Athena.