Athena ne stocke pas les journaux elle-même. Elle interroge les fichiers journaux dans S3, tels que CloudTrail, les journaux de flux VPC, les journaux des équilibreurs de charge et les journaux WAF, via des tables que vous définissez. Les résultats de requêtes normales sont enregistrés sous forme de CSV dans votre compartiment de résultats. Pour obtenir du JSON à la place, encapsulez la requête dans UNLOAD … WITH (format = ‘JSON’) : Athena écrit un JSON délimité par une nouvelle ligne vers un préfixe S3, et vous le téléchargez.
De nombreuses équipes AWS conservent des mois de journaux dans S3 et les interrogent avec Athena plutôt que de tout transférer vers un SIEM. Prime Core dispose de plus de 24 000 règles de détection uniques, mappées sur 676 techniques MITRE ATT&CK. Voici comment en extraire une partie, la nettoyer et l’analyser gratuitement dans LogTotal.
Avant de commencer
Autorisations. Vous devez exécuter des requêtes Athena (athena:StartQueryExecution et connexes), lire les définitions de table dans Glue, lire le compartiment source et écrire dans un compartiment d’exportation. Ajoutez kms:Decrypt si les journaux sont chiffrés avec KMS.
Connaître la table et ses partitions. Une table CloudTrail est généralement partitionnée par région et date, soit avec une projection de partition soit avec des partitions que vous avez ajoutées. Athena facture en fonction des données scannées, alors filtrez sur les partitions à chaque fois. Une requête sans celles-ci peut scanner des années de journaux.
Un groupe de travail. Athena exécute des requêtes dans un groupe de travail avec un emplacement de résultats. UNLOAD écrit vers sa propre cible, mais le groupe de travail doit tout de même être configuré.
Exporter avec UNLOAD
UNLOAD (
SELECT *
FROM cloudtrail_logs
WHERE region = 'eu-west-1'
AND day = '2026/10/19'
AND useridentity.arn LIKE '%suspicious-user%'
)
TO 's3://my-athena-exports/ct-1019/'
WITH (format = 'JSON', compression = 'NONE')
Adaptez les colonnes de partition (région, jour) à la définition de votre table. Le préfixe cible doit être vide.
Depuis la ligne de commande :
QID=$(aws athena start-query-execution –work-group primary
–query-string « $(cat unload.sql) »
–query ‘QueryExecutionId’ –output text)
# attendre jusqu’à SUCCESS
until [ « $(aws athena get-query-execution –query-execution-id « $QID »
–query ‘QueryExecution.Status.State’ –output text) » = « SUCCEEDED » ]; do sleep 5; done
aws s3 cp s3://my-athena-exports/ct-1019/ ./ct-1019/ –recursive
zcat -f ./ct-1019/* > ct_1019.jsonl
zcat -f gère à la fois la sortie compressée et non compressée, au cas où la compression serait restée par défaut. Si la requête échoue, la boucle d’attente ne se termine jamais. Vérifiez également pour FAILED si vous scriptz cela régulièrement.
Pourquoi pas get-query-results? Cela fonctionne, mais cela renvoie des lignes sous forme de listes de chaînes, 1000 par page, que vous devez ensuite réassembler en objets. UNLOAD vous donne un JSON propre en une seule étape.
Téléchargez, nettoyez et examinez dans LogTotal
- Télécharger. Ouvrir logtotal.com et déposez le fichier .jsonl.
- Nettoyer.
- Examiner.
Quand ça ne va pas
| Symptôme | Cause probable | Fix |
|---|---|---|
| La requête scanne des téraoctets | Pas de filtre de partition | Filtrer sur les colonnes de partition |
| Erreur concernant l’emplacement de sortie | Le préfixe cible n’est pas vide | Utiliser un nouveau préfixe |
| Accès refusé | Permission S3, Glue ou KMS manquante | Vérifiez chacun ; KMS est le suspect habituel |
| Zero lignes | Partitions non chargées, ou mauvais format de partition | Vérifiez la projection des partitions ou lancez MSCK REPAIR TABLE |
| Les fichiers de sortie ne s’ouvrent pas en tant que texte | Compression GZIP | Utilisez zcat, ou définissez compression = ‘NONE’ |
FAQ
Est-ce la même chose que Amazon Security Lake ?
Security Lake utilise aussi Athena, mais avec ses propres tables OCSF et ses autorisations Lake Formation.
Puis-je exporter les fichiers CloudTrail bruts à la place ?
Oui. Si vous n’avez besoin que des jours entiers, la copie des fichiers depuis S3 est plus simple. Athena est utile lorsque vous devez filtrer.